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à.
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.
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)