SlideShare uma empresa Scribd logo
1 de 11
Baixar para ler offline
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)

Mais conteúdo relacionado

Mais procurados

Javascript task automation
Javascript task automationJavascript task automation
Javascript task automationDotNetCampus
 
Slide typescript - net campus
Slide typescript - net campusSlide typescript - net campus
Slide typescript - net campusDotNetCampus
 
Dependency injection questa sconosciuta
Dependency injection questa sconosciutaDependency injection questa sconosciuta
Dependency injection questa sconosciutaAndrea Dottor
 
Domain Driven Design e CQRS
Domain Driven Design e CQRSDomain Driven Design e CQRS
Domain Driven Design e CQRSManuel Scapolan
 
Del furia signalr-to-the-max
Del furia   signalr-to-the-maxDel furia   signalr-to-the-max
Del furia signalr-to-the-maxDotNetCampus
 
Javascript task automation
Javascript task automationJavascript task automation
Javascript task automationAntonio Liccardi
 
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...Codemotion
 
Dot netcampus2015 green-template
Dot netcampus2015 green-templateDot netcampus2015 green-template
Dot netcampus2015 green-templateDotNetCampus
 
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 loversLorenzo Giudici
 
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
 
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! @ CDaysMatteo Baglini
 
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
 
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 ModelAndrea Tosato
 
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
 
Alla scoperta di gRPC
Alla scoperta di gRPCAlla scoperta di gRPC
Alla scoperta di gRPCAndrea Dottor
 
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!DotNetCampus
 
ARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILEARCHITETTURA DI UN'APPLICAZIONE SCALABILE
ARCHITETTURA DI UN'APPLICAZIONE SCALABILEDotNetCampus
 

Mais procurados (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
 

Destaque

"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 ArchitectureLuca Milan
 
Azure WebSites for Developers
Azure WebSites for DevelopersAzure WebSites for Developers
Azure WebSites for DevelopersLuca 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
 
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 modelFrancesca1980
 
[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...Andrea Balducci
 
Layered Expression Trees feat. CQRS
Layered Expression Trees feat. CQRSLayered Expression Trees feat. CQRS
Layered Expression Trees feat. CQRSAndrea Saltarello
 
SUE AGILE Architettura (Italiano)
SUE AGILE Architettura (Italiano)SUE AGILE Architettura (Italiano)
SUE AGILE Architettura (Italiano)Sabino Labarile
 
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 eventiGabriele Marazzi
 
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 @ SofiaSvetlin Nakov
 
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 2015Codemotion
 
SUE AGILE MVVM (Italian)
SUE AGILE MVVM (Italian)SUE AGILE MVVM (Italian)
SUE AGILE MVVM (Italian)Sabino Labarile
 
Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")
Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")
Следвай вдъхновението си! (фестивал "Свободата да бъдеш - април 2016")Svetlin Nakov
 
Slide Prelaurea. Alessandro Andreosè
Slide Prelaurea. Alessandro AndreosèSlide Prelaurea. Alessandro Andreosè
Slide Prelaurea. Alessandro Andreosèguesta10af3
 
Introduzione a MVVM e Caliburn.Micro
Introduzione a MVVM e Caliburn.MicroIntroduzione a MVVM e Caliburn.Micro
Introduzione a MVVM e Caliburn.MicroMassimo Bonanni
 
Професия "програмист"
Професия "програмист"Професия "програмист"
Професия "програмист"Svetlin Nakov
 
Dependency Injection and Inversion Of Control
Dependency Injection and Inversion Of ControlDependency Injection and Inversion Of Control
Dependency Injection and Inversion Of ControlSimone Busoli
 
Inversion of Control @ CD2008
Inversion of Control @ CD2008Inversion of Control @ CD2008
Inversion of Control @ CD2008Mauro Servienti
 
Как да станем софтуерни инженери и да стартираме ИТ бизнес?
Как да станем софтуерни инженери и да стартираме ИТ бизнес?Как да станем софтуерни инженери и да стартираме ИТ бизнес?
Как да станем софтуерни инженери и да стартираме ИТ бизнес?Svetlin Nakov
 

Destaque (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
 
Как да станем софтуерни инженери и да стартираме ИТ бизнес?
Как да станем софтуерни инженери и да стартираме ИТ бизнес?Как да станем софтуерни инженери и да стартираме ИТ бизнес?
Как да станем софтуерни инженери и да стартираме ИТ бизнес?
 

Semelhante a Architetttura Della Soluzione

AngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webAngularJS – Reinventare le applicazioni web
AngularJS – Reinventare le applicazioni webLuca Milan
 
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
 
Microservices architecture & Service Fabric
Microservices architecture & Service FabricMicroservices architecture & Service Fabric
Microservices architecture & Service FabricMassimo Bonanni
 
Spring Framework
Spring FrameworkSpring Framework
Spring FrameworkNaLUG
 
Introduzione a Ruby On Rails
Introduzione a Ruby On RailsIntroduzione a Ruby On Rails
Introduzione a Ruby On RailsLuca Mearelli
 
Tesi Discussione
Tesi DiscussioneTesi Discussione
Tesi DiscussioneYeser Rema
 
Workshop paas - ECDay 23 Maggio 2012
Workshop paas - ECDay 23 Maggio 2012Workshop paas - ECDay 23 Maggio 2012
Workshop paas - ECDay 23 Maggio 2012VMEngine
 
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 Aopjdksrl
 
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
 
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 ServicesFondazione CUOA
 
Sviluppo applicazioni in Ruby on Rails
Sviluppo applicazioni in Ruby on RailsSviluppo applicazioni in Ruby on Rails
Sviluppo applicazioni in Ruby on RailsNERDYDOG Web Agency
 
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 SpringMarcello Teodori
 
Alessandro Forte - MVP vs MVC
Alessandro Forte - MVP vs MVCAlessandro Forte - MVP vs MVC
Alessandro Forte - MVP vs MVCAlessandro Forte
 
Infrastrutture web e Ruby on Rails
Infrastrutture web e Ruby on RailsInfrastrutture web e Ruby on Rails
Infrastrutture web e Ruby on Railsguestfe3e15
 
BPM e Cloud: la partnership ideale
BPM e Cloud: la partnership idealeBPM e Cloud: la partnership ideale
BPM e Cloud: la partnership idealeemanuelemolteni
 
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
 
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 0Andrea Dottor
 
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
 

Semelhante a 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)