#119 - Creare servizi WCF per applicazioni Silverlight
di Cristian Civera, in Windows Communication Foundation, 8 maggio 2009
Windows Communication Foundation è una potente tecnologia che permette di realizzare servizi qualunque sia il trasporto di comunicazione (HTTP, TCP, MSMQ, ecc) o il formato del messaggio che transita, aderendo e implementando molte specifiche dei consorzi W3C e OASIS.
WCF può essere quindi usato anche per realizzare servizi che debbano essere consumati da un?applicazione Silverlight, ma occorre prestare attenzione ad alcuni aspetti, per i limiti che il client Silverlight ha. Innanzitutto il binding supportato è, per la versione Silverlight 2.0, il basicHttpBinding poiché non è disponibile nessuna forma di sicurezza del messaggio o di autenticazione del servizio, se non sfruttando il protocollo SSL ed esponendo quindi il servizio su HTTPS invece che HTTP.
Qualora poi si voglia interagire con ASP.NET occorre abilitare la compatibilità così da rendere il servizio WCF partecipe alla normale pipeline di esecuzione di una richiesta.
<system.serviceModel> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> </system.serviceModel>
Va poi indicato su ogni singolo servizio se la compatibilità è supportata o richiesta:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] public class MyService : IMyService { public MyOperationResponse MyOperation(MyOperationRequest request){ } }
Questo permette di sfruttare il sistema di autenticazione, autorizzazione e membership API fornito da ASP.NET per proteggere il servizio e conoscere chi sta effettuando la chiamata. Poiché il client Silverlight sfrutta il medesimo componente delle richieste HTTP del browser stesso, se l'utente è autenticato nelle pagine aspx, lo è anche per una richiesta ad un servizio.
In Visual Studio 2008 SP1 è presente inoltre una nuova voce "Silverlight-enabled WCF service" che crea automaticamente un servizio e le relative voci nel web.config per configurarlo con basicHttpBinding e compatibilità ASP.NET attivata. Ecco un esempio:
<system.serviceModel> <behaviors> <serviceBehaviors> <behavior name="ServiceBehavior"> <serviceMetadata httpGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="false" /> </behavior> </serviceBehaviors> </behaviors> <serviceHostingEnvironment aspNetCompatibilityEnabled="true" /> <services> <service behaviorConfiguration="ServiceBehavior" name="MyService"> <endpoint address="" binding="basicHttpBinding" contract="IMyService" /> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services> </system.serviceModel>
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
-
Interoperabilità con WCF: invocare servizi da PHP e Flash
-
#141 - Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
-
#73 - Data binding con collezioni statiche in Silverlight 3.0
-
Real Code Day 4: Rich Internet Applications applicazioni ad alto impatto grafico con Silverlight 4.0
-
#173 - Usare i WCF Data Services con liste e entità personalizzate
-
Inside ModelVirtualCasting #8: Applicazioni Silverlight sul client (OOB)
-
#147 - Gestire tutte le eccezioni in WPF
-
#197 - Attivazione dei servizi senza il file svc con WCF 4.0
-
Rilasciata la versione beta dei Windows Phone 7 Developer Tools
-
La dimensione massima dell'isolated storage in Silverlight 3.0
-
#149 - Personalizzare le istanze di un servizio WCF
-
.NET Framework 4.0 e VS 2010 in Release Candidate

Commenti
mi piace
non mi piace
Facebook
Twitter










