SlideShare une entreprise Scribd logo
1  sur  33
Le Domain Driven Design Une conception pilotée par le domaine pour l’entreprise  Page     Sami Jaber (webmaster du site DotNetGuru.org et fondateur de DNG-Consulting)
Le Symposium DNG ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Pourquoi encore parler d’architecture en 2008 ? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Page     Les outils évoluent, le Design aussi Modifie la manière de penser n-tiers
Evans, Eric.  Domain-Driven Design: Tackling Complexity in the Heart of Software.  Addison-Wesley Professional, 2004.
Avram, Abel et Marinescu, Floyd.  Domain-Driven Design Quickly.  Disponible gratuitement :  http://www.infoq.com/minibooks/domain-driven-design-quickly .
Page     L’architecture n-tiers traditionnelle Couche d’accès aux données Couche  d’objets du domaine L’architecture n-tiers « traditionnelle » Couche de  service Présentation Partenaire Base de données Base de données BLL DAL Collections (…) XSL Données WebServices Domaine WebForms WinForms ASP.NET (…) Enterprise Services WebServices Remoting Threading Reflection Serialization Reflection XML ADO.NET Services
Exemple de service « traditionnel »  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Page     public   class  AccountService { [OperationBehavior(TransactionRequired=true)]  public   void  Credit( Account  account,  double  amount) { 1) Vérification autorisation 2) Récupérer DAL et réaliser opération 3) commiter   } } } Avec l’émergence des Framework type Linq, l’intérêt d’une couche DAL est  de plus en plus discutable
…  et le domaine  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],public   class  EcritureComptable { public  DateTime DateEcriture {  get  {  return  this.dateEcriture; } set  {this.dateEcriture =  value ;} public   int  MontantEcriture{} } } De simples structures ?  Syndrome du modèle anémique
Avantages / Inconvénients ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Page     L’architecture n-tiers traditionnelle Couche Infrastructure Couche applicative L’architecture DDD Couche du domaine Base de données Base de données Collections (…) XSL Repositories Présentation Partenaire Domaine WebForms WinForms ASP.NET (…) Enterprise Services WebServices Remoting Threading Reflection Serialization Reflection XML ADO.NET Factories Services
Page  L’ubiquitous Language et DSL Exemple Account Holder withdraws cash  I want to  withdraw   cash  from an  ATM   I can get money when the bank is closed  Scenario 1 :  Account  has  sufficient  funds  Given the account balance is $100  And the  card   is valid  And the  machine   contains enough money   When the Account Holder requests $20  Then the ATM should dispense $20  And the account balance should be $80  And the card should be returned  Scenario 2 : Account has insufficient funds  Given the account balance is $10  And the card is valid  And the machine contains enough money  When the Account Holder requests $20  The ATM should not dispense any money  ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Domain Driven Development ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Les Mots-clé de l’univers DDD ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Les agrégats ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Exemple d’agrégat Page     ,[object Object],[object Object],[object Object],Racines
Les Factories ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Et la couche de services ? ,[object Object],[object Object],[object Object],[object Object],[object Object],Page  
Les Value Objects ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Les repositories Page     ,[object Object],[object Object],[object Object],[object Object],[object Object]
Exemple avec Linq ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],public class  OrderRepositoryImpl  :  IOrderRepository { ICollection   FindAllValidOrders (string  orderId ); ICollection<Order> orders = Repository<Order> .FindAll(Where.Order.Id == orderId && Where.Order.Status == OrderStatus.ReadyToShip && Where.Order.Date >= DateTime.Today); return orders; }
Les DSL à la rescousse  (exemple réalisé avec Boo) ,[object Object],[object Object],Page  
La big picture DDD Page  
DDD, l’architecture idéale ? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Page  
La couche de présentation Un des enjeux majeurs de demain
La couche de présentation coûte cher ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
La couche de présentation coûte cher ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Le trio gagnant ,[object Object],Page     ,[object Object],[object Object],[object Object],[object Object]
Le binding ,[object Object],[object Object],Page     Bindé sur le détail  d’une Facture Propriété : Id Facture Ligne Ligne
La validation et la conversion ,[object Object],[object Object]
Ce type d’architecture existe-t-elle ? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Conclusion ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Page  
Annexes Page  
Sites et liens … ,[object Object],[object Object],[object Object],[object Object],[object Object],Page  

Contenu connexe

Tendances

Sécurité des Applications WEB -LEVEL1
 Sécurité des Applications WEB-LEVEL1 Sécurité des Applications WEB-LEVEL1
Sécurité des Applications WEB -LEVEL1
Tarek MOHAMED
 

Tendances (20)

Microservices avec Spring Cloud
Microservices avec Spring CloudMicroservices avec Spring Cloud
Microservices avec Spring Cloud
 
Sécurité des Applications WEB -LEVEL1
 Sécurité des Applications WEB-LEVEL1 Sécurité des Applications WEB-LEVEL1
Sécurité des Applications WEB -LEVEL1
 
Présentation Docker
Présentation DockerPrésentation Docker
Présentation Docker
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka StreamsTraitement distribue en BIg Data - KAFKA Broker and Kafka Streams
Traitement distribue en BIg Data - KAFKA Broker and Kafka Streams
 
Etude sur le Big Data
Etude sur le Big DataEtude sur le Big Data
Etude sur le Big Data
 
三層式架構設計
三層式架構設計三層式架構設計
三層式架構設計
 
Observability
ObservabilityObservability
Observability
 
Jenkins
JenkinsJenkins
Jenkins
 
Présentation SOA
Présentation SOAPrésentation SOA
Présentation SOA
 
AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture P...
AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture P...AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture P...
AWS re:Invent 2016: From Monolithic to Microservices: Evolving Architecture P...
 
Introduction à la démarche Devops
Introduction à la démarche DevopsIntroduction à la démarche Devops
Introduction à la démarche Devops
 
Les étapes clés d'un projet web
Les étapes clés d'un projet webLes étapes clés d'un projet web
Les étapes clés d'un projet web
 
Microservice Architecture
Microservice ArchitectureMicroservice Architecture
Microservice Architecture
 
Patterns (et anti-patterns) d’architecture ou comment mieux concevoir ses app...
Patterns (et anti-patterns) d’architecture ou comment mieux concevoir ses app...Patterns (et anti-patterns) d’architecture ou comment mieux concevoir ses app...
Patterns (et anti-patterns) d’architecture ou comment mieux concevoir ses app...
 
Architecture microservices avec docker
Architecture microservices avec dockerArchitecture microservices avec docker
Architecture microservices avec docker
 
What is an API Gateway?
What is an API Gateway?What is an API Gateway?
What is an API Gateway?
 
Introduction to microservices
Introduction to microservicesIntroduction to microservices
Introduction to microservices
 
Microservices
MicroservicesMicroservices
Microservices
 
eServices-Chp2: SOA
eServices-Chp2: SOAeServices-Chp2: SOA
eServices-Chp2: SOA
 

Similaire à Introduction au Domain Driven Design

Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]
linasafaa
 
Portails Etat De L'art
Portails  Etat De L'artPortails  Etat De L'art
Portails Etat De L'art
Tugdual Grall
 
Environnements & Développements
Environnements & DéveloppementsEnvironnements & Développements
Environnements & Développements
Paulin CHOUDJA
 

Similaire à Introduction au Domain Driven Design (20)

Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]
 
Linq et Entity framework
Linq et Entity frameworkLinq et Entity framework
Linq et Entity framework
 
Chp2 - Vers les Architectures Orientées Services
Chp2 - Vers les Architectures Orientées ServicesChp2 - Vers les Architectures Orientées Services
Chp2 - Vers les Architectures Orientées Services
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs
 
Fondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application FlexFondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application Flex
 
Fondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application FlexFondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application Flex
 
Portails Etat De L'art
Portails  Etat De L'artPortails  Etat De L'art
Portails Etat De L'art
 
Architecture des applications métiers
Architecture des applications métiersArchitecture des applications métiers
Architecture des applications métiers
 
Design applicatif avec symfony2
Design applicatif avec symfony2Design applicatif avec symfony2
Design applicatif avec symfony2
 
Les vrais enjeux de l'IA.pdf
Les vrais enjeux de l'IA.pdfLes vrais enjeux de l'IA.pdf
Les vrais enjeux de l'IA.pdf
 
Discovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDiscovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data Virtualization
 
Architecture orientée service (SOA)
Architecture orientée service (SOA)Architecture orientée service (SOA)
Architecture orientée service (SOA)
 
Environnements & Développements
Environnements & DéveloppementsEnvironnements & Développements
Environnements & Développements
 
Cours architecture
Cours architectureCours architecture
Cours architecture
 
De A à Z : Choisir une architecture pour sa solution applicative
De A à Z : Choisir une architecture pour sa solution applicativeDe A à Z : Choisir une architecture pour sa solution applicative
De A à Z : Choisir une architecture pour sa solution applicative
 
Denodo, pilier central de votre stratégie API
Denodo, pilier central de votre stratégie APIDenodo, pilier central de votre stratégie API
Denodo, pilier central de votre stratégie API
 
Discovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDiscovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data Virtualization
 
Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022
 
Entity_framework_db first
Entity_framework_db firstEntity_framework_db first
Entity_framework_db first
 
Single Page Application
Single Page ApplicationSingle Page Application
Single Page Application
 

Plus de DNG Consulting (8)

Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring Boot
 
Introduction aux Web components (DNG Consulting)
Introduction aux Web components (DNG Consulting)Introduction aux Web components (DNG Consulting)
Introduction aux Web components (DNG Consulting)
 
Présentation DevoxxFR 2015 sur GWT
Présentation DevoxxFR 2015 sur GWTPrésentation DevoxxFR 2015 sur GWT
Présentation DevoxxFR 2015 sur GWT
 
Devoxx fr
Devoxx frDevoxx fr
Devoxx fr
 
Présentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'OfflinePrésentation GWT et HTML 5 pour l'Offline
Présentation GWT et HTML 5 pour l'Offline
 
GWT Introduction for Eclipse Day
GWT Introduction for Eclipse Day GWT Introduction for Eclipse Day
GWT Introduction for Eclipse Day
 
Session GWT Devoxx France 2012 Cobra
Session GWT Devoxx France 2012 CobraSession GWT Devoxx France 2012 Cobra
Session GWT Devoxx France 2012 Cobra
 
Resource Oriented Architecture
Resource Oriented ArchitectureResource Oriented Architecture
Resource Oriented Architecture
 

Introduction au Domain Driven Design

  • 1. Le Domain Driven Design Une conception pilotée par le domaine pour l’entreprise Page  Sami Jaber (webmaster du site DotNetGuru.org et fondateur de DNG-Consulting)
  • 2.
  • 3.
  • 4. Evans, Eric. Domain-Driven Design: Tackling Complexity in the Heart of Software. Addison-Wesley Professional, 2004.
  • 5. Avram, Abel et Marinescu, Floyd. Domain-Driven Design Quickly. Disponible gratuitement : http://www.infoq.com/minibooks/domain-driven-design-quickly .
  • 6. Page  L’architecture n-tiers traditionnelle Couche d’accès aux données Couche d’objets du domaine L’architecture n-tiers « traditionnelle » Couche de service Présentation Partenaire Base de données Base de données BLL DAL Collections (…) XSL Données WebServices Domaine WebForms WinForms ASP.NET (…) Enterprise Services WebServices Remoting Threading Reflection Serialization Reflection XML ADO.NET Services
  • 7.
  • 8.
  • 9.
  • 10. Page  L’architecture n-tiers traditionnelle Couche Infrastructure Couche applicative L’architecture DDD Couche du domaine Base de données Base de données Collections (…) XSL Repositories Présentation Partenaire Domaine WebForms WinForms ASP.NET (…) Enterprise Services WebServices Remoting Threading Reflection Serialization Reflection XML ADO.NET Factories Services
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22. La big picture DDD Page 
  • 23.
  • 24. La couche de présentation Un des enjeux majeurs de demain
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 33.

Notes de l'éditeur

  1. Entreprise JavaBeans 3.0