L'interfaccia dei WS è l'insieme dei sui metodi esposti come Web Methods.

Una classe è un tipo di dato di riferimento. Se ti crei una classe nel WS, che è il tipo ritornato da un metodo Web, e in VS.NET riagganci il WS al tuo progetto, vedrai che il tipo verrà replicato anche nell'ambito del client.

Ciao, Ricky.

Ing. Riccardo Golia
Microsoft MVP ASP.NET/IIS
ASPItalia.com Content Manager
http://blogs.aspitalia.com/rickyvr
http://ricky.aspitalia.com
http://www.riccardogolia.it
Non ci avevo pensato... credevo che non si potesse fare...
Però ho un altro problema...
La classe che viene replicata nel client non ha all'interno le funzioni originarie...
Ho letto alcuni post su microsoft.public.dotnet.framework.aspnet.webservices dove si dice che occorre modificare manualmente il file Reference.vb, ma così facendo (ammesso che riesca a capire cosa modificare), ogni volta che rigenero il riferimento perdo le modifiche fatte a mano, ci sono altre soluzioni?

Grazie per il preziosissimo aouto che mi hai dato!

Grazie, ciao,
VueMme
Quello che c'è nella descrizione WSDL viene ricreato, il resto te lo devi fare...

Se ci pensi la cosa ha un senso. WSDL deve dare una indicazione sui tipi per agevolare il marshaling...
Pensa a questa cosa: se la tua applicazione client fosse una applicazione Java...?

Ciao, Ricky.
Modificato da rickyvr il 27 ottobre 2004 12.07 -

Ing. Riccardo Golia
Microsoft MVP ASP.NET/IIS
ASPItalia.com Content Manager
http://blogs.aspitalia.com/rickyvr
http://ricky.aspitalia.com
http://www.riccardogolia.it
Direi che questo sistema mi porti a una soluzione un po' complicata per le mie capacità...
Ho fatto alcune prove su una strada differente:

ho creato un web service che ha come riferimenti la dll della mia applicazione contenente le funzioni che mi occorre rendere richiamabili da programmi esterni.
In questo modo ha già tutto fatto (devo solo ricopiare alcune chiavi del web.config dell'applicazione dentro il web.config del web service).

Sto facendo qualcosa di formalmente sbagliato?
Dalle brevi prove che ho fatto fino ad ora sembra funzionare...

Grazie, ciao,
VueMme
Formalmente in una applicazione distribuita non devi replicare le parti di codice e le librerie sui diversi tier.

Non conoscendo come hai strutturato le cose, a rigor di logica, non hai suddiviso bene le varie parti dell'applicazione.

Considera che ogni volta che cambi versione della dll da una parte, la devi replicare anche dall'altra. Non è ottimale, non ti pare?

Ciao, Ricky.

Ing. Riccardo Golia
Microsoft MVP ASP.NET/IIS
ASPItalia.com Content Manager
http://blogs.aspitalia.com/rickyvr
http://ricky.aspitalia.com
http://www.riccardogolia.it
Mi pareva troppo facile...
In effetti la mia applicazione è nata per avere vita a sè stante... All'inizio non avevo previsto la possibilità di "interfacciarla" con altri programmi, se non tramite i suoi webform (purtroppo conosco la programmazione solo da appassionato, se non per un semplice esame universitario fatto ormai diversi anni fa, in cui studiai solo le basi del C++).
Ora mi trovo a dovere renderla più flessibile, almeno dal punto di vista delle possibilità di upload, ma ciò mi costringerà a riscrivere parti di codice...

Insisto sul remoting, secondo te, se sfruttassi questa strada, potrei rendere remotizzabile (marshallby... mi pare si dica) un'intera classe che ho già creato nell'applicazione?
Rispetto ai web service potrei forse risparmiare tutte le noie sul dovere ricreare i processi di autenticazione, sfruttando ciò che ho già fatto...

Grazie ancora!

Grazie, ciao,
VueMme
Se utilizzi i servizi remoti, puoi sfruttare tutto quello che ne consegue ed, in particolare, la tipizzazione. Mi pare di capire che la tua esigenza sia soprattutto quella di condividere dei tipi in un ambiente interamente .NET e distribuire le parti dell'applicazione in un contesto locale. Per cui remoting in questo senso ha i suoi vantaggi.

Un oggetto del dominio applicativo client, per essere passato, deve essere contrassegnato come serializzabile oppure il tipo deve comunque implementare l'interfaccia ISerializable. Alternativa è fare derivare il tipo da MarshalByRefObject, il che permette di attivare un proxy per l'oggetto in ambito client.

Da un punto di vista dell'attivazione, sai che ne esistono due tipologie: SAO (server activated object) e CAO (client activated object). Il caso simile al funzionamento di un Web Service nell'ambito del remoting è l'attivazione SAO Single-Call.

Ciao, Ricky.

Ing. Riccardo Golia
Microsoft MVP ASP.NET/IIS
ASPItalia.com Content Manager
http://blogs.aspitalia.com/rickyvr
http://ricky.aspitalia.com
http://www.riccardogolia.it
Ti ringrazio ancora di tutte le informazioni, farò qualche prova anche con il remoting, ma prima devo studiarne un po' le basi perchè sono allo zero assoluto!!!

Grazie, ciao,
VueMme

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.