Download - Architetttura Della Soluzione
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
DependencyResolver
(Unit/SM)(ioc container)
• Presentation / UIE’ 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).
• ApplicationCoordina 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).
• DomainContiene 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.
• InfrastructureTrasversale 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.PrinciplesOfOod (articolo)