SlideShare ist ein Scribd-Unternehmen logo
1 von 11
Downloaden Sie, um offline zu lesen
Luca Milan
http://fewbit.com
info@fewbit.com
Un’applicativo web basato su un
“Domain Model” la cui persistenza
viene gestita da una “Unit of Work”
che utilizza il pattern “Data
Mapper” per la propria attività.
Il presentation layer poggia sul
framework ASP.NET MVC.
Le classi che potete vedere qui sopra rappresentano il nostro object model. Possiamo facilmente
distinguere entities e value objects,.
Ecco la nostra Specialità
Programmare è anche un esercizio
creativo.
Esistono però obiettivi: stabilità,
estensibilità, mantenibilità e
scalabilità che il programmatore
deve perseguire per scrivere codice
di qualità.
SRP: Single Responsibility Principle
OCP: Open Closed Principle
LSP: Liskov Substitution Principle
ISP: Interface Segregation Principle
DIP: Dependency Inversion Principle
DOMAIN
OBJECTS
CUORE DELL’APPLICAZIONE
Application Services
Unit Tests
Domain Services
ISpecialtyRepository
SpecialtyRepository
SpecialtyController
ReservationService
NotificationService
UI / Application
Services
DOMAIN MODEL
(Core & Services)
Infrastructure
(Nhibernate,Logging,Validation)
DB
Dependency
Resolver
(Unit/SM)
(ioc container)
• Presentation / UI
E’ responsabile della presentazione delle informazioni all’utente. Deve
interpretare i comandi inviati dall'utente all’interfaccia. Non contiene logiche di
business fatta eccezione per i meccanismi di navigazione (menù,screens).
• Application
Coordina l'attività dell’applicazione. Non contiene alcuna logica di business e in
possesso dello stato degli oggetti del dominio, ma può memorizzare lo stato di
avanzamento di tasks specifici (transazioni,sessione utente).
• Domain
Contiene il modello ad oggetti che rappresenta il dominio applicativo (stato e
comportamento dei business objects). E’ autonomo e indipendente e non
conosce i meccanismi di persistenza.
• Infrastructure
Trasversale a tutti i livelli precedenti. Implementa concretamente la persistenza
del dominio, e i cross-cutting concerns.
Cuore della soluzione
Implementazione concreta
della persistenza (via NH) e
della IoC (via SM e Unit)
Interfaccia Utente (MVC)
• Domain Model (cuore dell’applicazione)
• Repository
• Query Objects
• Unit Of Work (NHibernate)
• Service Locator / Dependency Resolver
•Inversion Of Control
 1) MARTIN FOWLER: Patterns of Enterprise
Application Architecture (libro)
 2) Jeffrey Palermo: http://jeffreypalermo.com/ (blog)
 3) Domain Driven Design:
http://domaindrivendesign.org/ (sito)
 4) Robert Martin
http://butunclebob.com/ArticleS.UncleBob.PrinciplesO
fOod (articolo)

Weitere ähnliche Inhalte

Was ist angesagt?

Javascript task automation
Javascript task automationJavascript task automation
Javascript task automation
DotNetCampus
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campus
DotNetCampus
 
Del furia signalr-to-the-max
Del furia   signalr-to-the-maxDel furia   signalr-to-the-max
Del furia signalr-to-the-max
DotNetCampus
 
Dot netcampus2015 green-template
Dot netcampus2015 green-templateDot netcampus2015 green-template
Dot netcampus2015 green-template
DotNetCampus
 

Was ist angesagt? (20)

Javascript task automation
Javascript task automationJavascript task automation
Javascript task automation
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campus
 
Dependency injection questa sconosciuta
Dependency injection questa sconosciutaDependency injection questa sconosciuta
Dependency injection questa sconosciuta
 
Domain Driven Design e CQRS
Domain Driven Design e CQRSDomain Driven Design e CQRS
Domain Driven Design e CQRS
 
Del furia signalr-to-the-max
Del furia   signalr-to-the-maxDel furia   signalr-to-the-max
Del furia signalr-to-the-max
 
Javascript task automation
Javascript task automationJavascript task automation
Javascript task automation
 
Wcf data services
Wcf data servicesWcf data services
Wcf data services
 
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
Xamarin.Forms Performance Tips & Tricks - Francesco Bonacci - Codemotion Rome...
 
Dot netcampus2015 green-template
Dot netcampus2015 green-templateDot netcampus2015 green-template
Dot netcampus2015 green-template
 
Actions on Google e Alexa skills per .NET lovers
Actions on Google e Alexa skills per .NET loversActions on Google e Alexa skills per .NET lovers
Actions on Google e Alexa skills per .NET lovers
 
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#
 
jQuery
jQueryjQuery
jQuery
 
Async: scalabilità e responsiveness senza pari! @ CDays
Async: scalabilità e responsiveness senza pari! @ CDaysAsync: scalabilità e responsiveness senza pari! @ CDays
Async: scalabilità e responsiveness senza pari! @ CDays
 
Akka.net & Actor Model
Akka.net & Actor ModelAkka.net & Actor Model
Akka.net & Actor Model
 
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
 
Introduzione a Service Fabric e Actor Model
Introduzione a Service Fabric e Actor ModelIntroduzione a Service Fabric e Actor Model
Introduzione a Service Fabric e Actor Model
 
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
 
Alla scoperta di gRPC
Alla scoperta di gRPCAlla scoperta di gRPC
Alla scoperta di gRPC
 
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!
APPSTUDIO: DA ZERO ALLO STORE IN 50 MINUTI!
 
ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILEARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
 

Andere mochten auch

Azure WebSites for Developers
Azure WebSites for DevelopersAzure WebSites for Developers
Azure WebSites for Developers
Luca Milan
 
Il difficile mestiere dello sviluppatore: un approccio feature oriented.
Il difficile mestiere dello sviluppatore: un approccio feature oriented.Il difficile mestiere dello sviluppatore: un approccio feature oriented.
Il difficile mestiere dello sviluppatore: un approccio feature oriented.
Luca Milan
 
Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015
Codemotion
 
Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")
Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")
Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")
Svetlin Nakov
 

Andere mochten auch (20)

"Don't call us, we'll call you" - AngularJS meets Event-Driven Architecture
"Don't call us, we'll call you" - AngularJS meets Event-Driven Architecture"Don't call us, we'll call you" - AngularJS meets Event-Driven Architecture
"Don't call us, we'll call you" - AngularJS meets Event-Driven Architecture
 
Azure WebSites for Developers
Azure WebSites for DevelopersAzure WebSites for Developers
Azure WebSites for Developers
 
Il difficile mestiere dello sviluppatore: un approccio feature oriented.
Il difficile mestiere dello sviluppatore: un approccio feature oriented.Il difficile mestiere dello sviluppatore: un approccio feature oriented.
Il difficile mestiere dello sviluppatore: un approccio feature oriented.
 
Java scriptpatterns
Java scriptpatternsJava scriptpatterns
Java scriptpatterns
 
Loosely Coupled Complexity - Unleash the power of your domain model
Loosely Coupled Complexity - Unleash the power of your domain modelLoosely Coupled Complexity - Unleash the power of your domain model
Loosely Coupled Complexity - Unleash the power of your domain model
 
[Alam aeki] Guida illustrata alla modellazione di un dominio con Event Sourci...
[Alam aeki] Guida illustrata alla modellazione di un dominio con Event Sourci...[Alam aeki] Guida illustrata alla modellazione di un dominio con Event Sourci...
[Alam aeki] Guida illustrata alla modellazione di un dominio con Event Sourci...
 
Layered Expression Trees feat. CQRS
Layered Expression Trees feat. CQRSLayered Expression Trees feat. CQRS
Layered Expression Trees feat. CQRS
 
SUE AGILE Architettura (Italiano)
SUE AGILE Architettura (Italiano)SUE AGILE Architettura (Italiano)
SUE AGILE Architettura (Italiano)
 
Strumenti di event driven analytics-sistemi evoluti di analisi degli eventi
Strumenti di event driven analytics-sistemi evoluti di analisi degli eventiStrumenti di event driven analytics-sistemi evoluti di analisi degli eventi
Strumenti di event driven analytics-sistemi evoluti di analisi degli eventi
 
Nakov at Fuck Up Nights - July 2015 @ Sofia
Nakov at Fuck Up Nights - July 2015 @ SofiaNakov at Fuck Up Nights - July 2015 @ Sofia
Nakov at Fuck Up Nights - July 2015 @ Sofia
 
Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015Slide typescript - xe dotnet - Codemotion Rome 2015
Slide typescript - xe dotnet - Codemotion Rome 2015
 
SUE AGILE MVVM (Italian)
SUE AGILE MVVM (Italian)SUE AGILE MVVM (Italian)
SUE AGILE MVVM (Italian)
 
System.AddIn @ Xe.Net
System.AddIn @ Xe.NetSystem.AddIn @ Xe.Net
System.AddIn @ Xe.Net
 
Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")
Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")
Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")
 
Slide Prelaurea. Alessandro Andreosè
Slide Prelaurea. Alessandro AndreosèSlide Prelaurea. Alessandro Andreosè
Slide Prelaurea. Alessandro Andreosè
 
Introduzione a MVVM e Caliburn.Micro
Introduzione a MVVM e Caliburn.MicroIntroduzione a MVVM e Caliburn.Micro
Introduzione a MVVM e Caliburn.Micro
 
Професия "програмист"
Професия "програмист"Професия "програмист"
Професия "програмист"
 
Dependency Injection and Inversion Of Control
Dependency Injection and Inversion Of ControlDependency Injection and Inversion Of Control
Dependency Injection and Inversion Of Control
 
Inversion of Control @ CD2008
Inversion of Control @ CD2008Inversion of Control @ CD2008
Inversion of Control @ CD2008
 
Как да станем софтуерни инженери и да стартираме ИТ бизнес?
Как да станем софтуерни инженери и да стартираме ИТ бизнес?Как да станем софтуерни инженери и да стартираме ИТ бизнес?
Как да станем софтуерни инженери и да стартираме ИТ бизнес?
 

Ähnlich wie Architetttura Della Soluzione

AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni web
Luca Milan
 
Tesi Discussione
Tesi DiscussioneTesi Discussione
Tesi Discussione
Yeser Rema
 
Infrastrutture web e Ruby on Rails
Infrastrutture web e Ruby on RailsInfrastrutture web e Ruby on Rails
Infrastrutture web e Ruby on Rails
guestfe3e15
 
BPM e Cloud: la partnership ideale
BPM e Cloud: la partnership idealeBPM e Cloud: la partnership ideale
BPM e Cloud: la partnership ideale
emanuelemolteni
 

Ähnlich wie Architetttura Della Soluzione (20)

Workshop angular
Workshop angularWorkshop angular
Workshop angular
 
AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni web
 
e-SUAP - General software architecture (Italiano)
e-SUAP - General software architecture (Italiano)e-SUAP - General software architecture (Italiano)
e-SUAP - General software architecture (Italiano)
 
Microservices architecture & Service Fabric
Microservices architecture & Service FabricMicroservices architecture & Service Fabric
Microservices architecture & Service Fabric
 
MVC and Struts 1
MVC and Struts 1MVC and Struts 1
MVC and Struts 1
 
Spring Framework
Spring FrameworkSpring Framework
Spring Framework
 
Introduzione a Ruby On Rails
Introduzione a Ruby On RailsIntroduzione a Ruby On Rails
Introduzione a Ruby On Rails
 
Tesi Discussione
Tesi DiscussioneTesi Discussione
Tesi Discussione
 
Workshop paas - ECDay 23 Maggio 2012
Workshop paas - ECDay 23 Maggio 2012Workshop paas - ECDay 23 Maggio 2012
Workshop paas - ECDay 23 Maggio 2012
 
Modulo 6 Spring Framework Core E Aop
Modulo 6 Spring Framework Core E AopModulo 6 Spring Framework Core E Aop
Modulo 6 Spring Framework Core E Aop
 
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
 
Fabio Cecaro - WorkShop PaaS – Platform as a Services
Fabio Cecaro - WorkShop PaaS – Platform as a ServicesFabio Cecaro - WorkShop PaaS – Platform as a Services
Fabio Cecaro - WorkShop PaaS – Platform as a Services
 
Sviluppo applicazioni in Ruby on Rails
Sviluppo applicazioni in Ruby on RailsSviluppo applicazioni in Ruby on Rails
Sviluppo applicazioni in Ruby on Rails
 
Un backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con SpringUn backend per tutte le stagioni con Spring
Un backend per tutte le stagioni con Spring
 
Alessandro Forte - MVP vs MVC
Alessandro Forte - MVP vs MVCAlessandro Forte - MVP vs MVC
Alessandro Forte - MVP vs MVC
 
Infrastrutture web e Ruby on Rails
Infrastrutture web e Ruby on RailsInfrastrutture web e Ruby on Rails
Infrastrutture web e Ruby on Rails
 
BPM e Cloud: la partnership ideale
BPM e Cloud: la partnership idealeBPM e Cloud: la partnership ideale
BPM e Cloud: la partnership ideale
 
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...
 
Cosa c'è di nuovo in asp.net core 2 0
Cosa c'è di nuovo in asp.net core 2 0Cosa c'è di nuovo in asp.net core 2 0
Cosa c'è di nuovo in asp.net core 2 0
 
Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)Introduzione al Domain Driven Design (DDD)
Introduzione al Domain Driven Design (DDD)
 

Architetttura Della Soluzione

  • 2. Un’applicativo web basato su un “Domain Model” la cui persistenza viene gestita da una “Unit of Work” che utilizza il pattern “Data Mapper” per la propria attività. Il presentation layer poggia sul framework ASP.NET MVC.
  • 3. Le classi che potete vedere qui sopra rappresentano il nostro object model. Possiamo facilmente distinguere entities e value objects,. Ecco la nostra Specialità
  • 4. Programmare è anche un esercizio creativo. Esistono però obiettivi: stabilità, estensibilità, mantenibilità e scalabilità che il programmatore deve perseguire per scrivere codice di qualità.
  • 5. SRP: Single Responsibility Principle OCP: Open Closed Principle LSP: Liskov Substitution Principle ISP: Interface Segregation Principle DIP: Dependency Inversion Principle
  • 6. DOMAIN OBJECTS CUORE DELL’APPLICAZIONE Application Services Unit Tests Domain Services ISpecialtyRepository SpecialtyRepository SpecialtyController ReservationService NotificationService
  • 7. UI / Application Services DOMAIN MODEL (Core & Services) Infrastructure (Nhibernate,Logging,Validation) DB Dependency Resolver (Unit/SM) (ioc container)
  • 8. • Presentation / UI E’ responsabile della presentazione delle informazioni all’utente. Deve interpretare i comandi inviati dall'utente all’interfaccia. Non contiene logiche di business fatta eccezione per i meccanismi di navigazione (menù,screens). • Application Coordina l'attività dell’applicazione. Non contiene alcuna logica di business e in possesso dello stato degli oggetti del dominio, ma può memorizzare lo stato di avanzamento di tasks specifici (transazioni,sessione utente). • Domain Contiene il modello ad oggetti che rappresenta il dominio applicativo (stato e comportamento dei business objects). E’ autonomo e indipendente e non conosce i meccanismi di persistenza. • Infrastructure Trasversale a tutti i livelli precedenti. Implementa concretamente la persistenza del dominio, e i cross-cutting concerns.
  • 9. Cuore della soluzione Implementazione concreta della persistenza (via NH) e della IoC (via SM e Unit) Interfaccia Utente (MVC)
  • 10. • Domain Model (cuore dell’applicazione) • Repository • Query Objects • Unit Of Work (NHibernate) • Service Locator / Dependency Resolver •Inversion Of Control
  • 11.  1) MARTIN FOWLER: Patterns of Enterprise Application Architecture (libro)  2) Jeffrey Palermo: http://jeffreypalermo.com/ (blog)  3) Domain Driven Design: http://domaindrivendesign.org/ (sito)  4) Robert Martin http://butunclebob.com/ArticleS.UncleBob.PrinciplesO fOod (articolo)