SlideShare a Scribd company logo
1 of 13
Da CRUD a Messaggi per Applicazioni
Scalabili e Manutenibili
… sfatiamo qualche luogo comune….
Michele Aponte
CEO/CTO Blexin Srl
Presidente DotNetCampania
MVP ASP.NET/IIS
@apomic80 - http://www.tolist.net
Sponsor
Grazie a
Una architettura 3-tier al giorno, toglie
il medico di torno?
Presentation
Layer
Business
Layer
Data
Layer
Una architettura 3-tier al giorno, toglie
il medico di torno? Ma anche no...
Modello di
Dominio
Business
Services
Data Access
Layer (ORM)
RDBMS
Application
Services
User
Interface
Limiti di un’architettura 3-Tier e monomodello
• Scrittura e lettura hanno esigenze diverse
• Ci sono applicazioni in cui il numero di letture è
molto diverso dal numero di scritture
• Problemi di performance
• Manutenibilità con aggiunta di altri moduli
applicativi
Proviamo a separare le responsabilità…
Presentation
Layer
Write Model
(Business Layer)
Data
Layer
Read Model
Command Query Responsibility Segregation
… un altro pochino ...
Presentation
Layer
Write Model
(Business Layer)
Data
Layer
Read Model
Data
Layer
Command Query Responsibility Segregation
Ok… ma come tengo “sincronizzati”
Read Model e Write Model?
Presentation
Layer
Write Model
(Business Layer)
Data
Layer
Read Model
Data
Layer
Sincronizzatore
(denormalizzatore)
Command Query Responsibility Segregation
Mettiamoci
l’anima in
pace:
il mondo
non è
transaziona
le!
Demo
CQRS un passo per volta…
In un sistema del genere sapete cosa ci
starebbe proprio bene?
Presentation
Layer
Write
Model
Data
Layer
Read Model
Data
Layer
Sincronizzatore
(denormalizzatore)
ESB
Quando usare CQRS e i Messaggi
• Dividere modello di lettura e scrittura è sempre
una buona idea
• Con la messaggistica vi portate a casa un sistema
di comunicazione che potete usare anche per scopi
puramente applicativi (estendibilità,
comunicazione in plugin, ecc.)
• Qualcuno ha detto scalabilità???
• Se avete una logica unicamente CRUD… ma vi è
veramente mai capitato?
• Non guardate unicamente alla dimensione della
vostra applicazione al momento della nascita...
Domande? Intanto qualche riferimento utile

More Related Content

Similar to Da crud a messaggi per app scalabili e manutenibili

2011.06.30 scenari applicativi per il cloud computing
2011.06.30   scenari applicativi per il cloud computing2011.06.30   scenari applicativi per il cloud computing
2011.06.30 scenari applicativi per il cloud computingMarco Parenzan
 
Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)DotNetMarche
 
Entity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernateEntity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernateManuel Scapolan
 
Tesi Laurea I Livello - Vaiano
Tesi Laurea I Livello - VaianoTesi Laurea I Livello - Vaiano
Tesi Laurea I Livello - VaianoMarco Vaiano
 
Be02 portare la nostra applicazione su azure
Be02   portare la nostra applicazione su azureBe02   portare la nostra applicazione su azure
Be02 portare la nostra applicazione su azureDotNetCampus
 
Domain Driven Design e CQRS
Domain Driven Design e CQRSDomain Driven Design e CQRS
Domain Driven Design e CQRSManuel Scapolan
 
Introduzione Cloud Computing
Introduzione Cloud ComputingIntroduzione Cloud Computing
Introduzione Cloud Computingsteccami
 
Note di Data Warehouse e Business Intelligence - La gestione delle descrizioni
Note di Data Warehouse e Business Intelligence - La gestione delle descrizioniNote di Data Warehouse e Business Intelligence - La gestione delle descrizioni
Note di Data Warehouse e Business Intelligence - La gestione delle descrizioniMassimo Cenci
 
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
 
MySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQL
MySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQLMySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQL
MySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQLPar-Tec S.p.A.
 
Mobile, BPM e Cloud tramite MDD: Una leva tecnologica per il business [ITA]
Mobile, BPM e Cloud tramite MDD: Una leva tecnologica per il business [ITA]Mobile, BPM e Cloud tramite MDD: Una leva tecnologica per il business [ITA]
Mobile, BPM e Cloud tramite MDD: Una leva tecnologica per il business [ITA]Marco Brambilla
 
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
 
e-SUAP - General software architecture (Italiano)
e-SUAP - General software architecture (Italiano)e-SUAP - General software architecture (Italiano)
e-SUAP - General software architecture (Italiano)Sabino Labarile
 
... thinking about Microformats!
... thinking about Microformats!... thinking about Microformats!
... thinking about Microformats!Stefano Fago
 
comm-09 Cloud Computing
comm-09 Cloud  Computingcomm-09 Cloud  Computing
comm-09 Cloud Computingmcolavit
 
Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)Fabio Armani
 

Similar to Da crud a messaggi per app scalabili e manutenibili (20)

ORM - Introduzione
ORM - IntroduzioneORM - Introduzione
ORM - Introduzione
 
2011.06.30 scenari applicativi per il cloud computing
2011.06.30   scenari applicativi per il cloud computing2011.06.30   scenari applicativi per il cloud computing
2011.06.30 scenari applicativi per il cloud computing
 
Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)
 
ASP.NET
ASP.NETASP.NET
ASP.NET
 
Entity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernateEntity Framework 4.0 vs NHibernate
Entity Framework 4.0 vs NHibernate
 
Tesi Laurea I Livello - Vaiano
Tesi Laurea I Livello - VaianoTesi Laurea I Livello - Vaiano
Tesi Laurea I Livello - Vaiano
 
Bpm forum 2013 web ratio - BPMN e IFML
Bpm forum 2013   web ratio - BPMN e IFMLBpm forum 2013   web ratio - BPMN e IFML
Bpm forum 2013 web ratio - BPMN e IFML
 
Cesvip 20110124
Cesvip 20110124Cesvip 20110124
Cesvip 20110124
 
Be02 portare la nostra applicazione su azure
Be02   portare la nostra applicazione su azureBe02   portare la nostra applicazione su azure
Be02 portare la nostra applicazione su azure
 
Domain Driven Design e CQRS
Domain Driven Design e CQRSDomain Driven Design e CQRS
Domain Driven Design e CQRS
 
Introduzione Cloud Computing
Introduzione Cloud ComputingIntroduzione Cloud Computing
Introduzione Cloud Computing
 
Note di Data Warehouse e Business Intelligence - La gestione delle descrizioni
Note di Data Warehouse e Business Intelligence - La gestione delle descrizioniNote di Data Warehouse e Business Intelligence - La gestione delle descrizioni
Note di Data Warehouse e Business Intelligence - La gestione delle descrizioni
 
Il mercato SOA: futuro e prospettive
Il mercato SOA: futuro e prospettiveIl mercato SOA: futuro e prospettive
Il mercato SOA: futuro e prospettive
 
MySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQL
MySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQLMySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQL
MySQL Day Milano 2017 - Dalla replica a InnoDB Cluster: l’HA secondo MySQL
 
Mobile, BPM e Cloud tramite MDD: Una leva tecnologica per il business [ITA]
Mobile, BPM e Cloud tramite MDD: Una leva tecnologica per il business [ITA]Mobile, BPM e Cloud tramite MDD: Una leva tecnologica per il business [ITA]
Mobile, BPM e Cloud tramite MDD: Una leva tecnologica per il business [ITA]
 
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
 
e-SUAP - General software architecture (Italiano)
e-SUAP - General software architecture (Italiano)e-SUAP - General software architecture (Italiano)
e-SUAP - General software architecture (Italiano)
 
... thinking about Microformats!
... thinking about Microformats!... thinking about Microformats!
... thinking about Microformats!
 
comm-09 Cloud Computing
comm-09 Cloud  Computingcomm-09 Cloud  Computing
comm-09 Cloud Computing
 
Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)Design Patterns - enterprise patterns (part I)
Design Patterns - enterprise patterns (part I)
 

More from Michele Aponte

Frontend Development with Blazor
Frontend Development with BlazorFrontend Development with Blazor
Frontend Development with BlazorMichele Aponte
 
Generazione dinamica della UI con Blazor WebAssembly
Generazione dinamica della UI con Blazor WebAssemblyGenerazione dinamica della UI con Blazor WebAssembly
Generazione dinamica della UI con Blazor WebAssemblyMichele Aponte
 
Intelligenza artificiale nel mondo front-end - CodeGen2021
Intelligenza artificiale nel mondo front-end - CodeGen2021Intelligenza artificiale nel mondo front-end - CodeGen2021
Intelligenza artificiale nel mondo front-end - CodeGen2021Michele Aponte
 
Blazor Focus Week Bari
Blazor Focus Week BariBlazor Focus Week Bari
Blazor Focus Week BariMichele Aponte
 
DevDayNapoli - Blazor: Creare Single Page Application con .NET e WebAseembly
DevDayNapoli - Blazor: Creare Single Page Application con .NET e WebAseemblyDevDayNapoli - Blazor: Creare Single Page Application con .NET e WebAseembly
DevDayNapoli - Blazor: Creare Single Page Application con .NET e WebAseemblyMichele Aponte
 
DevDayBenevento - Blazor: Creare Single Page Application con .NET e WebAseembly
DevDayBenevento - Blazor: Creare Single Page Application con .NET e WebAseemblyDevDayBenevento - Blazor: Creare Single Page Application con .NET e WebAseembly
DevDayBenevento - Blazor: Creare Single Page Application con .NET e WebAseemblyMichele Aponte
 
Cognitive services in Business applications
Cognitive services in Business applicationsCognitive services in Business applications
Cognitive services in Business applicationsMichele Aponte
 
Angular in produzione: Best Practices e Performance Improvements
Angular in produzione:Best Practices e Performance ImprovementsAngular in produzione:Best Practices e Performance Improvements
Angular in produzione: Best Practices e Performance ImprovementsMichele Aponte
 
Da Silverlight a angular senza toccare il backend: fatto!
 Da Silverlight a angular senza toccare il backend: fatto! Da Silverlight a angular senza toccare il backend: fatto!
Da Silverlight a angular senza toccare il backend: fatto!Michele Aponte
 
Realizzare applicazioni desktop con Electron e Angular
Realizzare applicazioni desktop con Electron e AngularRealizzare applicazioni desktop con Electron e Angular
Realizzare applicazioni desktop con Electron e AngularMichele Aponte
 
Angular e asp.net core: un framework sul framework
Angular e asp.net core: un framework sul frameworkAngular e asp.net core: un framework sul framework
Angular e asp.net core: un framework sul frameworkMichele Aponte
 
Realizzare applicazioni desktop con Electron e Angular
Realizzare applicazioni desktop con Electron e AngularRealizzare applicazioni desktop con Electron e Angular
Realizzare applicazioni desktop con Electron e AngularMichele Aponte
 
Sviluppo web con asp.net core 2
Sviluppo web con asp.net core 2Sviluppo web con asp.net core 2
Sviluppo web con asp.net core 2Michele Aponte
 
Un framework sul framework: generare una SPA dinamicamente in Angular
Un framework sul framework: generare una SPA dinamicamente in AngularUn framework sul framework: generare una SPA dinamicamente in Angular
Un framework sul framework: generare una SPA dinamicamente in AngularMichele Aponte
 
Realizzare Single Page Application con Angular2
Realizzare Single Page Application con Angular2Realizzare Single Page Application con Angular2
Realizzare Single Page Application con Angular2Michele Aponte
 
Single Page Application con Angular 2
Single Page Application con Angular 2Single Page Application con Angular 2
Single Page Application con Angular 2Michele Aponte
 

More from Michele Aponte (20)

Frontend Development with Blazor
Frontend Development with BlazorFrontend Development with Blazor
Frontend Development with Blazor
 
Generazione dinamica della UI con Blazor WebAssembly
Generazione dinamica della UI con Blazor WebAssemblyGenerazione dinamica della UI con Blazor WebAssembly
Generazione dinamica della UI con Blazor WebAssembly
 
La rivoluzione blazor
La rivoluzione blazorLa rivoluzione blazor
La rivoluzione blazor
 
Intelligenza artificiale nel mondo front-end - CodeGen2021
Intelligenza artificiale nel mondo front-end - CodeGen2021Intelligenza artificiale nel mondo front-end - CodeGen2021
Intelligenza artificiale nel mondo front-end - CodeGen2021
 
Blazor Focus Week Bari
Blazor Focus Week BariBlazor Focus Week Bari
Blazor Focus Week Bari
 
DevDayNapoli - Blazor: Creare Single Page Application con .NET e WebAseembly
DevDayNapoli - Blazor: Creare Single Page Application con .NET e WebAseemblyDevDayNapoli - Blazor: Creare Single Page Application con .NET e WebAseembly
DevDayNapoli - Blazor: Creare Single Page Application con .NET e WebAseembly
 
DevDayBenevento - Blazor: Creare Single Page Application con .NET e WebAseembly
DevDayBenevento - Blazor: Creare Single Page Application con .NET e WebAseemblyDevDayBenevento - Blazor: Creare Single Page Application con .NET e WebAseembly
DevDayBenevento - Blazor: Creare Single Page Application con .NET e WebAseembly
 
Cognitive services in Business applications
Cognitive services in Business applicationsCognitive services in Business applications
Cognitive services in Business applications
 
Angular in produzione: Best Practices e Performance Improvements
Angular in produzione:Best Practices e Performance ImprovementsAngular in produzione:Best Practices e Performance Improvements
Angular in produzione: Best Practices e Performance Improvements
 
Da Silverlight a angular senza toccare il backend: fatto!
 Da Silverlight a angular senza toccare il backend: fatto! Da Silverlight a angular senza toccare il backend: fatto!
Da Silverlight a angular senza toccare il backend: fatto!
 
Angular and beyond
Angular and beyondAngular and beyond
Angular and beyond
 
Realizzare applicazioni desktop con Electron e Angular
Realizzare applicazioni desktop con Electron e AngularRealizzare applicazioni desktop con Electron e Angular
Realizzare applicazioni desktop con Electron e Angular
 
Angular e asp.net core: un framework sul framework
Angular e asp.net core: un framework sul frameworkAngular e asp.net core: un framework sul framework
Angular e asp.net core: un framework sul framework
 
Realizzare applicazioni desktop con Electron e Angular
Realizzare applicazioni desktop con Electron e AngularRealizzare applicazioni desktop con Electron e Angular
Realizzare applicazioni desktop con Electron e Angular
 
Sviluppo web con asp.net core 2
Sviluppo web con asp.net core 2Sviluppo web con asp.net core 2
Sviluppo web con asp.net core 2
 
Un framework sul framework: generare una SPA dinamicamente in Angular
Un framework sul framework: generare una SPA dinamicamente in AngularUn framework sul framework: generare una SPA dinamicamente in Angular
Un framework sul framework: generare una SPA dinamicamente in Angular
 
Angular vsr React
Angular vsr ReactAngular vsr React
Angular vsr React
 
Angular 2 on stage
Angular 2 on stageAngular 2 on stage
Angular 2 on stage
 
Realizzare Single Page Application con Angular2
Realizzare Single Page Application con Angular2Realizzare Single Page Application con Angular2
Realizzare Single Page Application con Angular2
 
Single Page Application con Angular 2
Single Page Application con Angular 2Single Page Application con Angular 2
Single Page Application con Angular 2
 

Da crud a messaggi per app scalabili e manutenibili

  • 1. Da CRUD a Messaggi per Applicazioni Scalabili e Manutenibili … sfatiamo qualche luogo comune…. Michele Aponte CEO/CTO Blexin Srl Presidente DotNetCampania MVP ASP.NET/IIS @apomic80 - http://www.tolist.net
  • 3. Una architettura 3-tier al giorno, toglie il medico di torno? Presentation Layer Business Layer Data Layer
  • 4. Una architettura 3-tier al giorno, toglie il medico di torno? Ma anche no... Modello di Dominio Business Services Data Access Layer (ORM) RDBMS Application Services User Interface
  • 5. Limiti di un’architettura 3-Tier e monomodello • Scrittura e lettura hanno esigenze diverse • Ci sono applicazioni in cui il numero di letture è molto diverso dal numero di scritture • Problemi di performance • Manutenibilità con aggiunta di altri moduli applicativi
  • 6. Proviamo a separare le responsabilità… Presentation Layer Write Model (Business Layer) Data Layer Read Model Command Query Responsibility Segregation
  • 7. … un altro pochino ... Presentation Layer Write Model (Business Layer) Data Layer Read Model Data Layer Command Query Responsibility Segregation
  • 8. Ok… ma come tengo “sincronizzati” Read Model e Write Model? Presentation Layer Write Model (Business Layer) Data Layer Read Model Data Layer Sincronizzatore (denormalizzatore) Command Query Responsibility Segregation
  • 10. Demo CQRS un passo per volta…
  • 11. In un sistema del genere sapete cosa ci starebbe proprio bene? Presentation Layer Write Model Data Layer Read Model Data Layer Sincronizzatore (denormalizzatore) ESB
  • 12. Quando usare CQRS e i Messaggi • Dividere modello di lettura e scrittura è sempre una buona idea • Con la messaggistica vi portate a casa un sistema di comunicazione che potete usare anche per scopi puramente applicativi (estendibilità, comunicazione in plugin, ecc.) • Qualcuno ha detto scalabilità??? • Se avete una logica unicamente CRUD… ma vi è veramente mai capitato? • Non guardate unicamente alla dimensione della vostra applicazione al momento della nascita...
  • 13. Domande? Intanto qualche riferimento utile