#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>
Approfondimenti
-
#56 - Blue Style ProgressBar per Silverlight 2.0
-
Tutti pazzi per il .NET Micro Framework
-
#161 - Clonare e manipolare Message in WCF
-
Interoperabilità con WCF: invocare servizi da PHP e Flash
-
#73 - Data binding con collezioni statiche in Silverlight 3.0
-
Disinstallare la beta 2 prima di installare la RC di VS 2010
-
#153 - Invocare servizi WCF da Javascript
-
Disponibile Microsoft Expression Studio 3
-
Nuovo tipo di contenuti su SilvelightItalia
-
#115 - Creare file ZIP con System.IO.Packaging
-
#67 - RadioButton style animato per Silverlight 3.0
-
Mostrare la WebCam in Silverlight

















Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.