di Alessio Leoncini, in Silverlight 2.0, 30 settembre 2008
WCF Services duplex
Le modalità di accesso ai dati esposte nei paragrafi precedenti si sviluppano sul modello Request-Response del client verso il server contestualmente ad una specifica connessione; in Silverlight sono disponibili anche speciali servizi WCF in modalità Duplex nei quali il server può inviare dati anche al di fuori di un contesto di chiamata di un client.
Questa tipologia di servizi risulta molto interessante nei casi in cui si voglia realizzare un sistema di notifica automatico, o ad esempio una chat multiutente in cui le informazioni corrono dai client ai server reciprocamente in modo autonomo senza attività per l'utente o per l'applicazione.
In un servizio Duplex sia il client che il server hanno entrambi un service contract per l'invio di messaggi, la particolarità del contratto esposto dal server è la definizione di un CallbackContract che descrive l'interfaccia che sarà utilizzata per comunicare con il client:
[ServiceContract(Namespace = "http://silverlightitalia.com/accessoaidatisilverlight2/services/", CallbackContract = typeof(IDuplexClient))] public interface IDuplexService { [OperationContract(IsOneWay = true)] void Order(Message receivedMessage); } [ServiceContract] public interface IDuplexClient { [OperationContract(IsOneWay = true)] void Receive(Message returnMessage); }
Per implementare il codice sia del servizio che del client è necessario utilizzare le rispettive librerie System.ServiceModel.PollingDuplex.dll disponibili nell'SDK di Silverlight 2.0, tuttavia è importante precisare che queste non sono state incluse nella licensa GoLive di Silverlight 2 Beta 2 e pertanto il loro uso è da restringersi ai fini didattici per acquisire conoscenza di questa tipologia di servizi molto interessanti.
La realizzazione di un servizio WCF Duplex non è complessa ma richiede una conoscenza dell'architettura di WCF la cui spiegazione esula dagli obiettivi di questo articolo, tuttavia nel codice allegato è presente un esempio funzionante estratto da MSDN; è possibile documentarsi sulla realizzazione dei servizi Duplex da questa pagina e su come procedere nell'utilizzo in Silverlight a questa pagina.
Socket
In Silverlight è stato introdotta anche una modalità di scambio dati in protocollo TCP attraverso l'interfaccia di comunicazione Socket.
Un Socket può essere considerato come un canale sempre aperto attraverso il quale sia il client che il server si scambiano dati nell'effettivo momento in cui avviene un evento da una e dall'altra parte, la natura di applicazione client di Silverlight consente impieghi molto interessanti di questa modalità di comunicazione in tutti quegli scenari in cui si debba notificare una variazione di informazioni in tempo reale.
Il modello di comunicazione Socket non necessita di una continua interrogazione del server da parte del client (il cosiddetto polling) ma sono il client ed il server stessi che sono costantemente e reciprocamente in ascolto e che si inviano i dati all'occorrenza. Per consentire questa modalità sono disponibili una serie di classi del namespace System.Net.Sockets; il modello di programmazione non si discosta molto rispetto a quanto visto nei precedenti paragrafi eccetto che in Socket la fase di invio e ricezione dati avviene necessariamente dopo l'apertura esplicita di una comunicazione, anch'essa gestibile attraverso un modello asincrono.
L'interfaccia Socket è molto interessante ma per propria natura presenta dei limiti di applicazione nei tradizionali hosting in quanto la comunicazione deve avvenire in una specifica porta nel range da 4502 a 4532, l'apertura di questo canale non è sempre cosa possibile qualora si condivida il webserver con applicazioni di terzi, pertanto questa modalità può essere utilizzata solo negli scenari di server e rete proprietari.
Per maggiori informazioni si può fare riferimento alla documentazione online.
Conclusioni
L'accesso ai dati non è da considerare esclusiva necessità di fornire grandi quantità di contenuti ma anche per piccole informazioni di personalizzazione e costruzione di qualunque elemento grafico-funzionale, sia di una applicazione che di un sito web.
La gestione remota di questo tipo di dati evita che le informazioni siano cablate nel codice consentendo una migliore manutenzione in tutte le fasi del ciclo di vita di un progetto, creando inoltre le fondamenta per una gestione autonoma ed una personalizzazione dei contenuti da parte dell'utente.
In questo articolo sono stati introdotti i principali strumenti di accesso remoto ai dati ed alla loro gestione, le possibilità e le soluzioni sono molteplici ed ognuna ha caratteristiche peculiari per ciascun scenario. L'obiettivo di questo articolo è quello di scalfire la superficie di questo modello di lavoro in modo da fondare una conoscenza di base e porre in grado di valutare ed approfondire la migliore soluzione per gli specifici casi che si incontrano quotidianamente.
Attenzione: Questo articolo contiene un allegato
Contenuti dell'articolo
- Realizzare un sito in Silverlight 2.0: frontend e animazioni
- Deepzoom in Silverlight 2.0
- ADO.NET Data Service al servizio di Silverlight 2.0
- I controlli di Silverlight 2.0
- Hello Silverlight 2.0, again!
- Principi di programmazione in Silverlight 1.0
- 3, 2, 1: azione! Le animazioni in Silverlight
- XAML per Silverlight - Seconda parte
- XAML per Silverlight - Prima parte
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.

















Difficoltà

Stampa
Download



Articolo interessantissimo, veramente utile ... è servito a togliermi molti dubbi!
Continua »»» | Rispondi »»»