Sunteți pe pagina 1din 57

palais des congrs Paris

7, 8 et 9 fvrier 2012

Les logiciels cest comme les cathdrales, dabord on les construit, et ensuite on prie
Dveloppeur anonyme

Patterns et Antipatterns darchitecture pour les applications dentreprise


7 Fvrier 2012 Riana Rambonimanana Dveloppeur .NET Citgestion

Agenda
Rappels Patterns et Antipatterns
Organiser les logiques mtier Accder aux donnes Grer la distribution Exemples dimplmentation Introduction DDD et CQRS Conclusion Questions / Rponses

Rappels

Redessinons le contexte

Rappels

Application dentreprise ( * Fowler )


Grande quantit de donne Systme de persistance Multi utilisateurs Logique mtier souvent complexe

Rappels

Architecture
Lensemble des aspects techniques qui sont importants pour le logiciel Les choix architecturaux influent sur la russite ou lchec dun projet

Rappels

Patterns
Formalisation de solutions courantes des problmes rcurrents Moyen efficace de partager les connaissances Pratiques prouves et considres comme bonnes Diffrentes catgories (design, analyse, architecture etc.)

Rappels

Antipatterns
Pratiques courantes mais contreproductives Rsulte souvent de patterns mal utiliss Conduit des cots levs de dveloppement

Rappels

Business logic ( logique mtier )


Business rules + Workflows Souvent spar en deux catgories :
Domain logic
Application logic

Patterns et Antipatterns
Rutilisons ce qui marche

Les couches
Presentation

Communication interprocessus
Service

Data Transfer Object (DTO) Remote Facade Service layer


Business

Patterns pour lorganisation de la logique mtier

Patterns pour laccs aux donnes Patterns pour les problmes de distribution

Transaction script Domain model


Data access

Repository Data mapper

Organiser les logiques mtier

Pattern : Transaction script


Presentation

Communication interprocessus
Service

Data Transfer Object (DTO) Remote Facade

Service layer
Business

Transaction script Domain model


Data access

Repository Data mapper

Pattern : Transaction script


Chaque use case est ralis par une mthode qui excute toute la logique correspondante.

GestionCommande CommanderArticle() Requte Client


Domain Logic Application Logic

Transaction script FaireUneReclamation() Requte Client

Pattern : Transaction script


Points forts :

Points faibles

Implmentation facile du lapproche procdurale Convient bien aux logiques simples

Rutilisabilit & extensibilit limits Ne convient pas aux logiques complexes

Antipatterns frquents :

God class Spaghetti code Copy-paste

Pattern : Domain Model


Presentation

Communication interprocessus
Service

Data Transfer Object (DTO) Remote Facade

Service layer
Business

Transaction Script Domain model


Data access

Repository Data mapper

Pattern : Domain Model


Les logiques sont partages par plusieurs objets qui collaborent pour satisfaire les demandes.

Domain model

Requte Client

Commande
Domain Logic

Client Requte Client Reclamation

Application Logic

Pattern : Domain Model


Points forts :

Points faibles

Exploite le paradigme objet = extensibilit et rutilisabilit Convient bien aux logiques complexes Testabilit amliore (TDD etc.)

Mise en place plus longue Ncessite de vrais comptences objets Mappage complexe avec la persistance

Antipatterns frquents :

Anemic Domain model

Pattern : Service Layer


Presentation

Communication interprocessus
Service

Data Transfer Object (DTO) Remote Facade Service layer


Business

Transaction script Domain model


Data access

Repository Data mapper

Pattern : Service Layer


Constitue un point dentre unique pour lextrieur et orchestre les demandes entrantes, mais dlgue la majorit des tches au Domain model.
Service Layer
Requte Client
Commande

Domain Logic
Client

Application Logic
Reclamation

Requte Client

Choisir ?
Transaction script

Cot de mise en place et maintenance

Domain model

Complexit de la logique mtier

Accder aux donnes

Pattern : Data mapper


Presentation

Communication interprocessus
Service

Data Transfer Object (DTO) Remote Facade

Service layer
Business

Transaction script Domain model


Data access

Repository Data mapper

Pattern : Data mapper


Dcouple entirement le modle objet et le modle de donne et prends en charge le mapping entre les deux mondes.

Domain model
Client Achat

Data mapper

Schma Client Achat

ClientFidele
NouveauClient

Pattern : Repository
Presentation

Communication interprocessus
Service

Data Transfer Object (DTO) Remote Facade

Service layer
Business

Transaction script Domain model


Data access

Repository Data mapper

Pattern : Repository
Isole le Domain model de laccs aux donnes rendant ainsi le Domain Model indpendant, rutilisable et facilement testable.

Data mapper

Domain model

Repository

DB

Grer la distribution

Pattern : Data Transfer Object


Presentation

Communication interprocessus
Service

Data Transfer Object (DTO) Remote Facade

Service layer
Business

Transaction script Domain model


Data access

Repository Data mapper

Pattern : Data Transfer Object


Objet servant uniquement transporter des donnes et qui a pour but doptimiser les changes lors de communications interprocessus.

Tier 1

Tier 2

Presentation

Service

DTO

Pattern : Remote Facade


Presentation

Communication interprocessus
Service

Data Transfer Object (DTO) Remote Facade

Service layer
Business

Transaction script Domain model


Data access

Repository Data mapper

Pattern : Remote Facade


Point dentre au systme pour les appels distants. Son but sera doptimiser les changes rseau en offrant une interface forte granularit.
Tier 1 Tier 2

Remote Facade

DTO

Service Layer

Preentation

Dmo : Exemples dimplmentation

En thorie, il ny a pas de diffrence entre la thorie et la pratique, mais en pratique, il y en a ( Loi de Murphy)

Rsum
Presentation

Communication interprocessus
Service

Data Transfer Object (DTO) Remote Facade Service layer


Business

Patterns pour lorganisation de la logique mtier

Patterns pour laccs aux donnes Patterns pour les problmes de distribution

Transaction script Domain model


Data access

Repository Data mapper

Introduction DDD et CQRS

Domain Driven Design

Domain Driven Design (DDD)


Cr et formalis par Eric Evans en 2004 dans son livre ponyme

Domain Driven Design (DDD)

Constats :
La vraie complexit rside dans le domaine lui mme et non dans les aspects techniques. Le design conditionne jusquou un projet peut devenir complexe ou non.

Domain Driven Design (DDD)

Pourquoi DDD ?
Nous aider dvelopper des logiciels qui sattaquent des domaines complexes.

Domain Driven Design (DDD)

Mais quest ce que cest ?


Ni une architecture, ni une mthode, plutt une philosophie
Priorit 1 : La comprhension du domaine, du mtier Priorit 2 : Utilisation de modles pour reprsenter tout design complexe (Model Driven Design).

Domain Driven Design (DDD)


Appliquer DDD
Prrequis : Expert Mtier Dfinir un Ubiquitous Language Modlisation du Domain Model qui utilisera lUL Utilisation des patterns (Aggregate Roots, Entity, Value Objects etc..) Refactoriser en permanence pour clarifier les concepts du domaine. Pour les gros projets, utilisation des Bounded Context, Context Mapping etc..

Command & Query Responsibility Segregation

CQRS
Origine :
Issu de la communaut mais popularis par Greg Young (2009) et dautres ( Udi Dahan etc..).

Pourquoi CQRS ?
Rduire la complexit des Domain Model quon utilise Faciliter lextensibilit de lapplication (scalability) Amliorer la performance Et tout ce quon na pas encore dcouvert

CQRS
Mais quest ce que cest ?
Application au niveau architectural de Command Query Separation (CQS) Command : change ltat visible du systme
void CommanderUnArticle (int idClient, int idArticle); void InscrireNouveauClient (string nom, int age);

Query : ne change pas ltat visible du systme


Solde GetSoldeClient(int idClient) bool GetIsArticleDisponible(int idArticle)

CQRS
Architecture Standard
Presentation

DTO Lecture
Service

DTO Ecriture

Lecture
Business

Domain model
Data access

Ecriture

DB

CQRS
Lecture
Query
Service

Presentation

Ecriture
Command
Service

Business

Data access

Domain model
Data access

DB

CQRS
Presentation

Command Query
Service Service

Business

Domain model
Data access Data access

DB

DB

CQRS
Presentation

Command Query
Service Service

Business

Domain model
Data access Data access

DB

DB

Conclusion

Conclusion
Si vous navez pas tout retenu, pas de panique !

Conclusion
Les technologies changent, les grands concepts restent.

Rfrences
Patterns of Enterprise Application Architecture (PoEAA) Martin Fowler ( 2003 )

Rfrences
DDD
Communaut :
http://domaindrivendesign.org
http://tech.groups.yahoo.com/group/domaindrivendesign/

Livres :

Rfrences
CQRS
Communaut :
http://www.cqrsinfo.com/ http://abdullin.com/wiki/command-query-responsibility-segregationcqrs.html http://groups.google.com/group/dddcqrs

Livre :

Questions ?

Pour aller plus loin


Chaque semaine, les DevCamps
ALM, Azure, Windows Phone, HTML5, OpenData
http://msdn.microsoft.com/fr-fr/devcamp

Prochaines sessions des Dev Camps


10 fvrier 2012
16 fvrier 2012 17 fvrier 2012 21 fvrier 2012 2 mars 2012 6 mars 2012 9 mars 2012 13 mars 2012 14 mars 2012 15 mars 2012 16 mars 2012 20 mars 2012 23 mars 2012

Live Meeting
Live Meeting Live Meeting Live Meeting Live Meeting Live Meeting Live Meeting Live Meeting Live Meeting Live Meeting Live Meeting Live Meeting Live Meeting

Open Data - Dvelopper des applications riches avec le protocole Open Data
Azure series - Dvelopper des applications sociales sur la plateforme Windows Azure Comprendre le canvas avec Galactic et la librairie three.js La production automatise de code avec CodeFluent Entities Comprendre et mettre en oeuvre le toolkit Azure pour Windows Phone 7, iOS et Android Nuget et ALM Kinect - Bien grer la vie de son capteur Sharepoint series - Automatisation des tests TFS Health Check - vrifier la bonne sant de votre plateforme de dveloppement Azure series - Dvelopper pour les tlphones, les tablettes et le cloud avec Visual Studio 2010 Applications METRO design - Dsossage en rgle d'un template METRO javascript Retour d'exprience LightSwitch, Optimisation de l'accs aux donnes, Intgration Silverlight OAuth - la cl de l'utilisation des rseaux sociaux dans votre application

Tlchargement, ressources et toolkits : RdV sur MSDN


http://msdn.microsoft.com/fr-fr/

Les offres connatre


90 jours dessai gratuit de Windows Azure
www.windowsazure.fr

Jusqu 35% de rduction sur Visual Studio Pro, avec labonnement MSDN
www.visualstudio.fr

S-ar putea să vă placă și