website statistics
Welcome to MSDN Blogs Sign in | Join | Help

Giuseppe Guerrasio

Building the next web platform

Silverlight e le nuove applicazioni RIA: Servizi per l'Healthcare

clip_image001[3]Nelle scorse settimane  ho fatto un post relativo ad una applicazione di esempio per il mondo finaziario sviluppata in Silverlight 2 che evidenzia come la possibilità di sfruttare le potenzialità delle nuove tecnologie per lo sviluppo di interfacce RIA (Rich Interactive Application) possa essere utilizzata a vantaggio di qualunque tipologia di applicazione. Da ieri è disponibile online una nuova serie di esempi per la sanità Microsoft Health Common User Interface (MSCUI) Patient Journey Demonstrator che dimostrano come anche in questo settore le potenzialità delle nuove tecnologie  possono essere utilizzate per costruire una nuova generazione di applicazioni, evidenziando le qualità di Silverlight come piattaforma di sviluppo.

Si tratta di una implementazione di esempio per un progetto piu ampio per il settore dell'Healtcare: Il Microsoft Health Common User Interface (CUI) . L'iniziativa, sviluppata in UK,  ha lo scopo di contribuire alla costruzione di una User Interface Design Guidance  per le applicazioni in questo settore, completa di un Toolkit di controlli che indirizza una ampia gamma di scenari , abilitando la costruzione di una nuova generazione di applicazioni, più semplici da usare e più efficaci rispetto alla loro funzione nel campo sanità .

Disponibili oltre allo scenario anche il documento di  Design Guidance  e il Toolkit con i controlli ed esempi realtivi all'iniziativa  che possono essere scaricati e installati per utilizzarli con Microsoft Visual Studio. Disponibile anche  la Roadmap del programma.

 

Nel Health Common User Interface (MSCUI) Patient Journey Demonstrator  vengono al momento implementate tre applicazioni che descrivono una tipica giornata di un paziente dal punto di vista della struttura ospedaliera che lo cura. Si va dalle interfacce finanziare fino alle informazioni sanitarie ed agli esami clinici.  Molte le funzionalità  di  Silverlight 2 Beta 1 utilizzate tra cui:

· Deep zoom per la visualizzazione dei dati degli complex ECG (elettrocardiogrammi)

· Scaling layout

· Data-binding

· Animazioni e integrazione di contenuti multimediali

· Ampio utilizzo di grafica vettoriale per la rappresentazione di diagrammi

Trovate anche una introduzione allo scenario completa di video , descrizione delle applicazioni e scenari evolutivi futuri per le applicazioni di questo settore.

Alcuni link per chi volesse cominciare a provare Silverlight 2 :

- http://silverlight.net/GetStarted/ dove trovate i link per installare il Runtime , le estensioni per Visual Studio 2008 e la versione di Expression Blend per SL2

- http://silverlight.net/learn/tutorials.aspx    tutorial sul Silverlight 2

- http://silverlight.net/learn/labs.aspx .    laboratori sulle nuove funzionalità di Silverlight 2

- Slide dell'evento The Next Web Now

- Sessioni di MIX 08

Per chi fosse interessato alle funzionalità di accesso remoto a dati esposti da siti via http e web service, aspetto fondamentale per lo sviluppo di soluzioni applicative con SL suggerisco un mio post sull'argomento.

Ottimo tutorial introduttivo sul blog di Scott Guthrie.

 

 

by Giuseppe Guerrasio | 1 Comments

Esempio di applicazione RIA con Silverlight : Sanremoanchenoi da Rai Click e Kora

L’evoluzione delle interfacce utente e l’emergere di applicazioni RIA (Rich Interactive Application) basate in gran parte sull’utilizzo di rich-plugin come Silverlight che arricchiscono il browser e potenziano le possibilità offerte dall’HTML e dalle tecniche AJAX sta rapidamente modificando la modalità con cui vengono sviluppate le applicazioni. Un ottimo esempio di come sia possibile combinare queste nuove potenzialità per sviluppare interfacce innovative è rappresentato dal sito sanremoanchenoi (http://www.sanremoanchenoi.com) . Si tratta di un iniziativa di Rai Click, implementata da Kora , avviata durante il festival di Sanremo e collegata proprio alla sperimentazione di nuove forme di user interface e di gestione di contenuti UGC (User Genereted Content) .

L’iniziativa è basata su una serie di contest dove gli utenti possono inviare dei video per dimostrare le loro capacità “artistiche” collegate alla musica. Gli utilizzatori del sito possono navigare sui video, votarli ed inserire dei commenti. Di seguito un’immagine dell’interfaccia realizzata:

clip_image002

Il sito rappresenta anche un ottimo esempio di utilizzo di software sviluppato localmente in combinazione con l’utilizzo di servizi offerti da piattaforme su Internet . Infatti, l’infrastruttura di gestione ed erogazione dei contenuti video è completamente basata su Silverlight Streaming che, attraverso la sua CDN (Content Delivery Network), fornisce il servizio di streaming per i filmati che vengono visualizzati nel client.

L’interfaccia dell’intera applicazione è sviluppata con tecniche AJAX e sfrutta una logica sviluppata in Java Script per pilotare sia le componenti di grafica ed animazione sviluppate con Silverlight 1.0 , sia le componenti HTML. L’interazione con i servizi di back end che gestiscono il voting , i commenti ed il catalogo dei video è stata implementata in puro stile AJAX e l’iterfaccia client accede ai servizi attraverso XMLHttpRequest senza alcun reload dell’interfaccia client.

L’applicazione ha poi una componente di back-end redazionale che gestisce l’approvazione dei contenuti e che in particolare gestisce l’encoding e l’upload dei video su Silverlight Streaming. L’encoding dei video viene realizzato con Expression Encoder. L’architettura di massima dell applicazione e la seguente:

clip_image004

La gestione della fruizione dei video dal client Silverlight avviene attraverso l’utilizzo combinato dei servizi locali al sito ed di Silverlight streaming . I video vengono pubblicati sul servizio , il catalogo locale del sito mantiene i riferimenti ai video . L’interfaccia caricata nel browser client interroga via http(utilizzando XMLHttpRequest via javascript) il servizio di catalogo che fornisce l’elenco dei video. L’elenco dei video viene caricato via Javascript nell’interfaccia Silverlight e mostrato all’utente.

clip_image006

Nel momento in cui l’utente seleziona un video per effettuare lo streaming , l’applicazione client interroga attraverso degli script forniti da Silverlight Streaming che vengono inclusi nel client il servizio per ottenere l’url del video che viene poi visualizzato dal MediaElement di Silverlight, opportunamente utilizzato nell’interfaccia che provvede a consumare lo streaming fornito dalla CDN .

Per chi volesse approfondire l’utilizzo di Silverlight Streaming service e la costruzione di siti UGC consiglio di utilizzare l’applicazione di esempio video.show che offre un esempio completo di codice sorgente scaricabile per realizzare siti UGC per il video sharing, con la possibilità di utilizzare Silverlight Streaming come meccanismo per la distribuzione dei video e l’SDK del servizio Silverlight Streaming.

Grazie alla flessibilità di Silverlight ed alla flessibilità dello XAML che consente di sviluppare una efficace collaborazione tra developer che sviluppa la logica dell’interfaccia e designer che implementa le componenti di grafica ed animazione, l’applicazione è stata sviluppata in tempi estremamente rapidi (2 settimane) . Anche per l’integrazione e la messa in produzione, la possibilità di sfruttare Silverlight Streaming come piattaforma di delivery dei video ha consentito di gestire l’intero progetto in tempi estremamente ridotti.

La ricchezza di animazioni e contenuti multimediali dell’interfaccia utente mette in evidenza la notevole flessibilità che viene fornita da Silverlight. L’intera interfaccia contenuta nel browser è infatti realizzata con il plugin, combinando anche parte di contenuti in HTML che vengono utilizzati in overlay al contenuto implementato con Silverlight. Come si può vedere dalla seguente figura:

clip_image008

abbiamo una serie di oggetti grafici in overlay su un video di background, dove vengono composti i diversi menù, che interagiscono con l’utente attraverso delle animazioni che compongono le diverse scene previste in base alle selezioni effettuate dall’utente.

Anche le liste dei contenuti video vengono posizionate in overlay al video di background e consentono di avere in preview il video selezionato in completo overlay sul video di background , componendo in un'unica interfaccia animazioni, grafica, testo e differenti flussi video:

clip_image010

Le componenti dell’interfaccia che consento il voting e l’inserimento di commenti e contenuti sono sviluppate con dell’HTML che viene anche in questo caso posizionato in overlay ai contenuti realizzati in Silverlight ed anche in questo caso gestito con una logica in Java script che sfrutta le classiche tecniche AJAX per colloquiare con i servizi di back end che abbiamo descritto nell’architettura vista in precedenza.

clip_image012

Il sito resterà in produzione solo per alcune settimane collegate al contest collegato a sanremo.

by Giuseppe Guerrasio | 0 Comments

Una giornata di Steve Ballmer

 

Durante la giornata che Steve Ballmer ha passato in italia la scorsa settimana Carlo Rossanigo lo ha seguito per tutto il tempo ed ha girato una video intervista con lui nei ritagli di tempo della giornata. Domande a tutto campo da su cosa pensa mentre  fa jogging, a come vive il social networking, da come si aspetta che sarà il web 3.0, s cosa suggerisce ai giovani, .. insomma, 14 domande “unplugged” da non perdere !!!!

Le trovate su mclips .

 

 

 

 

by Giuseppe Guerrasio | 1 Comments

Filed under: , , , ,

Evento The Next Web Now: Slide sessione Costruire applicazioni RIA con Silverlight 2

clip_image003Ecco le slide della mia sessione "Costruire applicazioni RIA con Silverlight 2" all'evento  The Next Web Now – MIX Essentials . Sul blog di MSDN Italia i link alle altre slide e presto anche i filmati delle sessioni. Grazie a tutti per la partecipazione.

by Giuseppe Guerrasio | 1 Comments

Filed under: , , , , ,

Sessioni del lancio online

Disponibili online le sessioni del lancio. In particolare disponibile anche video e slide della sessione che ho preparato con Mario Fontana e Mauro Minella sul tema  Visual Tools For Office da titolo

"Sviluppo di applicazioni per Microsoft Office System"

image

by Giuseppe Guerrasio | 0 Comments

IIS7 e gli scenari video in progressive download

Una delle tendenze più rilevanti nell'evoluzione dei contenuti nel mondo del Web è sicuramente rappresentata dall'enorme crescita dei contenuti video che oramai sta investendo siti di ogni dimensione. Si va dalla possibilità di ospitare materiale video generato dagli utenti, news, film , trailer.

Erogare contenuti video è estremamente costoso in termini di consumo di banda e gli scenari attraverso i quali viene generalmente affrontata questa tematica sono essenzialmente di tre tipi:

- Hosting dei contenuti video presso strutture terze specializzate nella distribuzione di questo tipo di contenuti attraverso CDN (Content Delivery Network) specifiche

- Infrastruttura di streaming installata nella server farm

- Download progressive , ovvero distribuzione del file attraverso un server web

La piattaforma Microsoft offre una soluzione per tutti e tre gli scenari :

- Silverlight Streaming che offre una CDN per la distribuzione di contenuti video e di applicazioni Silverlight in generale

- Windows Media Services per Windows Server 2008 che forniscono una piattaforma di streaming integrata in Windows Server con completo supporto per il DRM

- IIS 7 Media Pack Bit Rate Throttling che offre nuove funzionalità ad IIS7 per gestire gli scenari di download progressive , da poco disponibile nella versione finale.

Uno degli scenari tipici, in particolare per la distribuzione di video di piccole dimensioni è  lo scenario di download progressive,  dove il file viene posizionato semplicemente sul server web, mentre lo streaming viene utilizzato in scenari più complessi o per scenari in cui vengono trasmessi video in diretta. Nel download progressive, non abbiamo le ottimizzazioni sulla banda offerte dal server di streaming , il consumo di banda è elevatissimo in quanto il server web effettua il download del file verso il player client utilizzatore, sfruttando completamente la banda disponibile, indipendentemente dal bit rate con cui il video è codificato per la visualizzazione. Inoltre, nella maggioranza dei casi, l'utente guarda solo i primi secondi del video che nel frattempo va in download a banda completa praticamente inutilmente. 

Nel nuovo Media Pack per IIS7 troviamo le funzionalità di BitRate Throttling che consentono di gestire gli scenari di download progressive,  permettendo di ottimizzare il consumo di banda in modo configurabile sulla base del reale formato di codifica del file, ed a garantire un maggior numero di connessioni contemporanee possibili. Tra le caratteristiche fondamentali del nuovo supporto il media pack installa un modulo che permette di effettuare il download del file in base al bit rate di encoding. La risposta ed il funzionamento del modulo è completamente configurabile  dal livello del server web, fino ad arrivare al livello del singolo file.

La lista dei formati supportati è la seguente:

  • .asf
  • .avi
  • .flv
  • .m4v 
  • .mov
  • .mp3
  • .mp4
  • .rm
  • .rmvb
  • .wma
  • .wmv

E' possibile estendere il Media Pack per supportare ulteriori formati.

Per installare il MediaPack Bit Rate Throttling potete trovare qui il setup:

Per dimostrare la funzionalità del media pack e la semplicità di configurazione ed utilizzo, ho effettuato un piccolo test installandomi una macchina di prova. Sulla root del sito ho posizionato un file di esempio;

image

E l'ho pubblicato con la funzionalità di throttling disabilitata a livello del server web:

image

image

Di seguito potete vedere l'andamento del consumo di banda realizzato durante la riproduzione del video:

image

Il Media Pack per configuare il Bit Rate Throttling offre una interfaccia completamente integrata nell'ambiente di amministrazione di IIS7

image

Dall'interfaccia provvedo ad abilitare la funzionalità :

image

ed in particolare di seguito  vediamo la configurazione impostata per i file di tipo .wmv:

image

Con la configurazione impostata , i primi 20 secondi necessari per l'avvio rapido del filmato verranno forniti a banda completa (FastStart) , successivamente il download avverrà al 100% (Throttle Rate) del bitrate di encoding del video che nel nostro esempio è di 300kps.

La funzionalità di Bit Rate Throttling può anche essere applicata ad altri tipi di contenuti , configurando la parte data dell'entry e stabilendo quindi il la banda assegnata per il download

Effettuado nuovamente il play del video l'andamendo del consumo di banda in questo caso avrà un andamento che è il seguente:

image

Contribuendo significativamente ad ottimizzare il consumo di banda , ed a garantire un maggior numero di connessioni contemporanee possibili.

Per uteriori informazioni vi suggerisco i seguenti walkthrough:

Tra le altre caratteristiche offerte da IIS7 all'interno del Media Pack vi segnalo anche la possibilità di costruire delle playlist server side anche per i contenuti in download progressive, funzionalità utile ad esempio  per costruire playlist introducendo contenuti pubblicitaril. Informazioni e Walkthrough di utilizzo qui .

by Giuseppe Guerrasio | 1 Comments

Filed under: , , ,

Accesso ai dati con Siliverlight 2 Beta 1

In questo fine settimana ho passato un po di tempo libero ad approfondire i bit disponibili della Beta 1 di Silverligth 2 . Tra le tantissime novità offerte dal supporto del codice managed,  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.

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).

image

Lo scenario tipico di sviluppo Web che prevedeva lo strato di accesso ai dati realizzato direttamente dalla parte server dell'applicazione Web ,  sta rapidamente evolvendo. Anche le  applicazioni  basate sul browser sono sempre più caratterizzate da una larga presenza di codice client, che sfrutta tecniche AJAX   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.

image

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 combinare il software interno con servizi esterni. Le applicazioni e le informazioni aziendali vengono utilizzate in combinazione  con servizi presenti su Internet e con le applicazioni delle aziende clienti o partner, 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  i servizi per gli ordini, lo stato della spedizione , etc.

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  potrebbe direttamente essere richiesto dal client al servizio del corriere e combinato direttamente sulla mappa e con gli altri dati provenienti dall'Intranet.

image

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 mostrati alla office developers conference  .

image 

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  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.

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 . Questo Howto mostra un semplice esempio di utilizzo di questa tecnica che sfutta lo XAML mentre questo mostra l'utilizzo di web service da Silverligh 1.0  .

image

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.

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.

image

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  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.

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: http://catalog.video.msn.com/randomVideo.aspx?mk=us&vs=0&ff=99&c=10&random=12345   . Di seguito l'XML che viene restituito dal servizio di MSN:

image

La piccola applicazione che realizzeremo avrà quindi la seguente struttura:

image

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 :

 image

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:

image

 image

Ottenendo così una soluzione con due progetti: uno per l'implementazione dell'applicazione SL2, l'altro per l'applicazione Web:

image

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:

image

image

Sull'handler dell'evento click del controllo Button inserito per effetuare la ricerca:

 image

 

inseriamo il codice che utilizzando la classe WebClient  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:

image

image

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 :

image

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:

image

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:

image

e poi lo collegheremo ai dati usando la proprietà ItemSource:

image

Ottenendo a runtime il seguente risultato:

image

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.

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  impostiamo anche la specifica proprietà della DataGrid che ci permette di mostrare la RowDetails nel momento in cui la riga viene selezionata:

image

Il risultato ottenuto a runtime sarà il seguente:

image

Oltre al campo Image, possiamo anche direttamente inserire un MediaElement e riprodurre il direttamente il video.

image

image

Agendo con altri template è possibile personalizzare completamente la griglia così come qualunque altro controllo adattandola come vogliamo alle nostre esigenze grafiche.

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.

image

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. 

All'interno dell'applicazione web di test aggiungiamo un modello LINQ To Sql  per accedere alla tabella Customers del database Northwind :

image

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:

image

Impostiamo la specifica proprietà che ci consente di rendere serializzabili le classi generate da Linq To Sql:

image

Aggiungiamo un servizio di tipo WCF al nostro progetto:

image

Dove implementiamo la seguente interfaccia per estrarre l'elenco dei clienti dal database customers che sono in una specifica città:

image

Implementiamo l'interfaccia sul servizio ed impostiamo con LINQ la query per estrarre i clienti in base al parametro selezionato:

image

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:

image

Lato SL2 implementiamo una semplice interfaccia per l'invio della richiesta al servizio e la visualizzazione della risposta:

image

Per poter agganciare il servizio, dal progetto SL2 usiamo la classica add service reference, selezionando il servizio WCF :

image

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:

image

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:

image

Completando il nostro esempio:

image

Per approfondire questo aspetto vi consiglio :  http://msdn2.microsoft.com/en-us/library/cc296254(VS.95).aspx

In SL2 avremo a disposizione anche i serializzatori JSON . Al link  http://code.msdn.microsoft.com/SilverlightWS   trovate alcuni esempi del supporto JSON su cui il team di sviluppo sta lavorando :

image

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.

image

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.

Per chi volesse cominciare a provare Silverlight 2 suggerisco i seguenti link:

- http://silverlight.net/GetStarted/#betajump dove trovate i link per installare il Runtime , le estensioni per Visual Studio 2008 e la versione di Expression Blend per SL2

- http://silverlight.net/learn/tutorials.aspx    tutorial sul Silverlight 2

- http://silverlight.net/learn/labs.aspx .    laboratori sulle nuove funzionalità di Silverlight 2

 

Al link http://silverlight.net/Quickstarts/Remote/default.aspx trovate un quickstart sugli argomenti trattati.

by Giuseppe Guerrasio | 3 Comments

Silverlight e le nuove interfacce per i Servizi Finanziari

image Normalmente si è portati a pensare che la costruzione di interfacce innovative e ricche di contenuti, sia una tematica riservata al mondo dell'intrattenimento . In realta la possibilità di sfruttare le potenzialità delle nuove tecnologie per lo sviluppo di interfacce RIA (Rich Interactive Application) può essere effettuato a vantaggio di qualunque tipologia di applicazione, permettendo di costruire siti che consentono di aprire scenari completamente nuovi, contribuendo a migliorare significativamente anche servizi come la Banca Online. Un bell'esempio di quello che è possibile fare in questo settore è rappresentato dalla applicazione demo mostrata alcuni giorni fà alla Financial Services Developers Conference in NY.

Si tratta di una demo che illustra un 'mock-up' di esempio di un sito finanziario sviluppato in Silverlight 2 che potete vedere online in questo sito . Caratteristiche interessanti di Silverlight 2 vengono combinate insieme all'interno di questo esempio, video e grafici interattivi, drag&drop , codice client compilato per calcoli , utilizzo di web service,  dimostrando le potenzialità anche in questo tipo di scenari.

Un video di introduzione alla demo lo trovate su questo silverlight streaming video  e a quest'altro link trovate un documento che descrive gli step dello scenario demo.

Il codice sorgente dell'esempio lo potete scaricare qui, al momento è un porting dalla versione 1.1 di Silverlight  e  verrà a breve pubblicata una nuova versione che sarà anche inserita nella gallery su Silverlight.net . Link al blog di Jaime Roudriguez che ha pubblicato la notizia .

by Giuseppe Guerrasio | 3 Comments

Windows LiveID e WS-Federation: la base per un mondo S+S

Una delle più interessanti possibilità di Internet che oramai diamo per scontato è rappresentata dal fatto di avere un unico protocollo di rete unificato che , di fatto, garantisce la possibilità a qualunque macchina di poter colloquiare con qualunque altra macchina collegata alla rete. Anche a livello di applicazioni, la standardizzazione del Web e dei suoi protocolli come meccanismo di esposizione e condivisione di informazioni ha reso possibile la costruzione di una enorme quantità di applicazioni e di siti , raggiungibili attraverso modalità completamente standardizzate. Uno degli aspetti che resta ancora complesso e che comporta  una notevole difficoltà nell'integrazione tra i siti e nell'utilizzo delle risorse esposte su Internet è rappresentato dagli aspetti collegati alla sicurezza . Siamo ancora in presenta di una ampia gamma di differenti modalità di autenticazionzione ed autorizzazione, non integrabili tra loro con semplicità, che costringento utenti ed applicazioni a gestire differenti modalità di autenticazione, impedendo di fatto la semplice costruzione di applicazioni che possano condividere e aggregare servizi offerti da siti differenti, frenando la possibilità di far evolvere Internet in una vera e propria piattaforma applicativa. Per materializzare la visione del Sofware + Service e rendere di fatto Internet una piattaforma di servizi componibili con il software locale alle nostre reti aziendali o di altri siti o servizi web, o  direttamente utilizzabile on line come servizio, avere una piattaforma comune per i meccanismi di sicurezza e autorizzazione costituisce un vincolo di base.

Tra le princiopali iniziative portate avanti da un ampia gamma di vendor tra cui spiccano Microsoft ed IBM, per risolvere questa problematica ci sono le proposte di standard collegate a WS-Security. Per quanto riguarda Microsoft oltre alla collaborazione negli enti di standardizzazione per la proposizione degli standard , l'obiettivo   degli ultimi anni è stato quello di lavorare in tutti i prodotti, tecnologie  e servizi per applicare realmente  gli   standard proposti. In particolare nell'area dell'identity management un ampia iniziativa è stata messa in campo con l'identity metasystem e le sue 7 leggi fondamentali che per l'appunto mirano a garantire il massimo dell'interoperabilità e della semplicità di utilizzo da parte degli utenti di questi aspetti che sono fondamentali per garantire la possibilità di far evolvere Internet in una vera e propia piattaforma applicativa. Una componente importante della piattforma di servizi è rappresentata da Window Live Id che fornisce la base per i meccanismi di Autenticazione ed Autorizzazione per l'intera piattaforma di servizi on line di Microsoft e dei siti affiliati. 

In un precedente post ho illustrato gli elementi fondamentali per poter agganciare l'autenticazione di Windows LiveID ad un nostro sito web utilizzandolo come provider di autenticazione. Nel post avevo anche indicato la possibilità ed il supporto di questo servizio ai meccanismi di federazione con altri sistemi di autenticazione attraverso WS-Federation , passo importante per materializzare il Digital Identity Metasystem , ed ho ricevuto una serie di richieste di approfondimento su questo aspetto da molte persone. WS-Federation è uno standard per permettere la federazione di sistemi di autenticazione differenti , consentendo di semplificare l'integrazione delle funzioni di autenticazione ed autorizzazione tra applicazioni e servizi che sono di aziende differenti o che comunque utilizzano differenti meccanismi e servizi di per gli aspetti di accesso, permettendo di implementare meccanismi di single sign-on tra sistemi di autentizione eterogenei .

WS-Federation pervede due profili: il profilo che prevede l'autenticazione di client Web di tipo Browser che viene genericamente indicato come profilo passivo ed  il profilo attivo in cui abbiamo dei client di tipo diverso dal browser (smart client ) che accedono a dei web service che richiedono una autenticazione. Il profilo passivo di WS-Federation (quello riferito all'accesso via browser alle applicazioni Web) è anche supportato  direttamente da active directory da Windows 2003 R2 in poi  con gli Active Directory Federation Service che  permettono la federazione di un dominio windows con altri sistemi che supportano lo stesso standard.

Windows Live ID è un Identity Provider nell'accezione prevista da WS-Trust e WS-Security. I siti ed i web service che vogliono utilizzare Windows Live ID come provider di autenticazione vengono genericamente indicati come Resource Provider (RP). Tutti i siti ed i servizi offerti da Microsoft utilizzano Windows Live ID come provider di autenticazione ed è possibile per qualunque sito o servizio Intenet, utilizzare Windows Live ID come provider di autenticazione, senza la necessità di condividere le informazioni di profilo degli utenti con il servizio. Nel momento in cui un client richiede una risorsa offerta da un resource provider che utilizza Live Id come provider di autenticazione , il client viene rediretto sul servizio di Live Id che provvede a verificare e credenziali del client chiamante ed a fornire le informazioni necessarie per accedere al servizio. Come abbiamo visto nel post precedete Live Id supporta la protezione di resource provider web sia nel caso di accesso da parte di client di tipo Browser che accede ad un sito web protetto sia il caso di smart client che accedono ad un web service. Le informazioni sull'integrazione dei due tipi di scenario sono contenute rispettivamente nel Web Client SDK e nel Smart Client SDK.   Schematizzato ad alto livello il processo di autenticazione può essere rappresentato come di seguito:

  image

 

1- Il client richiede accesso al Resource Provider

2- il client viene rediretto sull'Identity Provider e gli viene fornito un "security token" per l'accesso al resource provider

3- Il client torna dal resource provider presentando il security token,  ottenendo l'accesso

 

Attraverso la federazione è possibile gestire lo scenario in cui Windows Live Id si integra con un altro Identity Provider (IP), permettendo di realizzare una "relazione di fiducia" (Trust) tra i due IP che permetta di rimappare l'identità autenticata da un IP su un' identità gestita dall'altro. A seconda delle necessità e degli accordi il Trust pò essere effettuato in modo unidirezionale o bidirezionale. Con questo scenario un utente che ha le credenziali  per autenticarsi su un IP , per accedere alle risorse protette da un altro IP può farlo senza la necessità di creare e gestire una nuova identità presso il secondo IP. Cerco di chiarire questa possibilità con un esempio. Proviamo ad  immaginare un ipotetico sito Internet alfa.com che dispone già di un suo IP che è ingrado di autenticare gli utenti che accedono al sito che verranno identificati come nomeutente@alfa.com  . Il sito alfa.com vuole introdurre alcuni controlli di Windows Live e integrarli all'interno delle pagine del sito e vuole fare in modo che gli utenti che sono già autenticati dal suo IP non debbano inserire le credenziali di Windows Live ID per accedere ai servizi, ma possano essere direttamente riconosciuti con le credenziali di alfa.com anche quando, ad esempio, accedono alla cassetta postale su Windows Live Mail . La federazione e lo standard WS-Federation rendono possibile proprio la gestione di questo tipo di scenari facendo in modo che le credenziali autenticate da un IP possano essere rimappate su un altro IP.

Lo scenario non si limita ovviamente ad un sito, ma è possibile ad esempio federare direttamente l'identity provider di un azienda con Live Id garantendo la possibilità per questa azienda di integrare le sue applicazioni con i servizi di Microsoft ottenendo un modello di sicurezza affidabile ed omogeneo con estrema semplicità, senza costringere gli utenti a gestire differenti identità. Ad esempio gli utenti interni potrebbero avvalersi di Windows Live Mail utilizzando direttamente le credenziali con cui si collegano alla rete interna, senza doversi autenticare nuovamente con credenziali diverse per accedere a questi servizi. Gli utenti della Intranet potrebbero usare alcune funzionalità di Office Live , senza doversi riautenticare, e così via per tutti gli altri servizi che sono disponibili nell'offerta online, rendendo di fatto possibile materializare la visione di internet come piattaforma che può essere combinata con i software locale alle reti  ad al device client. 

Nel caso del nostro sito di esempio alfa.com immaginiamo di avere un utente che si collega direttamente alla sua e-mail su Windows Live mail. Il resource provider di Live Mail non riconosce l'utente e lo indirizza verso l'IP di Windows Live ID , responsabile del riconoscimento degli utenti per il sito di Live Mail. All'utente viene presentata l'interfaccia per l'autenticazione e l'utente ha la possibilità di selezionare un differente IP specificando il suo nome di utente numeutente@alfa.com . A questo punto Windows Live ID redirige la richiesta sul provider di autenticazione con cui è federato di alfa.com dove l'utente può essere autenticato con il meccanismo previsto da alfa.com. Ottenuta l'autenticazione , la richiesta torna su Windows Live Id che estrae e verifica il security token rilasciato da alfa.com e cifrato con la chiave privata del certificato digitale di alfa.com e la rimappa su un utente Windows Live Id, rilasciando il security token opportuno con cui il browser client attraverso una redirect si ripresenta da Windows Live Mail , ottenendo l'accesso.

 

image

 

 

1- Il client richiede l'accesso ad una risorsa su Windows Live ID

2- Viene rediretto su Live Id e viene presentata l'interfaccia per l'autenticazione e l'utente ha la possibilità di selezionare un differente IP specificando il suo nome di utente numeutente@alfa.com

3- La richiesta viene rediretta su alfa.com dove l'utente può essere autenticato con il meccanismo previsto da alfa.com

4 - La richiesta viene rediretta su Windows Live ID che estrae e verifica il security token rilasciato da alfa.com e cifrato con la chiave privata del certificato digitale di alfa.com e la rimappa su un utente Windows Live Id, rilasciando il security token opportuno

5- client attraverso una redirect si ripresenta da Windows Live Mail , ottenendo l'accesso.

 

Abbiamo schematizzato il comportamente in caso di client Browser (profilo passivo ) , un approccio simile si realizza anche nel caso di profili attivi ovvero smart client che accedono a Web Service.

Per chi volesse approfondire l'argomento segnalo un articolo pubblicato di recente su MSDN che introduce le possibilità di federazione  di LiveId: Windows Live ID Federation da leggere dopo il documento di

Introduzione a Windows Live ID

by Giuseppe Guerrasio | 1 Comments

Filed under: , ,

Sql Server Data Services : il database come servizio, un altro esempio di S+S

Tra le tantissime novità annunciate al MIX 08 ( per chi volesse vedere le sessioni dell'evento http://sessions.visitmix.com/  ) una delle più interessanti nell'ottica del mondo S+S/SaaS e di tutte le implicazioni che questo modello comporta per le applicazioni e per le aziende e per i produttori di software è rappresentata dal nuovo servizio Sql Server Data Services.

Si tratta di un vero e proprio Data Service  che viene incontro sia alle esigenze delle applicazioni web di cui parlavo nel post su ADO.NET Data Service sia alle esigenze di aziende di diverse dimensioni relativamente alla gestione dei dati.

Il servizio offre la possibilità di disporre di data storage, accessibili direttamente online su Internet,  progressivamente scalabili su richiesta, senza dover installare nel nostro data center rilevanti quantità di Hardware che poi vanno gestite e manutenute.

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.

La sessione specifica di MIX08 sull'argomento tenuta da Nigel Ellis (Architect del servizio ) sarà a breve on line sempre a http://sessions.visitmix.com/ 

Interessante sull'argomento il post di  Eugenio Pace - Software as a Service Architecture Guidance 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.

Per chi vuole provare la beta : http://www.microsoft.com/sql/dataservices/default.mspx

Blog del team :http://blogs.msdn.com/ssds/

FAQ del servizio:http://www.microsoft.com/sql/dataservices/faq.mspx

by Giuseppe Guerrasio | 0 Comments

Filed under: , , , , , ,