Architetttura Della Soluzione

Post on 20-Jun-2015

869 views 2 download

Transcript of Architetttura Della Soluzione

Luca Milanhttp://fewbit.cominfo@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

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)