3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
A proposito, visto che è una cosa che mi è venuta proprio in mente in questi giorni e non avevo capito se l'hai implementata...

Data una classe server side, per esempio:

public class Persona
{
private string _nome;
public string Nome
{
get { return _nome; }
set { _nome=value; }
}
public Persona()
{}
public Persona(string nome)
{
_nome=nome;
}
}

Com'è possibile con la tua classe istanziarla "prima" di passarla ad un WS in modo che la accetti come parametro?

Qualcosa di questo tipo:

funtion funzione()
{
r=new Persona();
r.Nome="AltroNome";
var pl = new SOAPClientParameters();
pl.add("parametro", r);
SOAPClient.invoke(url, "RiprendiNome", pl, true, funzione_callBack); }

[WebMethod]
public void RiprendiNome(Persona parametro)
{
parametro.Nome=...
}

Oppure, ricevuta la classe da un ws, è possibile modificarlo e rimandarlo ad un altro ws?

Ciao
andrewz ha scritto:
Data una classe server side [...] Com'è possibile con la tua classe istanziarla "prima" di passarla ad un WS in modo che la accetti come parametro?


Sì, il passaggio di oggetti complessi al Web Service è stato implementato nella versione 2.0 del SOAP Client.

Guarda nella "DEMO 12 - Inviare parametri al Web Service (avanzato)" l'esempio numero 4.
Ho inserito 3 modi per fare quello che chiedi (simili, sfruttano semplicemente caratteristiche della sintassi JavaScript per la creazione di oggetti):

1) esempio 4a: creandoti la classe anche lato client (purtroppo è un'operazione che devi fare a mano...) e istanziandola con "new..."

2) esempio 4b: istanziando un "new Object()" ed impostandogli poi le proprietà (ovviamente lato client devi conoscere a priori l'interfaccia della classe lato server per impostarne le properties)

3) esempio 4c: utilizzando come istanza dell'oggetto un array associativo (dictionary) che in javascript è utilizzabile come Object


Oppure, ricevuta la classe da un ws, è possibile modificarlo e rimandarlo ad un altro ws?


Assolutamente sì, visto che quando viene restituito dal webservice, facendo riferimento al WSDL, viene ricreato un oggetto lato client che rimappa quello lato server. In pratica ritorni al caso di prima, in particolare - per come ho implementato la ricostruzione dell'entity nel soap client - nel caso 4b, usando cioè "new Object()".

Puoi provarlo semplicemente mettendo insieme la demo 7 (il web service restituisce uno User data una stringa) e la demo 12 (dove lo User viene passato al web service)

Se hai problemi... ci vediamo su CodePlex!

Matteo Casati
GURU4.net
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
m.casati <m.casati> ha scritto:
Sì, il passaggio di oggetti complessi al Web Service è stato implementato nella versione 2.0 del SOAP Client.

Mii! Avevo testato il tutto con una versione vecchia! E non avevo visto quell'esempio! Mea culpa! Tutto ok!

Grazie Matteo, terrò d'occhio CodePlex per nuove feature!
Ciao!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.