DarioSantarelli.Blog("UgiDotNet");

<sharing mode=”On” users=”*” />
posts - 176, comments - 105, trackbacks - 3

My Links

News


This is my personal blog. These postings are provided "AS IS" with no warranties, and confer no rights.




Tag Cloud

Archives

Post Categories

My English Blog

Silverlight 1.1: comunicazione con Web Service

Silverlight è ormai diventata l'implementazione "cross-platform" e "cross-browser" ufficialmente supportata del framework .NET. In particolare, una delle più importanti novità della release 1.1 Alpha è il supporto alla comunicazione XML su HTTP, che di fatto apre la strada allo sviluppo di scenari AJAX-like.
Infatti, un' applicazione Silverlight-enabled può ora comunicare con un Web Service (in maniera sincrona o asincrona) tramite le due classi System.Net.BrowserHttpWebRequest (novità) e HttpWebResponse. Oltre al semplice interscambio di messaggi POX via Http, è possibile anche (e fortunatamente ;)) generare classi proxy, sebbene esse siano esclusivamente adibite alla comunicazione con ASP.NET AJAX Web Services basati su JSON
Nel seguente codice, è mostrato un banale esempio di richiesta/ricezione di messaggi POX via HTTP: 

// Invocazione sincrona System.Uri myUri = "http://.../TestWS.asmx/Test?input=hello"; BrowserHttpWebRequest myHttpRequest = new BrowserHttpWebRequest(myUri); HttpWebResponse myHttpResponse = (HttpWebResponse)myHttpRequest.GetResponse(); StreamReader responseStream = new StreamReader(myHttpResponse.GetResponseStream());


Per quanto concerne invece l'uso di classi proxy, la generazione del codice può avvenire manualmente tramite l'utility a linea di comando slwsdl.exe o automaticamente tramite i Microsoft Silverlight Tools for Visual Studio 2008 Beta 2, i quali permettono di autegenerare il codice proxy utilizzando il solito "Add Web Reference" all' interno del nostro progetto Silverlight su Visual Studio 2008 beta 2. Nello specifico, l'invocazione asincrona di un Web Service via proxy richiede l'inclusione dell'oggetto proxy stesso come parametro AsyncState della chiamata, da cui viene reperito il risultato dell'invocazione all'interno del metodo che gestisce il CallBack:

// Invocazione asincrona TestWebService myService = new TestWebService(); IAsyncResult result = myService.BeginTest("inputData", new AsyncCallback(OnCompleted), myService); ... public void OnCompleted(IAsyncResult result) { string output = ((TestWebService)result.AsyncState).EndTest(result); ... }

 
Una delle limitazioni della corrente release (pur sempre in Alpha ;)) riguarda l' impossibilità di effettuare chiamate "cross-domain": un' applicazione Silverlight infatti necessita di essere ospitata sullo stesso server in cui si trova il Web Service da invocare.

(Dalla documentazione)... The BrowserHttpWebRequest class does not currently support cross-domain calls. The current release of BrowserHttpWebRequest requires the Silverlight-based application to be hosted on the same server as the target Web Service.


 Technorati tags: *Silverlight, *.NET

Print | posted on domenica 26 agosto 2007 22:21 | Filed Under [ Silverlight ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET