SlideShare a Scribd company logo
1 of 27
Sviluppo di applicazioni RIA con Silverlight 2 e WCF Fabrizio Bernabei http://dotnetumbria.org/blogs/bernabei Lorenzo Maiorfi http://dotnet.innovactive.it
RIA – Ma c’era bisogno di un’altra sigla?! Ecco cosa ci dice Wikipedia: Rich Internet Applications (RIAs) are web applications that have the features and functionality of traditional desktop applications. RIAs typically form a stateful client application with a separate services layer on the backend. RIAs typically do the following: run in a web browser, or do not require software installation run locally in a secure environment called a sandbox
Interfacce Utente “Ricche”
Applicazioni RIARIA vs Desktop vs Web vs Smart-Client IT and Security Process Smart  Client Desktop Classic Web RIA User-Experience (grafica, interazione, responsività, “push”, ecc.) Predisposizioneallarealizzazionedilogica business complessa Portabilità (cross-browser, cross-platform, cross-version, cross-age) Costi di sviluppo, test, manutenzione Deployment
La nostra “Pagella”
Le keyword della modularità del software nel tempo… 1980s 2000s 1990s Object-Oriented Service-Oriented Component-Oriented Polimorfismo Ereditarietà Incapsulamento Messaggi Contratti+Schemi+Policy Interoperabilità Integrazione Binaria Delocalizzazione Metadati
SOAService Oriented Applications Quattro Leggi Sicurezza Sessioni Transazioni Espliciti solo iconfini Completaautonomia Schemi e contratti Interoperabilità via policy Concorrenza Eccezioni Affidabilità
Silverlight 2.0 Plug-in cross-browser e cross-platform Runtime "managed" indipendente (subset di .NET 3.5) Gira in una sua sandbox con isolatedstorage Motore rendering vettoriale Motore per le animazioni
Silverlight 2.0 Separazione interfaccia/logica con XAML (dichiarativo) Ricca libreria controlli inclusa Interoperabilità con DOM e scripting della pagina “host” Networking e supporto al "consumo" di servizi Tanto altro (streaming, DLR, Deep Zoom, ecc.)
Cosa serve per iniziare Visual Studio 2008 (Tutte le versioni, Express compresa) Silverlight 2 Tools for Visual Studio 2008 Silverlight 2 developer runtime (Windows) VS Tools VS Silverlight Project Templates SDK documentationforintegrated help  SDK (non-core) Controls (DataGrid, Date controls, Tabcontrols)  ASP.NET Server Controls (asp:Media and asp:Silverlight)
Hello World Silverlight Demo
Altri strumenti utili ExpressionBlend 2 SP1 Silverlight Toolkit (controlli MS su Codeplex) XAML Power Toys DeepZoom Composer Eclipse Tools for Microsoft Silverlight
Com’è fatto un Servizio WCF ? 1Host a scelta tra: Windows Service, WinForms, Console Application, IIS, WAS (su Windows Vista® e Windows Server 2008®), “Dublin” 1 o piùTipi Concreti che implementano altrettanti Servizi 0 o piùdirettive che descrivono il “comportamento” del servizio (Per ciascun tipo concreto) 1 o piùEndpoint Ehm…ah sì, un Endpoint…ovvero?
Cos’è un Endpoint WCF ? C B A C B A C B A A B C Definisce l’interfaccia di un servizio ”ABC” di un servizio WCF Address – dove è esposto Binding – come è esposto Contract – cosa è esposto Via codice o configurazione Service
Hello World WCF Demo
Integrazione WCF/Silverlight 2.0 Funziona solo con Profilo BasicHttpBinding (nessun supporto a WS-*) Sicurezza a livello di trasporto (SSL) e non di messaggio Chiamate Cross-domain autorizzate dal chiamante Comunicazioni Asincrone Ma supporta anche API REST Serializzazione/deserializzazione POX/JSON DataContractSerializer (serializza anche grafi con cicli)
Solo chiamate Asincrone! Ovvero: “Grazie, la richiamiamo noi…” Client Silverlight Proxy Servizio WCF BeginFaiQualcosa(p1,p2,ref p3) rv=ar.EndFaiQualcosa(ref p3, out p4) Callback(IAsyncResultar)
Silverlight 2 + WCF Demo
E’ uno strumento che consente di implementare una interfaccia REST per un Entity Data Model REST è l’acronimo di Representational State Transfer Un’interfaccia REST fornisce un URL per ogni risorsa Utilizza i metodi http POST/GET/PUT/DELETE sulle risorse Il miglior esempio di REST è il web! API REST in delicious, flickr, google, ecc. ADO.NET Data Services
Mappando le comuni operazioni di un Database abbiamo CREATE 		= 	POST READ 			= 	GET UPDATE 		= 	PUT DELETE 		= 	DELETE PUT può essere MERGE PUT Da CRUD a PGPD
Una pagina web è la “rappresentazione” di una Risorsa Forme di rappresentazione diverse per la stessa risorsa HTML per un essere umano XML per un software ADO.NET Data Services (aka “Astoria”) rappresenta come Javascript Object Notation (JSON) Atom Pub La scelta della rappresentazione avviene per mezzo di un header HTTP-Accept Rappresentazione delle risorse
ADO.NET Data Services è basato su WCF Un DataService è una classe che estende DataService<T> “T” può essere un ObjectContext, Un DataContext o una classe custom Un DataService espone le proprietà che implementano IQueryable Può esporre anche dei metodi custom Cos’è un DataService
Ma il RAD dov’è? Caso d'uso IMDB Tutti i film del mondo 25 milioni di record Attori, registi, scrittori, compositori Trame, citazioni, errori, curiosità, edizioni, rating, ecc. DB liberamente scaricabile in formato testuale Importato in Microsoft SQL Server 2008 Client Silverlight per l’interrogazione con “Astoria”
Applicazione IMDB Demo
Ringraziamenti Andrea Cruciani e Paolo Possanzini Tutti gli sponsor DotNetUmbria.org Luca Paternoster (movie snippet) Lo staff di IMDB Innovactive (per il tempo rubato al lavoro) Microsoft per il supporto all’evento
Riferimenti

More Related Content

Similar to MS Days 08 Applicazioni RIA con Silverlight 2 e WCF

Il mercato SOA: futuro e prospettive
Il mercato SOA: futuro e prospettiveIl mercato SOA: futuro e prospettive
Il mercato SOA: futuro e prospettiveEmanuele Della Valle
 
WPF & LINQ: VB T&T Community After Hour @ Microsoft Days 08
WPF & LINQ: VB T&T Community After Hour @ Microsoft Days 08WPF & LINQ: VB T&T Community After Hour @ Microsoft Days 08
WPF & LINQ: VB T&T Community After Hour @ Microsoft Days 08Alessandro Del Sole
 
Win05 accesso ai dati in win 8
Win05   accesso ai dati in win 8Win05   accesso ai dati in win 8
Win05 accesso ai dati in win 8DotNetCampus
 
Asynchronous Java ME and XML
Asynchronous Java ME and XMLAsynchronous Java ME and XML
Asynchronous Java ME and XMLAndrea Castello
 
Rendere flessibili e trasformare architetture IT di vecchio tipo: passaggio d...
Rendere flessibili e trasformare architetture IT di vecchio tipo:passaggio d...Rendere flessibili e trasformare architetture IT di vecchio tipo:passaggio d...
Rendere flessibili e trasformare architetture IT di vecchio tipo: passaggio d...Emanuele Della Valle
 
Infrastrutture web e Ruby on Rails
Infrastrutture web e Ruby on RailsInfrastrutture web e Ruby on Rails
Infrastrutture web e Ruby on Railsguestfe3e15
 
Applicazioni RESTful con ASP.NET Web Api
Applicazioni RESTful con ASP.NET Web ApiApplicazioni RESTful con ASP.NET Web Api
Applicazioni RESTful con ASP.NET Web ApiPietro Libro
 
Adobe: Stefano Longo, Web 2.0: come le imprese se ne possono avvantaggiare
Adobe: Stefano Longo, Web 2.0: come le imprese se ne possono avvantaggiareAdobe: Stefano Longo, Web 2.0: come le imprese se ne possono avvantaggiare
Adobe: Stefano Longo, Web 2.0: come le imprese se ne possono avvantaggiareManuela Moroncini
 
Azure WebSites for Developers
Azure WebSites for DevelopersAzure WebSites for Developers
Azure WebSites for DevelopersLuca Milan
 
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi Italia
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi ItaliaDifferenze tra Windows Server 2012 R2 su e Server 2016 Yashi Italia
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi ItaliaYashi Italia
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Whymca
 
SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDLuca Masini
 
Smau Padova 2011 Leonardo Torretta - virtualizzazione
Smau Padova 2011 Leonardo Torretta - virtualizzazioneSmau Padova 2011 Leonardo Torretta - virtualizzazione
Smau Padova 2011 Leonardo Torretta - virtualizzazioneSMAU
 
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...Marco Parenzan
 
Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net Leonardo Alario
 
Meetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web AppMeetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web Appdotnetcode
 
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web Appdotnetcode
 
Systematica Zabbix IBM Power #reloop2
Systematica Zabbix IBM Power #reloop2 Systematica Zabbix IBM Power #reloop2
Systematica Zabbix IBM Power #reloop2 Dario Dall'Omo
 
Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?
Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?
Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?fcrippa
 

Similar to MS Days 08 Applicazioni RIA con Silverlight 2 e WCF (20)

Il mercato SOA: futuro e prospettive
Il mercato SOA: futuro e prospettiveIl mercato SOA: futuro e prospettive
Il mercato SOA: futuro e prospettive
 
WPF & LINQ: VB T&T Community After Hour @ Microsoft Days 08
WPF & LINQ: VB T&T Community After Hour @ Microsoft Days 08WPF & LINQ: VB T&T Community After Hour @ Microsoft Days 08
WPF & LINQ: VB T&T Community After Hour @ Microsoft Days 08
 
Win05 accesso ai dati in win 8
Win05   accesso ai dati in win 8Win05   accesso ai dati in win 8
Win05 accesso ai dati in win 8
 
Wcf data services
Wcf data servicesWcf data services
Wcf data services
 
Asynchronous Java ME and XML
Asynchronous Java ME and XMLAsynchronous Java ME and XML
Asynchronous Java ME and XML
 
Rendere flessibili e trasformare architetture IT di vecchio tipo: passaggio d...
Rendere flessibili e trasformare architetture IT di vecchio tipo:passaggio d...Rendere flessibili e trasformare architetture IT di vecchio tipo:passaggio d...
Rendere flessibili e trasformare architetture IT di vecchio tipo: passaggio d...
 
Infrastrutture web e Ruby on Rails
Infrastrutture web e Ruby on RailsInfrastrutture web e Ruby on Rails
Infrastrutture web e Ruby on Rails
 
Applicazioni RESTful con ASP.NET Web Api
Applicazioni RESTful con ASP.NET Web ApiApplicazioni RESTful con ASP.NET Web Api
Applicazioni RESTful con ASP.NET Web Api
 
Adobe: Stefano Longo, Web 2.0: come le imprese se ne possono avvantaggiare
Adobe: Stefano Longo, Web 2.0: come le imprese se ne possono avvantaggiareAdobe: Stefano Longo, Web 2.0: come le imprese se ne possono avvantaggiare
Adobe: Stefano Longo, Web 2.0: come le imprese se ne possono avvantaggiare
 
Azure WebSites for Developers
Azure WebSites for DevelopersAzure WebSites for Developers
Azure WebSites for Developers
 
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi Italia
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi ItaliaDifferenze tra Windows Server 2012 R2 su e Server 2016 Yashi Italia
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi Italia
 
Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini Sviluppo di servizi REST per Android - Luca Masini
Sviluppo di servizi REST per Android - Luca Masini
 
SVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROIDSVILUPPO DI SERVIZI REST PER ANDROID
SVILUPPO DI SERVIZI REST PER ANDROID
 
Smau Padova 2011 Leonardo Torretta - virtualizzazione
Smau Padova 2011 Leonardo Torretta - virtualizzazioneSmau Padova 2011 Leonardo Torretta - virtualizzazione
Smau Padova 2011 Leonardo Torretta - virtualizzazione
 
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
2015.01.09 - Principi del Cloud Computing e migrazione delle applicazioni mod...
 
Writing apps for android with .net
Writing apps for android with .net Writing apps for android with .net
Writing apps for android with .net
 
Meetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web AppMeetup Fluent Design e Progressive Web App
Meetup Fluent Design e Progressive Web App
 
Meetup Progressive Web App
Meetup Progressive Web AppMeetup Progressive Web App
Meetup Progressive Web App
 
Systematica Zabbix IBM Power #reloop2
Systematica Zabbix IBM Power #reloop2 Systematica Zabbix IBM Power #reloop2
Systematica Zabbix IBM Power #reloop2
 
Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?
Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?
Virtualizzazione, cluster, J2EE: best practices tutte da rivedere?
 

More from Fabrizio Bernabei

.NET & Linux: la strana coppia - DotNetDay 2018
.NET & Linux: la strana coppia - DotNetDay 2018.NET & Linux: la strana coppia - DotNetDay 2018
.NET & Linux: la strana coppia - DotNetDay 2018Fabrizio Bernabei
 
Introduzione a React Native - Mokapp 2017
Introduzione a React Native - Mokapp 2017Introduzione a React Native - Mokapp 2017
Introduzione a React Native - Mokapp 2017Fabrizio Bernabei
 
Mokapp2014 Lab Universal App
Mokapp2014 Lab Universal AppMokapp2014 Lab Universal App
Mokapp2014 Lab Universal AppFabrizio Bernabei
 

More from Fabrizio Bernabei (6)

Sviluppare SPA con Vue
Sviluppare SPA con VueSviluppare SPA con Vue
Sviluppare SPA con Vue
 
Sviluppare SPA con Vue.js
Sviluppare SPA con Vue.jsSviluppare SPA con Vue.js
Sviluppare SPA con Vue.js
 
.NET & Linux: la strana coppia - DotNetDay 2018
.NET & Linux: la strana coppia - DotNetDay 2018.NET & Linux: la strana coppia - DotNetDay 2018
.NET & Linux: la strana coppia - DotNetDay 2018
 
Introduzione a React Native - Mokapp 2017
Introduzione a React Native - Mokapp 2017Introduzione a React Native - Mokapp 2017
Introduzione a React Native - Mokapp 2017
 
ASP.NET Core 1.0
ASP.NET Core 1.0ASP.NET Core 1.0
ASP.NET Core 1.0
 
Mokapp2014 Lab Universal App
Mokapp2014 Lab Universal AppMokapp2014 Lab Universal App
Mokapp2014 Lab Universal App
 

MS Days 08 Applicazioni RIA con Silverlight 2 e WCF

  • 1.
  • 2. Sviluppo di applicazioni RIA con Silverlight 2 e WCF Fabrizio Bernabei http://dotnetumbria.org/blogs/bernabei Lorenzo Maiorfi http://dotnet.innovactive.it
  • 3. RIA – Ma c’era bisogno di un’altra sigla?! Ecco cosa ci dice Wikipedia: Rich Internet Applications (RIAs) are web applications that have the features and functionality of traditional desktop applications. RIAs typically form a stateful client application with a separate services layer on the backend. RIAs typically do the following: run in a web browser, or do not require software installation run locally in a secure environment called a sandbox
  • 5. Applicazioni RIARIA vs Desktop vs Web vs Smart-Client IT and Security Process Smart Client Desktop Classic Web RIA User-Experience (grafica, interazione, responsività, “push”, ecc.) Predisposizioneallarealizzazionedilogica business complessa Portabilità (cross-browser, cross-platform, cross-version, cross-age) Costi di sviluppo, test, manutenzione Deployment
  • 7. Le keyword della modularità del software nel tempo… 1980s 2000s 1990s Object-Oriented Service-Oriented Component-Oriented Polimorfismo Ereditarietà Incapsulamento Messaggi Contratti+Schemi+Policy Interoperabilità Integrazione Binaria Delocalizzazione Metadati
  • 8. SOAService Oriented Applications Quattro Leggi Sicurezza Sessioni Transazioni Espliciti solo iconfini Completaautonomia Schemi e contratti Interoperabilità via policy Concorrenza Eccezioni Affidabilità
  • 9. Silverlight 2.0 Plug-in cross-browser e cross-platform Runtime "managed" indipendente (subset di .NET 3.5) Gira in una sua sandbox con isolatedstorage Motore rendering vettoriale Motore per le animazioni
  • 10. Silverlight 2.0 Separazione interfaccia/logica con XAML (dichiarativo) Ricca libreria controlli inclusa Interoperabilità con DOM e scripting della pagina “host” Networking e supporto al "consumo" di servizi Tanto altro (streaming, DLR, Deep Zoom, ecc.)
  • 11. Cosa serve per iniziare Visual Studio 2008 (Tutte le versioni, Express compresa) Silverlight 2 Tools for Visual Studio 2008 Silverlight 2 developer runtime (Windows) VS Tools VS Silverlight Project Templates SDK documentationforintegrated help SDK (non-core) Controls (DataGrid, Date controls, Tabcontrols) ASP.NET Server Controls (asp:Media and asp:Silverlight)
  • 13. Altri strumenti utili ExpressionBlend 2 SP1 Silverlight Toolkit (controlli MS su Codeplex) XAML Power Toys DeepZoom Composer Eclipse Tools for Microsoft Silverlight
  • 14. Com’è fatto un Servizio WCF ? 1Host a scelta tra: Windows Service, WinForms, Console Application, IIS, WAS (su Windows Vista® e Windows Server 2008®), “Dublin” 1 o piùTipi Concreti che implementano altrettanti Servizi 0 o piùdirettive che descrivono il “comportamento” del servizio (Per ciascun tipo concreto) 1 o piùEndpoint Ehm…ah sì, un Endpoint…ovvero?
  • 15. Cos’è un Endpoint WCF ? C B A C B A C B A A B C Definisce l’interfaccia di un servizio ”ABC” di un servizio WCF Address – dove è esposto Binding – come è esposto Contract – cosa è esposto Via codice o configurazione Service
  • 17. Integrazione WCF/Silverlight 2.0 Funziona solo con Profilo BasicHttpBinding (nessun supporto a WS-*) Sicurezza a livello di trasporto (SSL) e non di messaggio Chiamate Cross-domain autorizzate dal chiamante Comunicazioni Asincrone Ma supporta anche API REST Serializzazione/deserializzazione POX/JSON DataContractSerializer (serializza anche grafi con cicli)
  • 18. Solo chiamate Asincrone! Ovvero: “Grazie, la richiamiamo noi…” Client Silverlight Proxy Servizio WCF BeginFaiQualcosa(p1,p2,ref p3) rv=ar.EndFaiQualcosa(ref p3, out p4) Callback(IAsyncResultar)
  • 19. Silverlight 2 + WCF Demo
  • 20. E’ uno strumento che consente di implementare una interfaccia REST per un Entity Data Model REST è l’acronimo di Representational State Transfer Un’interfaccia REST fornisce un URL per ogni risorsa Utilizza i metodi http POST/GET/PUT/DELETE sulle risorse Il miglior esempio di REST è il web! API REST in delicious, flickr, google, ecc. ADO.NET Data Services
  • 21. Mappando le comuni operazioni di un Database abbiamo CREATE = POST READ = GET UPDATE = PUT DELETE = DELETE PUT può essere MERGE PUT Da CRUD a PGPD
  • 22. Una pagina web è la “rappresentazione” di una Risorsa Forme di rappresentazione diverse per la stessa risorsa HTML per un essere umano XML per un software ADO.NET Data Services (aka “Astoria”) rappresenta come Javascript Object Notation (JSON) Atom Pub La scelta della rappresentazione avviene per mezzo di un header HTTP-Accept Rappresentazione delle risorse
  • 23. ADO.NET Data Services è basato su WCF Un DataService è una classe che estende DataService<T> “T” può essere un ObjectContext, Un DataContext o una classe custom Un DataService espone le proprietà che implementano IQueryable Può esporre anche dei metodi custom Cos’è un DataService
  • 24. Ma il RAD dov’è? Caso d'uso IMDB Tutti i film del mondo 25 milioni di record Attori, registi, scrittori, compositori Trame, citazioni, errori, curiosità, edizioni, rating, ecc. DB liberamente scaricabile in formato testuale Importato in Microsoft SQL Server 2008 Client Silverlight per l’interrogazione con “Astoria”
  • 26. Ringraziamenti Andrea Cruciani e Paolo Possanzini Tutti gli sponsor DotNetUmbria.org Luca Paternoster (movie snippet) Lo staff di IMDB Innovactive (per il tempo rubato al lavoro) Microsoft per il supporto all’evento
  • 28. © 2008 Microsoft Corporation. All rights reserved. Microsoft, Hyper-V, RemoteApp, Windows logo, Windows Start button, Windows Server Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. All other trademarks are property of their respective owners. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.