<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Giuseppe Guerrasio : Data Access</title><link>http://blogs.msdn.com/giuseppeguerrasio/archive/tags/Data+Access/default.aspx</link><description>Tags: Data Access</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Accesso ai dati con Siliverlight 2 Beta 1</title><link>http://blogs.msdn.com/giuseppeguerrasio/archive/2008/03/18/accesso-ai-dati-con-siliverlight-2-beta-1.aspx</link><pubDate>Tue, 18 Mar 2008 11:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8272689</guid><dc:creator>Giuseppe Guerrasio</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/giuseppeguerrasio/comments/8272689.aspx</comments><wfw:commentRss>http://blogs.msdn.com/giuseppeguerrasio/commentrss.aspx?PostID=8272689</wfw:commentRss><description>&lt;P&gt;In questo fine settimana ho passato un po di tempo libero ad approfondire i bit disponibili della &lt;A href="http://silverlight.net/GetStarted/#betajump" target=_blank mce_href="http://silverlight.net/GetStarted/#betajump"&gt;Beta 1 di Silverligth 2&lt;/A&gt; . Tra le tantissime novità offerte dal supporto del codice managed,&amp;nbsp; la nuova versione mette a disposizione un'ampia parte delle librerie .NET tra cui nuovi meccanismi per accedere a dati esposti da siti Internet\Intranet via HTTP.&lt;/P&gt;
&lt;P&gt;Sia Internet che nelle intranet è sempre più frequente l'utilizzo dell'HTTP per l'esposizione di informazioni attraverso diverse forme (Web Service Soap,RSS, REST, POX, JSON, etc). &lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_6.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=375 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_2.png" width=450 border=0 mce_src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_2.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Lo scenario tipico di sviluppo Web che prevedeva lo strato di accesso ai dati realizzato direttamente dalla parte server dell'applicazione Web ,&amp;nbsp; sta rapidamente evolvendo. Anche le&amp;nbsp; applicazioni&amp;nbsp; basate sul browser sono sempre più caratterizzate da una larga presenza di codice client, che sfrutta tecniche AJAX&amp;nbsp;&amp;nbsp; per consumare dati offerti da servizi esposti da server. In particolare diventano sempre più frequenti gli scenari in cui si utilizzano fonti dati esposte da siti differenti, che vengono combinate in un unica interfaccia direttamente sul client. &lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=449 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb.png" width=531 border=0 mce_src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Questo tipo di scenario non riguarda esclusivamente le applicazioni sviluppate per Internet ma diventa sempre più presente anche in scenari Intranet. Con sempre maggior frequenza le aziende cominciano a &lt;A href="http://blogs.msdn.com/giuseppeguerrasio/archive/2007/12/11/la-fine-della-tirannia-dell-or-software-services-s-s.aspx" target=_blank mce_href="http://blogs.msdn.com/giuseppeguerrasio/archive/2007/12/11/la-fine-della-tirannia-dell-or-software-services-s-s.aspx"&gt;combinare il software interno con servizi esterni&lt;/A&gt;. Le applicazioni e le &lt;A href="http://blogs.msdn.com/giuseppeguerrasio/archive/2007/12/12/saas-soa-e-s-s-impatto-per-le-aziende.aspx" target=_blank mce_href="http://blogs.msdn.com/giuseppeguerrasio/archive/2007/12/12/saas-soa-e-s-s-impatto-per-le-aziende.aspx"&gt;informazioni aziendali vengono utilizzate in combinazione&amp;nbsp; con servizi presenti su Internet e con le applicazioni delle aziende clienti o partner&lt;/A&gt;, creando scenari un cui la gestione dell'accesso ai dati da parte del codice che gira nel browser client, diventa sempre più sofisticata e complessa. Ad esempio, un azienda che ha bisogno di un software per la gestione di spedizioni presso i propri punti vendita potrebbe sviluppare un applicazione client che aggrega le informazioni sui punti vendita estratte da servizi presenti nella intranet , posizionando i punti vendita sulle mappe fornite da un provider di mappe su Internet ed i servizi del corriere utilizzato per effettuare le spedizioni, integrando con i dati aziendali&amp;nbsp; i servizi per gli ordini, lo stato della spedizione , etc.&lt;/P&gt;
&lt;P&gt;Evidentemente in scenari più complessi di integrazione non tutta l'aggregazione dei servizi può essere implementata nel client , perchè in moltissimi casi il coordinamento dei servizi stessi comporta la gestione di processi asincroni che vanno gestiti con specific Business Process Manager , ma sono comunque molti gli scenari in cui ha senso aggregare nel client. Nel nostro scenario un esempio ll'invio di un ordine di spedizione verrà sicuramente gestito attraverso il BPM dell'azienda che provvederà poi ad inviare l'ordine al servizio del corriere mentre lo stato della singola spedizione&amp;nbsp; potrebbe direttamente essere richiesto dal client al servizio del corriere e combinato direttamente sulla mappa e con gli altri dati provenienti dall'Intranet.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_10.png" mce_href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_10.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=509 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_4.png" width=783 border=0 mce_src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_4.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Altra interessante modalità di integrazione dei servizi con i processi dell'azienda è rappresentata dalla possibilità di sfruttare office ed il pattern OBA per collegare un scenario di questo tipo , direttamente con gli strumenti di produttività che le persono utilizzano per portare avanti i processi di tutti i giorni, ed una blla implementazione reale di uno scenario simile è rappresentata daei servizi che sta implementando FedEx &lt;A href="http://blogs.msdn.com/giuseppeguerrasio/archive/2008/02/12/servizi-online-e-office-un-esempio-dal-mondo-reale.aspx" target=_blank mce_href="http://blogs.msdn.com/giuseppeguerrasio/archive/2008/02/12/servizi-online-e-office-un-esempio-dal-mondo-reale.aspx"&gt;mostrati alla office developers conference&lt;/A&gt;&amp;nbsp; .&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_12.png" mce_href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_12.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=517 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_5.png" width=812 border=0 mce_src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_5.png"&gt;&lt;/A&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Con la prima versione di Silverlight gestire l'accesso a fonti dati è possibile direttamente dallo XAML per immagini, video , suoni mentre per l'accesso a sorgenti dati&amp;nbsp; occorre utilizzare il JS e l'oggetto XmlHttpRequest . Attraverso queste modalità e gia possibile sviluppare delle interessanti applicazioni di mashup (esempio interessante sviluppato in Italia sul blog msdn) , ma ovviamente sviluppare completamente utilizzando JS XMLHttprequest con sorgenti dati JSON o XML non è semplice e nemmeno particolarmente performante nella parte di parsing e caricamento dei dati sull'interfaccia utente. &lt;/P&gt;
&lt;P&gt;In alcuni casi, per eliminare il costo del parsing sul client, è anche possibile fare in modo di costruire dei servizi in grado di rispondere direttamente con delle porzioni di XAML che vengono valorizzate server side, con i dati estratti da sorgenti specifiche e caricati a partire da template disponibili sul server. Lato client si può utilizzare XMLHttpRequest o il downloader di Silverlight per connettrsi all'url sul server che restituisce lo XAML contenente i dati e caricarlo nell'interfaccia utilizzando CreateFromXaml . &lt;A href="http://silverlight.net/learn/learnvideo.aspx?video=113" target=_blank mce_href="http://silverlight.net/learn/learnvideo.aspx?video=113"&gt;Questo Howto&lt;/A&gt; mostra un semplice esempio di utilizzo di questa tecnica che sfutta lo XAML mentre &lt;A href="http://silverlight.net/learn/learnvideo.aspx?video=242" target=_blank mce_href="http://silverlight.net/learn/learnvideo.aspx?video=242"&gt;questo&lt;/A&gt; mostra l'utilizzo di web service da Silverligh 1.0&amp;nbsp; .&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_14.png" mce_href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_14.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=455 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_6.png" width=704 border=0 mce_src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_6.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;L'utilizzo di AJAX e quindi dello JavaScript e di XMLHttpRequest per accedere a fonti dati remote comporta una notevole difficoltà di debug ed è sottoposto alle restrizioni imposte dal browser per il cross-scripting . Infatti attraverso questa tecnica possono essere interrogati solo URL residenti sullo stesso dominio da cui è stata caricata la pagina in esecuzione sul Browser. E' possibile attraverso specifiche tecniche di impiego di script dinamici o proxy lato server, Iframe etc, superare una parte di queste limitazioni , ma il risultato incrementa ancora di più la complessità di sviluppo e debug.&lt;/P&gt;
&lt;P&gt;Con l'arrivo di Silverlight 2 (SL2) ed il supporto di .NET nello sviluppo con Silverlight abbiamo a disposizione un' ampia serie di classi che andranno ulteriormente ad arricchisi nella versione finale del nuovo plug-in. Attraverso SL2 abbiamo a disposizione le classi per consumare sia Web Service SOAP che per accedere direttamente a URL in GET e POST che per l'utilizzo di RSS , aggiunte anche le classi per gestire socket in uscita. Attraverso il nuovo modello di sviluppo è possibile anche effettuate cross-scripting attraverso quei siti che impostano sulla root del loro dominio il file di policy per questa funzionalità. Viene supportato anche il file di policy di Flash , per cui su tutti i siti in cui è già presente questo file è possibile fare crossscripting con Silverlight. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_19.png" mce_href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_19.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=507 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_8.png" width=687 border=0 mce_src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_8.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Oltre al supporto per il cross-scripting, il nuovo modello di controlli di SL2 supporta le funzionalità di databinding con le stesse modalità che sono utilizzate nel .NET Framework e Windows Presentation foundation , rendendo di fatto estremamente semplice anche il caricamento dei dati estratti dai servizi&amp;nbsp; sui controlli dell'interfaccia utente. Disponibile anche il supporto per LINQ to XML che ci permette di gestire con semplicità la manipolazione delle strutture XML estratte dai servizi.&lt;/P&gt;
&lt;P&gt;Facciamo un esempio pratico provando a sviluppare un client per video.msn.com ed in particolare per estrarre un elenco di video casuale e visualizzare le informazioni fornite in formato XML dall'URL: &lt;A href="http://catalog.video.msn.com/randomVideo.aspx?mk=us&amp;amp;vs=0&amp;amp;ff=99&amp;amp;c=10&amp;amp;random=12345" target=_blank mce_href="http://catalog.video.msn.com/randomVideo.aspx?mk=us&amp;amp;vs=0&amp;amp;ff=99&amp;amp;c=10&amp;amp;random=12345"&gt;http://catalog.video.msn.com/randomVideo.aspx?mk=us&amp;amp;vs=0&amp;amp;ff=99&amp;amp;c=10&amp;amp;random=12345&lt;/A&gt;&amp;nbsp;&amp;nbsp; . Di seguito l'XML che viene restituito dal servizio di MSN:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_7.png" mce_href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_7.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=567 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_1.png" width=938 border=0 mce_src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;La piccola applicazione che realizzeremo avrà quindi la seguente struttura:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_21.png" mce_href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_21.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=481 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_9.png" width=602 border=0 mce_src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_9.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;In particolare per accedere alle informazioni utilizzeremo la classe System.Net.WebClient messa a disposizione dalla versione di .NET associata a SL2 che consente di accedere ad URL Internet in GET e POST a patto di contattare un URL sullo stesso dominio da cui abbiamo scaricato l'applicazione o su un dominio che ha posizionato sulla sua root un file di policy per il cross-scripting Silverlight o Flash. Infatti su catalog.msn.video.com troviamo il file clientaccesspolicy.xml : &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_15.png" mce_href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_15.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=312 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_3.png" width=520 border=0 mce_src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_3.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Per costruire il nostro client SL2 utiliziamo Visual Studio 2008 selezionando lo specifico template di progetto per Silverlight scegliendo di farci generare anche il progetto Web per il test dell'applicazione:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_17.png" mce_href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_17.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=520 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_7.png" width=813 border=0 mce_src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_7.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P align=center&gt;&amp;nbsp;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_25.png" mce_href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_25.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=499 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_11.png" width=825 border=0 mce_src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_11.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Ottenendo così una soluzione con due progetti: uno per l'implementazione dell'applicazione SL2, l'altro per l'applicazione Web:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_27.png" mce_href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_27.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=366 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_12.png" width=303 border=0 mce_src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_12.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;SL2 supporta oltre al Canvas due nuovi controlli di Layout , ovvero i contenitori per il posizionamento dei controlli sulla nostra interfaccia. Per il nostro esempio utiliziamo una Grid, equivalente a quella che abbiamo nel fratello maggiore WPF, con due righe all'interno delle quali inseriremo gli elementi fondamentali dell'intrfaccia: nella prima riga i controlli per impostare i parametri della ricerca sul contenuto dei risultati, nella seconda il contenuto selezionato in base ad i parametri di ricerca impostati. Per poter inserire , impostiamo ,inoltre, la proprietà ShowGridLines a true per visualizza la struttura della griglia: &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_29.png" mce_href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_29.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=594 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_13.png" width=918 border=0 mce_src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_13.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_31.png" mce_href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_31.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=758 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_14.png" width=882 border=0 mce_src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_14.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Sull'handler dell'evento click del controllo Button inserito per effetuare la ricerca:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_23.png" mce_href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_23.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=115 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_10.png" width=887 border=0 mce_src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_10.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;inseriamo il codice che utilizzando la classe WebClient&amp;nbsp; ci permetterà di accedere ai dati di cataalogo. La classe WebClient mette a disposizione i metodi per accedere ed estrarre informazioni da un URL solo attraverso un pattern asincrono. Per accedere al catalogo di MSN video ed estrarre le informazioni in XML utilizzaremo il seguente codice:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_35.png" mce_href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_35.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=324 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_16.png" width=793 border=0 mce_src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_16.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_37.png" mce_href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_37.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=645 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_17.png" width=713 border=0 mce_src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_17.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P align=left&gt;Le informazioni in XML ottenute dal servizio possono essere direttamente caricate in u Array utilizzando Linq To Xml . Per utilizzare questa funzionalità occorre referenziare lo specifico assembly System.Linq.Xml :&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_41.png" mce_href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_41.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=519 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_19.png" width=877 border=0 mce_src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_19.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P align=left&gt;Dove ns è una proprietà per gestire in namespace contenuto nel file XML, GetUriAsset un metodo helper per estrarre idati e VideoSource una specifica classe inserita nel progetto per rappresentare le informazioni dei video:&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_43.png" mce_href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_43.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=378 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_20.png" width=950 border=0 mce_src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_20.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P align=left&gt;Ottenuto l'array con le informazioni , possiamo sfruttare il databinding e collegare direttamente la collezione contenente i dati da visualizzare ad uno dei nuovi controlli offerti da SL2 completi di supporto per il databindig. Per questo semplice esempio utilizzeremo direttamente il nuovo controllo DataGrid che aggiungeremo allo XAML:&lt;/P&gt;
&lt;P align=left&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_51.png" mce_href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_51.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=494 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_24.png" width=847 border=0 mce_src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_24.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P align=left&gt;e poi lo collegheremo ai dati usando la proprietà ItemSource:&lt;/P&gt;
&lt;P align=left&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_53.png" mce_href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_53.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=333 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_25.png" width=898 border=0 mce_src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_25.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P align=left&gt;Ottenendo a runtime il seguente risultato:&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_47.png" mce_href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_47.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=520 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_22.png" width=924 border=0 mce_src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_22.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P align=left&gt;Come tutto il modello dei controlli di SL2 in maniera speculare a quanto possibile in WPF è possibile definire dei template di visualizzazione per i controlli. Infatti , ad esempio, nella colonna contenente l'url dell'immagine di preview possiamo impostare un template per fare visualizzare l'immagine al posto dell'url nella specifica colonna utilizzando la funzionalità di databinding per collegare i dati ad i controlli inseriti nel template. &lt;/P&gt;
&lt;P align=left&gt;Nel nostro esempio, in particolare, andiamo ad usare il template della RowDetails ovvero la riga di dettaglio che viene supportata dal DataGrid per ogli riga inserita. Impostiamo un template sulla riga di dettaglio per permettere la visualizzazione dell'immagine di preview del video. Il campoSource del controllo immagine lo colleghiamo al campo ImageUrl del datacontext con la specifica funzionalità di databinding ( {Binding ImageUrl} ) corrente e&amp;nbsp; impostiamo anche la specifica proprietà della DataGrid che ci permette di mostrare la RowDetails nel momento in cui la riga viene selezionata:&lt;/P&gt;
&lt;P align=left&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_57.png" mce_href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_57.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=252 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_27.png" width=984 border=0 mce_src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_27.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P align=left&gt;Il risultato ottenuto a runtime sarà il seguente:&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_55.png" mce_href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_55.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=426 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_26.png" width=956 border=0 mce_src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_26.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P align=left&gt;Oltre al campo Image, possiamo anche direttamente inserire un MediaElement e riprodurre il direttamente il video.&lt;/P&gt;
&lt;P align=left&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_61.png" mce_href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_61.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=186 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_29.png" width=971 border=0 mce_src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_29.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_59.png" mce_href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_59.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=405 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_28.png" width=884 border=0 mce_src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_28.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P align=left&gt;Agendo con altri template è possibile personalizzare completamente la griglia così come qualunque altro controllo adattandola come vogliamo alle nostre esigenze grafiche.&lt;/P&gt;
&lt;P align=left&gt;Come abbiamo già detto l'oggetto WebClient è solo uno dei meccanismi offerti da SL2 per l'accesso ai dati. Per l'accesso a servizi SOAP silverlight mette a disposizione lo stack client di WCF permettendo l'utilizzo del classico modello "Add Service Reference" che consente di generare da Visual Studio una classe proxy a partire dai metadati del WSDL esposto dal servizio, classe che poi può essere usata direttamente per l'accesso a servizio. Anche in questo caso il proxy genera solo la possibilità di utilizzare con un pattern asincrono le chiamate al servizio, per evitare di bloccare l'interfaccia utente. Di seguito uno schema dello stack WCF per SL2.&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_67.png" mce_href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_67.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=345 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_32.png" width=460 border=0 mce_src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_32.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P align=left&gt;Facciamo anche un piccolo progetto di test per l'utilizzo di Web Services da SL2 utilizzando WCF come servizio server. Sviluppiamo un semplice client SL2 per estrarre le informazioni dei clienti del classico database Northwind esposto attraverso un servizio WCF. Partiamo con un nuovo progetto Silverlight e selezioniamo anche la costruzione dell'applicazione Web di test.&amp;nbsp; &lt;/P&gt;
&lt;P align=left&gt;All'interno dell'applicazione web di test aggiungiamo un modello LINQ To Sql&amp;nbsp; per accedere alla tabella Customers del database Northwind :&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_39.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=318 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_18.png" width=541 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P align=left&gt;Con il wizard di LINQ To Sql selezioniamo la tabella Customers e ci facciamo generare il modello di classi per l'accesso ai dati dal nostro ORM:&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_45.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=332 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_21.png" width=433 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P align=left&gt;Impostiamo la specifica proprietà che ci consente di rendere serializzabili le classi generate da Linq To Sql:&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_49.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=310 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_23.png" width=488 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P align=left&gt;Aggiungiamo un servizio di tipo WCF al nostro progetto:&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_33.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=326 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_15.png" width=567 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P align=left&gt;Dove implementiamo la seguente interfaccia per estrarre l'elenco dei clienti dal database customers che sono in una specifica città:&lt;/P&gt;
&lt;P align=left&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_69.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=275 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_33.png" width=696 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P align=left&gt;Implementiamo l'interfaccia sul servizio ed impostiamo con LINQ la query per estrarre i clienti in base al parametro selezionato:&lt;/P&gt;
&lt;P align=left&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_71.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=414 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_34.png" width=637 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P align=left&gt;Come ultimo step per permettere l'accesso a SL2 al servizio, impostiamo come profilo di banding il basicProfile , agendo sul file di configurazione della nostra applicazione client per fare in modo che l'implementazione SOAP del servizio sia compatibile con il Basic Profile SOAP che viene supportato da SL2:&lt;/P&gt;
&lt;P align=left&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_75.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=228 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_36.png" width=731 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P align=left&gt;Lato SL2 implementiamo una semplice interfaccia per l'invio della richiesta al servizio e la visualizzazione della risposta:&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_73.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=450 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_35.png" width=867 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P align=left&gt;Per poter agganciare il servizio, dal progetto SL2 usiamo la classica add service reference, selezionando il servizio WCF :&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_77.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=506 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_37.png" width=881 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P align=left&gt;L'ambiente di sviluppo carica il WSDL esposto dal servizio e ci implementa il proxy necessario per l'accesso al servizio e la configurazione di WCF:&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_79.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=152 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_38.png" width=225 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P align=left&gt;Sull'evento di click del Button query inserito nell'interfaccia SL implementiamo il codice per accedere al servizio , e sul metodo di callback agganciamo non il databinding la DataGrid ai dati estratti dal servizio:&lt;/P&gt;
&lt;P align=left&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_81.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=430 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_39.png" width=995 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P align=left&gt;Completando il nostro esempio:&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_83.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=609 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_40.png" width=716 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P align=left&gt;Per approfondire questo aspetto vi consiglio :&amp;nbsp; &lt;A title=http://msdn2.microsoft.com/en-us/library/cc296254(VS.95).aspx href="http://msdn2.microsoft.com/en-us/library/cc296254(VS.95).aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/cc296254(VS.95).aspx"&gt;http://msdn2.microsoft.com/en-us/library/cc296254(VS.95).aspx&lt;/A&gt; .&amp;nbsp; &lt;/P&gt;
&lt;P align=left&gt;In SL2 avremo a disposizione anche i serializzatori JSON . Al link&amp;nbsp; &lt;A href="http://code.msdn.microsoft.com/SilverlightWS" target=_blank mce_href="http://code.msdn.microsoft.com/SilverlightWS"&gt;http://code.msdn.microsoft.com/SilverlightWS&lt;/A&gt;&amp;nbsp;&amp;nbsp; trovate alcuni esempi del supporto JSON su cui il team di sviluppo sta lavorando :&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_65.png" mce_href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_65.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=315 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_31.png" width=536 border=0 mce_src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_31.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P align=left&gt;Interessante anche la funzionalità prevista per l'ambiente di sviluppo paste as XmlSerializable che ci consentirà da VisualStudio di fare copia e incolla di un frammento XML per generare direttamente una classe tipizzata per rappresentare lo stesso XML con una classe .NET, cosa che in parte è possibile con il tool da riga di comando XSD.EXE di .NET.&lt;/P&gt;
&lt;P align=center&gt;&lt;A href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_63.png" mce_href="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_63.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=349 alt=image src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_30.png" width=552 border=0 mce_src="http://blogs.msdn.com/blogfiles/giuseppeguerrasio/WindowsLiveWriter/AccessoaidaiconSiliverlight2Beta1_71B1/image_thumb_30.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P align=left&gt;Disponibile anche il supporto per i socket, ma solo verso il dominio da cui è stata scaricata l'applicazione (no crossscripting al momento) ed il supporto per Syndication che è praticamente identico a quello disponibile in .NET 3.5. &lt;/P&gt;
&lt;P&gt;Per chi volesse cominciare a provare Silverlight 2 suggerisco i seguenti link:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;- &lt;A href="http://silverlight.net/GetStarted/#betajump"&gt;http://silverlight.net/GetStarted/#betajump&lt;/A&gt; dove trovate i link per installare il Runtime , le estensioni per Visual Studio 2008 e la versione di Expression Blend per SL2&lt;/P&gt;
&lt;P&gt;- &lt;A href="http://silverlight.net/learn/tutorials.aspx"&gt;http://silverlight.net/learn/tutorials.aspx&lt;/A&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; tutorial sul Silverlight 2&lt;/P&gt;
&lt;P&gt;- &lt;A href="http://silverlight.net/learn/labs.aspx"&gt;http://silverlight.net/learn/labs.aspx&lt;/A&gt; .&amp;nbsp;&amp;nbsp;&amp;nbsp; laboratori sulle nuove funzionalità di Silverlight 2&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P align=left mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P align=left&gt;Al link &lt;A title=http://silverlight.net/Quickstarts/Remote/default.aspx href="http://silverlight.net/Quickstarts/Remote/default.aspx" target=_blank mce_href="http://silverlight.net/Quickstarts/Remote/default.aspx"&gt;http://silverlight.net/Quickstarts/Remote/default.aspx&lt;/A&gt; trovate un quickstart sugli argomenti trattati.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8272689" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/giuseppeguerrasio/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/giuseppeguerrasio/archive/tags/Web+2.0/default.aspx">Web 2.0</category><category domain="http://blogs.msdn.com/giuseppeguerrasio/archive/tags/S_2B00_S/default.aspx">S+S</category><category domain="http://blogs.msdn.com/giuseppeguerrasio/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/giuseppeguerrasio/archive/tags/Data+Access/default.aspx">Data Access</category><category domain="http://blogs.msdn.com/giuseppeguerrasio/archive/tags/REST/default.aspx">REST</category><category domain="http://blogs.msdn.com/giuseppeguerrasio/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://blogs.msdn.com/giuseppeguerrasio/archive/tags/RIA/default.aspx">RIA</category><category domain="http://blogs.msdn.com/giuseppeguerrasio/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Sql Server Data Services : il database come servizio, un altro esempio di S+S</title><link>http://blogs.msdn.com/giuseppeguerrasio/archive/2008/03/07/sql-server-data-service-il-database-come-servizio-un-altro-esempio-di-s-s.aspx</link><pubDate>Fri, 07 Mar 2008 14:18:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8092912</guid><dc:creator>Giuseppe Guerrasio</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/giuseppeguerrasio/comments/8092912.aspx</comments><wfw:commentRss>http://blogs.msdn.com/giuseppeguerrasio/commentrss.aspx?PostID=8092912</wfw:commentRss><description>&lt;P&gt;Tra le tantissime novità annunciate al MIX 08 ( per chi volesse vedere le sessioni dell'evento &lt;A title=http://sessions.visitmix.com/ href="http://sessions.visitmix.com/" target=_blank mce_href="http://sessions.visitmix.com/"&gt;http://sessions.visitmix.com/&lt;/A&gt;&amp;nbsp; ) una delle più interessanti nell'ottica del mondo &lt;A href="http://blogs.msdn.com/giuseppeguerrasio/archive/2007/12/11/la-fine-della-tirannia-dell-or-software-services-s-s.aspx" target=_blank mce_href="http://blogs.msdn.com/giuseppeguerrasio/archive/2007/12/11/la-fine-della-tirannia-dell-or-software-services-s-s.aspx"&gt;S+S/SaaS&lt;/A&gt; e di tutte le implicazioni che questo modello comporta per le applicazioni e per le &lt;A href="http://blogs.msdn.com/giuseppeguerrasio/archive/2007/12/12/saas-soa-e-s-s-impatto-per-le-aziende.aspx" target=_blank mce_href="http://blogs.msdn.com/giuseppeguerrasio/archive/2007/12/12/saas-soa-e-s-s-impatto-per-le-aziende.aspx"&gt;aziende&lt;/A&gt; e per i produttori di software è rappresentata dal nuovo servizio&lt;STRONG&gt; &lt;A href="http://www.microsoft.com/sql/dataservices/default.mspx" target=_blank mce_href="http://www.microsoft.com/sql/dataservices/default.mspx"&gt;Sql Server Data Services&lt;/A&gt;&lt;/STRONG&gt;. &lt;/P&gt;
&lt;P&gt;Si tratta di un vero e proprio Data Service&amp;nbsp; che viene incontro sia alle esigenze delle applicazioni web di cui parlavo nel post su &lt;A href="http://blogs.msdn.com/giuseppeguerrasio/archive/2008/03/04/ado-net-data-service.aspx" target=_blank mce_href="http://blogs.msdn.com/giuseppeguerrasio/archive/2008/03/04/ado-net-data-service.aspx"&gt;ADO.NET Data Service&lt;/A&gt; sia alle esigenze di aziende di diverse dimensioni relativamente alla gestione dei dati.&lt;/P&gt;
&lt;P&gt;Il servizio&amp;nbsp;offre la possibilità di disporre di data storage,&amp;nbsp;accessibili direttamente online su Internet,&amp;nbsp;&amp;nbsp;progressivamente scalabili su richiesta,&amp;nbsp;senza dover installare&amp;nbsp;nel nostro data center rilevanti quantità di Hardware che poi vanno gestite e manutenute.&lt;/P&gt;
&lt;P&gt;L'accesso alle informazioni inserite nel servizio è possibile attraverso delle interfacce web service (SOAP,e REST) ed è possibile utilizzare un modello ad oggetti client che permette di utilizzare LINQ per gestire ed accedere alle Entità che verranno inserite nel servizio. Presenti anche tutti gli strumenti per l'amministrazione e la configurazione degli aspetti di sicurezza che sfrutteranno ovviamente Windows LiveId con tutte le sue potenzialità di federazione.&lt;/P&gt;
&lt;P&gt;La sessione specifica di MIX08 sull'argomento tenuta da Nigel Ellis (Architect del servizio ) sarà a breve on line&amp;nbsp;sempre a &lt;A title=http://sessions.visitmix.com/ href="http://sessions.visitmix.com/" target=_blank mce_href="http://sessions.visitmix.com/"&gt;http://sessions.visitmix.com/&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Interessante sull'argomento il post di&amp;nbsp; &lt;A title="Eugenio Pace - Software as a Service Architecture Guidance" href="http://blogs.msdn.com/eugeniop/archive/2008/03/05/sql-server-data-services-sdss-new-version-of-litwarehr.aspx" mce_href="http://blogs.msdn.com/eugeniop/archive/2008/03/05/sql-server-data-services-sdss-new-version-of-litwarehr.aspx"&gt;Eugenio Pace - Software as a Service Architecture Guidance&lt;/A&gt; sul lavoro di integrazione del servizio con le guidance SaaS e S+S dell'architecture strategy team e l'evoluzione che stanno implementando nell'applicazione reference LitwareHR dove per l'appunto verrà sfruttato il nuovo servizio come storage.&lt;/P&gt;
&lt;P&gt;Per chi vuole provare la beta : &lt;A title=http://www.microsoft.com/sql/dataservices/default.mspx href="http://www.microsoft.com/sql/dataservices/default.mspx" mce_href="http://www.microsoft.com/sql/dataservices/default.mspx"&gt;http://www.microsoft.com/sql/dataservices/default.mspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Blog del team :&lt;A title=http://blogs.msdn.com/ssds/ href="http://blogs.msdn.com/ssds/" target=_blank mce_href="http://blogs.msdn.com/ssds/"&gt;http://blogs.msdn.com/ssds/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;FAQ del servizio:&lt;A title=http://www.microsoft.com/sql/dataservices/faq.mspx href="http://www.microsoft.com/sql/dataservices/faq.mspx" mce_href="http://www.microsoft.com/sql/dataservices/faq.mspx"&gt;http://www.microsoft.com/sql/dataservices/faq.mspx&lt;/A&gt;&lt;/P&gt;&lt;A title=http://www.microsoft.com/sql/dataservices/faq.mspx href="http://www.microsoft.com/sql/dataservices/faq.mspx" mce_href="http://www.microsoft.com/sql/dataservices/faq.mspx"&gt;&lt;/A&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8092912" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/giuseppeguerrasio/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/giuseppeguerrasio/archive/tags/S_2B00_S/default.aspx">S+S</category><category domain="http://blogs.msdn.com/giuseppeguerrasio/archive/tags/SaaS/default.aspx">SaaS</category><category domain="http://blogs.msdn.com/giuseppeguerrasio/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/giuseppeguerrasio/archive/tags/Data+Access/default.aspx">Data Access</category><category domain="http://blogs.msdn.com/giuseppeguerrasio/archive/tags/REST/default.aspx">REST</category><category domain="http://blogs.msdn.com/giuseppeguerrasio/archive/tags/Architecture/default.aspx">Architecture</category></item><item><title>Rilasciata la Beta 3 dell'ADO.NET Entity Framework</title><link>http://blogs.msdn.com/giuseppeguerrasio/archive/2007/12/07/rilasciata-la-beta3-3-dell-ado-net-entity-framework.aspx</link><pubDate>Fri, 07 Dec 2007 06:14:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6688181</guid><dc:creator>Giuseppe Guerrasio</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/giuseppeguerrasio/comments/6688181.aspx</comments><wfw:commentRss>http://blogs.msdn.com/giuseppeguerrasio/commentrss.aspx?PostID=6688181</wfw:commentRss><description>&lt;P&gt;&lt;A title=http://blogs.msdn.com/data/archive/2007/12/06/ado-net-entity-framework-beta-3-released.aspx href="http://blogs.msdn.com/data/archive/2007/12/06/ado-net-entity-framework-beta-3-released.aspx" mce_href="http://blogs.msdn.com/data/archive/2007/12/06/ado-net-entity-framework-beta-3-released.aspx"&gt;http://blogs.msdn.com/data/archive/2007/12/06/ado-net-entity-framework-beta-3-released.aspx&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6688181" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/giuseppeguerrasio/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/giuseppeguerrasio/archive/tags/ORM/default.aspx">ORM</category><category domain="http://blogs.msdn.com/giuseppeguerrasio/archive/tags/Data+Access/default.aspx">Data Access</category></item><item><title>Rilasciata la Beta 2 dell'Entity framework</title><link>http://blogs.msdn.com/giuseppeguerrasio/archive/2007/08/29/rilasciata-la-beta-2-dell-entity-framework.aspx</link><pubDate>Wed, 29 Aug 2007 19:51:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4631259</guid><dc:creator>Giuseppe Guerrasio</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/giuseppeguerrasio/comments/4631259.aspx</comments><wfw:commentRss>http://blogs.msdn.com/giuseppeguerrasio/commentrss.aspx?PostID=4631259</wfw:commentRss><description>&lt;P&gt;Rilasciata la beta 2 dell'Entity Framework installabile sulla Beta 2 di Visual Studio 2008.Informazioni e puntatori per il download&amp;nbsp;li trovate &lt;A class="" title="Entity Framework Beta2" href="http://blogs.msdn.com/adonet/archive/2007/08/27/entity-framework-beta-2-the-1st-entity-framework-tools-ctp-released.aspx" target=_blank mce_href="http://blogs.msdn.com/adonet/archive/2007/08/27/entity-framework-beta-2-the-1st-entity-framework-tools-ctp-released.aspx"&gt;qui&amp;nbsp;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Per chi volesse approfondire i concetti architetturali alla base dell'Entity Framework suggerisco la lettura del seguente Whitepaper:&lt;/P&gt;
&lt;DIV class=title&gt;&lt;A class="" title="Next-Generation Data Access: Making the Conceptual Level Real" href="http://msdn2.microsoft.com/en-us/library/aa730866(VS.80).aspx" target=_blank mce_href="http://msdn2.microsoft.com/en-us/library/aa730866(VS.80).aspx"&gt;Next-Generation Data Access: Making the Conceptual Level Real&lt;/A&gt;&lt;/DIV&gt;
&lt;P mce_keep="true"&gt;e il seguente &lt;A class="" title="Dr. Peter Chen: Entity Relationship Model - Past, Present and Future" href="http://channel9.msdn.com/Showpost.aspx?postid=298587" mce_href="http://channel9.msdn.com/Showpost.aspx?postid=298587"&gt;video&lt;/A&gt; del Dr. Peter Chen e Jose Blakeley (uno degli architetti del team Entity Framework)&amp;nbsp;sull'Entity Relationship Model alla base dei principi architetturali dell'Entity Framework &lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4631259" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/giuseppeguerrasio/archive/tags/.NET/default.aspx">.NET</category><category domain="http://blogs.msdn.com/giuseppeguerrasio/archive/tags/Data+Access/default.aspx">Data Access</category><category domain="http://blogs.msdn.com/giuseppeguerrasio/archive/tags/Orcas/default.aspx">Orcas</category><category domain="http://blogs.msdn.com/giuseppeguerrasio/archive/tags/Architecture/default.aspx">Architecture</category></item><item><title>Un nuovo mondo per l’accesso ai dati:  Code Name  Jasper ovvero Dynamic ADO</title><link>http://blogs.msdn.com/giuseppeguerrasio/archive/2007/05/14/un-nuovo-mondo-per-l-accesso-ai-dati-code-name-jasper-ovvero-dynamic-ado.aspx</link><pubDate>Mon, 14 May 2007 10:32:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2619778</guid><dc:creator>Giuseppe Guerrasio</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/giuseppeguerrasio/comments/2619778.aspx</comments><wfw:commentRss>http://blogs.msdn.com/giuseppeguerrasio/commentrss.aspx?PostID=2619778</wfw:commentRss><description>Lo strato di accesso ai dati nelle applicazioni rappresenta da sempre uno degli elementi&amp;nbsp; più complessi da sviluppare . Negli ultimi&amp;nbsp; anni la tecnologia&amp;nbsp; ha fatto grossi passi avanti in questa area ed anche nella prossima versione di .NET&amp;nbsp; e visual studio (Orcas) contiene un gran numero di nuove ed importanti tecnologie .&amp;nbsp; Un progetto in incubazione in Microsoft in questi mesi dal nome Jasper (noto anche come Dynamic ADO) , disponibile anche in CTP e mostrato a MIX tra le novità del prossimo futuro apre un nuovo interessante approccio alla costruzione RAD di applicazioni data driven. 
&lt;P&gt;Jasper si propone di renedere completamente dinamica la costruzione dello strato di accesso ai dati a partire dai metadati definiti da uno schema EDM (Entity Data Model) del nuovo Entity Framework della versione di ADO.NET in corso di sviluppo con Orcas. &amp;nbsp;Jasper, infatti, genera a runtime il modello delle classi di accesso ai dati liberando l'applicazione da complesse operazioni di manutenzione e aggiornamento del codice di accesso ai dati , rendendo sempre più dichiarativa la programmazione di questo strato applicativo. Jasper , inoltre, offre anche un insieme di elementi per effettuare il databinding "automatico" tra il modello generato a runtime ed i controlli di lnterfaccia utente, fornendo anche la possibilità di agganciare della logica custom al modello di gestione dell persistenza e permettendo di autogenerare direttamente l'EDM per quei database su cui il modello relazionale si rimappa su quello che vogliamo poi utilizzare per lo sviluppo. L'approccio è estremamente interessante e apre nuovi scenari che si propongono di semplificare significativamente lo sviluppo. Per chi volesse approfondire consiglio il video del team di jasper su channel 9 (&lt;A href="http://channel9.msdn.com/Showpost.aspx?postid=306240"&gt;http://channel9.msdn.com/Showpost.aspx?postid=306240&lt;/A&gt;)&amp;nbsp;, la sessione di mix 07 su Dynamic ADO&amp;nbsp;(&lt;A href="http://int1.fp.sandpiper.net/soma/applications/silverlight/v1/videos/DEV18.wmv"&gt;http://int1.fp.sandpiper.net/soma/applications/silverlight/v1/videos/DEV18.wmv&lt;/A&gt;) , &amp;nbsp;i bit della CTP per poter provare dal vivo il primo prototipo di questa tecnologia insieme &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=471bb3ac-b31a-49cd-a567-f2e286715c8f&amp;amp;DisplayLang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=471bb3ac-b31a-49cd-a567-f2e286715c8f&amp;amp;DisplayLang=en&lt;/A&gt;&amp;nbsp;.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2619778" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/giuseppeguerrasio/archive/tags/ORM/default.aspx">ORM</category><category domain="http://blogs.msdn.com/giuseppeguerrasio/archive/tags/Data+Access/default.aspx">Data Access</category></item></channel></rss>