SlideShare ist ein Scribd-Unternehmen logo
1 von 19
Template designed by
Rich Internet Application
con Breeze e Knockout
Giorgio Di Nardo
giorgio.dinardo@domusdotnet.org
@akelitz
blogs.ugidotnet.org/akelitz
Template designed by
Template designed by
brought to you by
Template designed by
 Si fa presto a dire Model-View-ViewModel
 Knockout: cosa, perché e come?
 Breeze: cosa, perché e come?
 Scrivere una RIA con Breeze e Knockout
Agenda agile
Template designed by
 Si fa presto a dire Model-View-ViewModel
 Knockout: cosa, perché e come?
 Breeze: cosa, perché e come?
 Scrivere una RIA con Breeze e Knockout
Agenda agile
Template designed by
 Pattern di presentation della
famiglia MV*
 Separation-of-Concerns
 Rompere il legame forte tra i
dati (Model) e la loro
rappresentazione (View) per
mezzo di un terzo soggetto
(ViewModel)
MVVM = Model-View-ViewModel
 Si definiscono e si idratano i
dati (Model) da visualizzare
 Si veicolano i dati attraverso il
ViewModel verso la View
utilizzando un meccanismo di
data-bind che permetta la
gestione bidirezionale degli
aggiornamenti dei dati stessi
 Si definiscono delle operazioni
nel ViewModel per gestire gli
eventi provenienti dalla View
Template designed by
 Model: i dati gestiti dall’applicazione rappresentati sotto
forma di oggetto o array Javascript
 View: la pagina HTML contenente i vari elementi di markup
 ViewModel: un oggetto Javascript che espone i dati (Model)
in un formato «comodo» per l’interfaccia (View) e contiene le
operazioni per rispondere agli eventi da questa generati
MVVM in HTML
Template designed by
 Si fa presto a dire Model-View-ViewModel
 Knockout: cosa, perché e come?
 Breeze: cosa, perché e come?
 Scrivere una RIA con Breeze e Knockout
Agenda agile
Template designed by
 Libreria in Javascript puro per semplificare la creazione in HTML di
applicazioni basate su MVVM
 Caratteristiche principali:
 Binding dichiarativo dei dati nel markup HTML
 Gestione delle dipendenze con aggiornamento automatico nelle due direzioni
 Facilità di estensione delle funzionalità di base
 Compatibile con la maggior parte dei browser (IE 8+, Firefox 2+,
Chrome, …)
 Non sostituisce ma si integra con jQuery
Knockout: cos’è?
Template designed by
 Aiuta ad aumentare la SoC del progetto anche nella parte
storicamente più propensa allo «spaghetti code»
 Consente di gestire in maniera più strutturata e manutenibile
gli elementi e gli eventi del DOM
 Semplifica enormemente i problemi di unit testing della parte
client della nostra applicazione
….
Knockout: perché usarlo?
Template designed by
 Si creano gli oggetti ViewModel e si definiscono al loro
interno le proprietà observable contenenti i dati da mostrare
e le funzioni associate ai comandi scatenabili dalla View
 Si aggiungono gli attributi data-bind al markup della pagina
HTML
 Si attiva il binding con una chiamata al metodo
ko.applyBinding
Knockout: come usarlo?
Scopriamo Knockout
in 5 minuti
Template designed by
 Si fa presto a dire Model-View-ViewModel
 Knockout: cosa, perché e come?
 Breeze: cosa, perché e come?
 Scrivere una RIA con Breeze e Knockout
Agenda agile
Template designed by
 Libreria in Javascript puro per semplificare la gestione dei dati lato
client in applicazioni RIA
 Caratteristiche principali:
 Potente motore di query dei dati con possibilità di filtri, ordinamenti e paginazione
 Tracciatura delle modifiche con gestione delle dipendenze, notifica di eventi e validazione
 Caching lato client dei dati per garantire una UI più responsiva
 Compatibile con la maggior parte dei browser (IE 8+, Firefox 3+,
Chrome 5+, Safari 4+)
 Disegnato su Web API ma compatibile con ogni servizio OData
Breeze: cos’è?
Template designed by
 Aiuta ad costruire applicazioni responsive alleggerendo dal
carico della gestione delle entità lato client
 Supporta out-of-box i principali framework di data binding
client-side (Knockout, Angular, Backbone)
 Semplifica enormemente i problemi di unit testing della parte
client della nostra applicazione
….
Breeze: perché usarlo?
Template designed by
 Si crea un oggetto EntityManager per accedere ai dati e
gestire la cache locale
 Si fornisce la struttura del modello di dominio presente lato
server per mezzo di metadati generati automaticamente o
configurati manualmente
 Si recuperano le informazioni dal server mediante un oggetto
EntityQuery e una sintassi immediata per impostare filtri,
ordinamento e paginazione
Breeze: come usarlo?
Template designed by
 Si fa presto a dire Model-View-ViewModel
 Knockout: cosa, perché e come?
 Breeze: cosa, perché e come?
 Scrivere una RIA con Breeze e Knockout
Agenda agile
Template designed by
• Creare un nuovo progetto
ASP.NET Web Application
vuoto
• Aggiungere i pacchetti
NuGet di Breeze e
Knockout
Preparare
il progetto
• Definire il modello e
gestire la persistenza
• Creare un Web API che
esponga le entità di
dominio
Scrivere
il servizio • Creare la struttura con
HTML5 e CSS3
• Utilizzare MVVM per
separare i dati dalla UI
• Utilizzare Knockout per il
Data Binding
Disegnare
l’applicazione
• Utilizzare Breeze per
l’accesso ai dati
• EntityManager come proxy
del servizio Web API
Consumare
i dati
Scrivere una RIA con Breeze e Knockout
E ora…
sporchiamoci le mani!
Template designed by
brought to you by

Weitere ähnliche Inhalte

Andere mochten auch

Sys02 best way to create a share point app
Sys02   best way to create a share point appSys02   best way to create a share point app
Sys02 best way to create a share point appDotNetCampus
 
Cert05 70-487 - developing microsoft azure and web services
Cert05   70-487 - developing microsoft azure and web servicesCert05   70-487 - developing microsoft azure and web services
Cert05 70-487 - developing microsoft azure and web servicesDotNetCampus
 
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
 
Mob02 windows phone 8.1 app development
Mob02   windows phone 8.1 app development Mob02   windows phone 8.1 app development
Mob02 windows phone 8.1 app development DotNetCampus
 
Ag01 agile foundation - dnc14 handouts
Ag01   agile foundation - dnc14 handoutsAg01   agile foundation - dnc14 handouts
Ag01 agile foundation - dnc14 handoutsDotNetCampus
 
Mob04 best practices for windows phone ui design
Mob04   best practices for windows phone ui designMob04   best practices for windows phone ui design
Mob04 best practices for windows phone ui designDotNetCampus
 
Ag03 agile culture - dnc14 handouts
Ag03   agile culture - dnc14 handoutsAg03   agile culture - dnc14 handouts
Ag03 agile culture - dnc14 handoutsDotNetCampus
 
Sys04 share point-yammer_social_collaboration
Sys04   share point-yammer_social_collaborationSys04   share point-yammer_social_collaboration
Sys04 share point-yammer_social_collaborationDotNetCampus
 
Fe04 angular js-101
Fe04   angular js-101Fe04   angular js-101
Fe04 angular js-101DotNetCampus
 
Sys01 creare applicazioni virtuali con microsoft application virtualization...
Sys01   creare applicazioni virtuali con microsoft application virtualization...Sys01   creare applicazioni virtuali con microsoft application virtualization...
Sys01 creare applicazioni virtuali con microsoft application virtualization...DotNetCampus
 
Gam03 facciamo volare il nosro drone
Gam03   facciamo volare il nosro droneGam03   facciamo volare il nosro drone
Gam03 facciamo volare il nosro droneDotNetCampus
 

Andere mochten auch (14)

Sys02 best way to create a share point app
Sys02   best way to create a share point appSys02   best way to create a share point app
Sys02 best way to create a share point app
 
Cert05 70-487 - developing microsoft azure and web services
Cert05   70-487 - developing microsoft azure and web servicesCert05   70-487 - developing microsoft azure and web services
Cert05 70-487 - developing microsoft azure and web services
 
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
 
Mob02 windows phone 8.1 app development
Mob02   windows phone 8.1 app development Mob02   windows phone 8.1 app development
Mob02 windows phone 8.1 app development
 
Cert02 70-410
Cert02   70-410Cert02   70-410
Cert02 70-410
 
Ds04 data quality
Ds04   data qualityDs04   data quality
Ds04 data quality
 
Ag01 agile foundation - dnc14 handouts
Ag01   agile foundation - dnc14 handoutsAg01   agile foundation - dnc14 handouts
Ag01 agile foundation - dnc14 handouts
 
Unity3 d uitools
Unity3 d uitoolsUnity3 d uitools
Unity3 d uitools
 
Mob04 best practices for windows phone ui design
Mob04   best practices for windows phone ui designMob04   best practices for windows phone ui design
Mob04 best practices for windows phone ui design
 
Ag03 agile culture - dnc14 handouts
Ag03   agile culture - dnc14 handoutsAg03   agile culture - dnc14 handouts
Ag03 agile culture - dnc14 handouts
 
Sys04 share point-yammer_social_collaboration
Sys04   share point-yammer_social_collaborationSys04   share point-yammer_social_collaboration
Sys04 share point-yammer_social_collaboration
 
Fe04 angular js-101
Fe04   angular js-101Fe04   angular js-101
Fe04 angular js-101
 
Sys01 creare applicazioni virtuali con microsoft application virtualization...
Sys01   creare applicazioni virtuali con microsoft application virtualization...Sys01   creare applicazioni virtuali con microsoft application virtualization...
Sys01 creare applicazioni virtuali con microsoft application virtualization...
 
Gam03 facciamo volare il nosro drone
Gam03   facciamo volare il nosro droneGam03   facciamo volare il nosro drone
Gam03 facciamo volare il nosro drone
 

Ähnlich wie Fe02 ria con breeze e knockout

Migliora il tuo codice con knockout.js
Migliora il tuo codice con knockout.jsMigliora il tuo codice con knockout.js
Migliora il tuo codice con knockout.jsAndrea Dottor
 
Hands on MVC - Mastering the Web
Hands on MVC - Mastering the WebHands on MVC - Mastering the Web
Hands on MVC - Mastering the WebClaudio Gandelli
 
Rich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsRich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsGiorgio Di Nardo
 
Cert03 70-486 developing asp.net mvc 4 web applications
Cert03   70-486 developing asp.net mvc 4 web applicationsCert03   70-486 developing asp.net mvc 4 web applications
Cert03 70-486 developing asp.net mvc 4 web applicationsDotNetCampus
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC FrameworkDotNetMarche
 
Sharepoint 2010 JQuery
Sharepoint 2010  JQuerySharepoint 2010  JQuery
Sharepoint 2010 JQueryDecatec
 
Windows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoWindows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoAndrea Dottor
 
Integrazione continua con TFS Build
Integrazione continua con TFS BuildIntegrazione continua con TFS Build
Integrazione continua con TFS BuildGian Maria Ricci
 
ASP.NET MVC 3: se non ora, quando?
ASP.NET MVC 3: se non ora, quando?ASP.NET MVC 3: se non ora, quando?
ASP.NET MVC 3: se non ora, quando?Giorgio Di Nardo
 
Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010Fabrizio Bernabei
 
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
 
AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webLuca Milan
 
SEO: Search Engine Optimization & Cloud computing
SEO: Search Engine Optimization & Cloud computingSEO: Search Engine Optimization & Cloud computing
SEO: Search Engine Optimization & Cloud computingbsdlover
 
Sviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailSviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailStefano Ottaviani
 
What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012Andrea Dottor
 
Esposizione RIA
Esposizione RIAEsposizione RIA
Esposizione RIAdiodorato
 
2015.04.23 Azure Community Bootcamp 2015 Keynote Italy
2015.04.23 Azure Community Bootcamp 2015 Keynote Italy2015.04.23 Azure Community Bootcamp 2015 Keynote Italy
2015.04.23 Azure Community Bootcamp 2015 Keynote ItalyMarco Parenzan
 

Ähnlich wie Fe02 ria con breeze e knockout (20)

Migliora il tuo codice con knockout.js
Migliora il tuo codice con knockout.jsMigliora il tuo codice con knockout.js
Migliora il tuo codice con knockout.js
 
Hands on MVC - Mastering the Web
Hands on MVC - Mastering the WebHands on MVC - Mastering the Web
Hands on MVC - Mastering the Web
 
Rich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.jsRich client application: MVC4 + MVVM = Knockout.js
Rich client application: MVC4 + MVVM = Knockout.js
 
Cert03 70-486 developing asp.net mvc 4 web applications
Cert03   70-486 developing asp.net mvc 4 web applicationsCert03   70-486 developing asp.net mvc 4 web applications
Cert03 70-486 developing asp.net mvc 4 web applications
 
Asp.NET MVC Framework
Asp.NET MVC FrameworkAsp.NET MVC Framework
Asp.NET MVC Framework
 
Sharepoint 2010 JQuery
Sharepoint 2010  JQuerySharepoint 2010  JQuery
Sharepoint 2010 JQuery
 
ASP.NET
ASP.NETASP.NET
ASP.NET
 
Windows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppoWindows azure - abbattere tempi e costi di sviluppo
Windows azure - abbattere tempi e costi di sviluppo
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Integrazione continua con TFS Build
Integrazione continua con TFS BuildIntegrazione continua con TFS Build
Integrazione continua con TFS Build
 
ASP.NET MVC 3: se non ora, quando?
ASP.NET MVC 3: se non ora, quando?ASP.NET MVC 3: se non ora, quando?
ASP.NET MVC 3: se non ora, quando?
 
Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010Asp.net 4 Community Tour VS2010
Asp.net 4 Community Tour VS2010
 
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...
 
AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni web
 
SEO: Search Engine Optimization & Cloud computing
SEO: Search Engine Optimization & Cloud computingSEO: Search Engine Optimization & Cloud computing
SEO: Search Engine Optimization & Cloud computing
 
Sviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRailSviluppo Web Agile Con MonoRail
Sviluppo Web Agile Con MonoRail
 
MVC and Struts 1
MVC and Struts 1MVC and Struts 1
MVC and Struts 1
 
What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012What's New in ASP.NET 4.5 and Visual Studio 2012
What's New in ASP.NET 4.5 and Visual Studio 2012
 
Esposizione RIA
Esposizione RIAEsposizione RIA
Esposizione RIA
 
2015.04.23 Azure Community Bootcamp 2015 Keynote Italy
2015.04.23 Azure Community Bootcamp 2015 Keynote Italy2015.04.23 Azure Community Bootcamp 2015 Keynote Italy
2015.04.23 Azure Community Bootcamp 2015 Keynote Italy
 

Mehr von DotNetCampus

ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILEARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILEDotNetCampus
 
MICROSOFT E IL MONDO IOT
MICROSOFT E IL MONDO IOTMICROSOFT E IL MONDO IOT
MICROSOFT E IL MONDO IOTDotNetCampus
 
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#DotNetCampus
 
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONSDotNetCampus
 
70-483: PROGRAMMING IN C#
70-483: PROGRAMMING IN C#70-483: PROGRAMMING IN C#
70-483: PROGRAMMING IN C#DotNetCampus
 
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...DotNetCampus
 
TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015DotNetCampus
 
CONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERCONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERDotNetCampus
 
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATAPREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATADotNetCampus
 
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDI
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDIDESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDI
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDIDotNetCampus
 
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZURE
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZUREFROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZURE
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZUREDotNetCampus
 
SHAREPOINT 2016 - WHAT'S NEW
SHAREPOINT 2016 - WHAT'S NEWSHAREPOINT 2016 - WHAT'S NEW
SHAREPOINT 2016 - WHAT'S NEWDotNetCampus
 
COSTRUISCI IL TUO DEVICE
COSTRUISCI IL TUO DEVICECOSTRUISCI IL TUO DEVICE
COSTRUISCI IL TUO DEVICEDotNetCampus
 
SVILUPPARE PER MICROSOFT BAND
SVILUPPARE PER MICROSOFT BANDSVILUPPARE PER MICROSOFT BAND
SVILUPPARE PER MICROSOFT BANDDotNetCampus
 
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!DotNetCampus
 
WINDOWS PHONE APPS IN C++
WINDOWS PHONE APPS IN C++WINDOWS PHONE APPS IN C++
WINDOWS PHONE APPS IN C++DotNetCampus
 
AZURE NOTIFICATION HUB
AZURE NOTIFICATION HUBAZURE NOTIFICATION HUB
AZURE NOTIFICATION HUBDotNetCampus
 
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMSSFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMSDotNetCampus
 
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOTUNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOTDotNetCampus
 

Mehr von DotNetCampus (20)

ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILEARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
 
MICROSOFT E IL MONDO IOT
MICROSOFT E IL MONDO IOTMICROSOFT E IL MONDO IOT
MICROSOFT E IL MONDO IOT
 
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
70-485: ADVANCED OF DEVELOPING WINDOWS STORE APPS USING C#
 
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
70-534: ARCHITECTING MICROSOFT AZURE SOLUTIONS
 
70-483: PROGRAMMING IN C#
70-483: PROGRAMMING IN C#70-483: PROGRAMMING IN C#
70-483: PROGRAMMING IN C#
 
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
DSTORIE DALLA TRINCEA: TEAM FOUNDATION SERVER IN CASI LIMITE E NON SOLO...
 
TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015TUTTO SU VISUAL STUDIO ALM 2015
TUTTO SU VISUAL STUDIO ALM 2015
 
CONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVERCONTINUOUS INTEGRATION CON SQL SERVER
CONTINUOUS INTEGRATION CON SQL SERVER
 
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATAPREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
PREDICT THE FUTURE , MACHINE LEARNING & BIG DATA
 
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDI
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDIDESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDI
DESKTOP AND CLIENT VIRTUALIZATION: NEW WORKSTYLES WITH MICROSOFT VDI
 
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZURE
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZUREFROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZURE
FROM ON-PREMISE TO THE HYBRID CLOUD WITH MICROSOFT AZURE
 
SHAREPOINT 2016 - WHAT'S NEW
SHAREPOINT 2016 - WHAT'S NEWSHAREPOINT 2016 - WHAT'S NEW
SHAREPOINT 2016 - WHAT'S NEW
 
COSTRUISCI IL TUO DEVICE
COSTRUISCI IL TUO DEVICECOSTRUISCI IL TUO DEVICE
COSTRUISCI IL TUO DEVICE
 
SVILUPPARE PER MICROSOFT BAND
SVILUPPARE PER MICROSOFT BANDSVILUPPARE PER MICROSOFT BAND
SVILUPPARE PER MICROSOFT BAND
 
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!
INTERFACCE GRAFICHE CON UNITY3D 4.6: IL GIOCO NON BASTA!
 
WINDOWS PHONE APPS IN C++
WINDOWS PHONE APPS IN C++WINDOWS PHONE APPS IN C++
WINDOWS PHONE APPS IN C++
 
AZURE NOTIFICATION HUB
AZURE NOTIFICATION HUBAZURE NOTIFICATION HUB
AZURE NOTIFICATION HUB
 
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMSSFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
SFRUTTARE I MICROSOFT AZURE MOBILE SERVICES CON XAMARIN.FORMS
 
INTRO TO XAMARIN
INTRO TO XAMARININTRO TO XAMARIN
INTRO TO XAMARIN
 
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOTUNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
 

Fe02 ria con breeze e knockout

  • 1. Template designed by Rich Internet Application con Breeze e Knockout Giorgio Di Nardo giorgio.dinardo@domusdotnet.org @akelitz blogs.ugidotnet.org/akelitz Template designed by
  • 3. Template designed by  Si fa presto a dire Model-View-ViewModel  Knockout: cosa, perché e come?  Breeze: cosa, perché e come?  Scrivere una RIA con Breeze e Knockout Agenda agile
  • 4. Template designed by  Si fa presto a dire Model-View-ViewModel  Knockout: cosa, perché e come?  Breeze: cosa, perché e come?  Scrivere una RIA con Breeze e Knockout Agenda agile
  • 5. Template designed by  Pattern di presentation della famiglia MV*  Separation-of-Concerns  Rompere il legame forte tra i dati (Model) e la loro rappresentazione (View) per mezzo di un terzo soggetto (ViewModel) MVVM = Model-View-ViewModel  Si definiscono e si idratano i dati (Model) da visualizzare  Si veicolano i dati attraverso il ViewModel verso la View utilizzando un meccanismo di data-bind che permetta la gestione bidirezionale degli aggiornamenti dei dati stessi  Si definiscono delle operazioni nel ViewModel per gestire gli eventi provenienti dalla View
  • 6. Template designed by  Model: i dati gestiti dall’applicazione rappresentati sotto forma di oggetto o array Javascript  View: la pagina HTML contenente i vari elementi di markup  ViewModel: un oggetto Javascript che espone i dati (Model) in un formato «comodo» per l’interfaccia (View) e contiene le operazioni per rispondere agli eventi da questa generati MVVM in HTML
  • 7. Template designed by  Si fa presto a dire Model-View-ViewModel  Knockout: cosa, perché e come?  Breeze: cosa, perché e come?  Scrivere una RIA con Breeze e Knockout Agenda agile
  • 8. Template designed by  Libreria in Javascript puro per semplificare la creazione in HTML di applicazioni basate su MVVM  Caratteristiche principali:  Binding dichiarativo dei dati nel markup HTML  Gestione delle dipendenze con aggiornamento automatico nelle due direzioni  Facilità di estensione delle funzionalità di base  Compatibile con la maggior parte dei browser (IE 8+, Firefox 2+, Chrome, …)  Non sostituisce ma si integra con jQuery Knockout: cos’è?
  • 9. Template designed by  Aiuta ad aumentare la SoC del progetto anche nella parte storicamente più propensa allo «spaghetti code»  Consente di gestire in maniera più strutturata e manutenibile gli elementi e gli eventi del DOM  Semplifica enormemente i problemi di unit testing della parte client della nostra applicazione …. Knockout: perché usarlo?
  • 10. Template designed by  Si creano gli oggetti ViewModel e si definiscono al loro interno le proprietà observable contenenti i dati da mostrare e le funzioni associate ai comandi scatenabili dalla View  Si aggiungono gli attributi data-bind al markup della pagina HTML  Si attiva il binding con una chiamata al metodo ko.applyBinding Knockout: come usarlo?
  • 12. Template designed by  Si fa presto a dire Model-View-ViewModel  Knockout: cosa, perché e come?  Breeze: cosa, perché e come?  Scrivere una RIA con Breeze e Knockout Agenda agile
  • 13. Template designed by  Libreria in Javascript puro per semplificare la gestione dei dati lato client in applicazioni RIA  Caratteristiche principali:  Potente motore di query dei dati con possibilità di filtri, ordinamenti e paginazione  Tracciatura delle modifiche con gestione delle dipendenze, notifica di eventi e validazione  Caching lato client dei dati per garantire una UI più responsiva  Compatibile con la maggior parte dei browser (IE 8+, Firefox 3+, Chrome 5+, Safari 4+)  Disegnato su Web API ma compatibile con ogni servizio OData Breeze: cos’è?
  • 14. Template designed by  Aiuta ad costruire applicazioni responsive alleggerendo dal carico della gestione delle entità lato client  Supporta out-of-box i principali framework di data binding client-side (Knockout, Angular, Backbone)  Semplifica enormemente i problemi di unit testing della parte client della nostra applicazione …. Breeze: perché usarlo?
  • 15. Template designed by  Si crea un oggetto EntityManager per accedere ai dati e gestire la cache locale  Si fornisce la struttura del modello di dominio presente lato server per mezzo di metadati generati automaticamente o configurati manualmente  Si recuperano le informazioni dal server mediante un oggetto EntityQuery e una sintassi immediata per impostare filtri, ordinamento e paginazione Breeze: come usarlo?
  • 16. Template designed by  Si fa presto a dire Model-View-ViewModel  Knockout: cosa, perché e come?  Breeze: cosa, perché e come?  Scrivere una RIA con Breeze e Knockout Agenda agile
  • 17. Template designed by • Creare un nuovo progetto ASP.NET Web Application vuoto • Aggiungere i pacchetti NuGet di Breeze e Knockout Preparare il progetto • Definire il modello e gestire la persistenza • Creare un Web API che esponga le entità di dominio Scrivere il servizio • Creare la struttura con HTML5 e CSS3 • Utilizzare MVVM per separare i dati dalla UI • Utilizzare Knockout per il Data Binding Disegnare l’applicazione • Utilizzare Breeze per l’accesso ai dati • EntityManager come proxy del servizio Web API Consumare i dati Scrivere una RIA con Breeze e Knockout