SlideShare ist ein Scribd-Unternehmen logo
1 von 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  

Weitere ähnliche Inhalte

Was ist angesagt?

Chp1 - Introduction au Développement Mobile
Chp1 - Introduction au Développement MobileChp1 - Introduction au Développement Mobile
Chp1 - Introduction au Développement MobileLilia Sfaxi
 
Architectures orientées services
Architectures orientées servicesArchitectures orientées services
Architectures orientées servicesDonia Hammami
 
Node.Js: Basics Concepts and Introduction
Node.Js: Basics Concepts and Introduction Node.Js: Basics Concepts and Introduction
Node.Js: Basics Concepts and Introduction Kanika Gera
 
eServices-Chp3: Composition de Services
eServices-Chp3: Composition de ServiceseServices-Chp3: Composition de Services
eServices-Chp3: Composition de ServicesLilia Sfaxi
 
Domain Driven Design for Angular
Domain Driven Design for AngularDomain Driven Design for Angular
Domain Driven Design for AngularJennifer Estrada
 
Programmation réseau en JAVA
Programmation réseau en JAVAProgrammation réseau en JAVA
Programmation réseau en JAVABachir Benyammi
 
Architectures orientés services (SOA)
Architectures orientés services (SOA)Architectures orientés services (SOA)
Architectures orientés services (SOA)Heithem Abbes
 
Presentation of framework Angular
Presentation of framework AngularPresentation of framework Angular
Presentation of framework AngularLhouceine OUHAMZA
 
Architecture réparties et les services web
Architecture réparties et les services webArchitecture réparties et les services web
Architecture réparties et les services webCHOUAIB EL HACHIMI
 
softCours design pattern m youssfi partie 9 creation des objets abstract fact...
softCours design pattern m youssfi partie 9 creation des objets abstract fact...softCours design pattern m youssfi partie 9 creation des objets abstract fact...
softCours design pattern m youssfi partie 9 creation des objets abstract fact...ENSET, Université Hassan II Casablanca
 

Was ist angesagt? (20)

Chp1 - Introduction au Développement Mobile
Chp1 - Introduction au Développement MobileChp1 - Introduction au Développement Mobile
Chp1 - Introduction au Développement Mobile
 
Présentation Angular 2
Présentation Angular 2 Présentation Angular 2
Présentation Angular 2
 
Architectures orientées services
Architectures orientées servicesArchitectures orientées services
Architectures orientées services
 
Node.Js: Basics Concepts and Introduction
Node.Js: Basics Concepts and Introduction Node.Js: Basics Concepts and Introduction
Node.Js: Basics Concepts and Introduction
 
eServices-Chp3: Composition de Services
eServices-Chp3: Composition de ServiceseServices-Chp3: Composition de Services
eServices-Chp3: Composition de Services
 
Domain Driven Design for Angular
Domain Driven Design for AngularDomain Driven Design for Angular
Domain Driven Design for Angular
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
 
Programmation réseau en JAVA
Programmation réseau en JAVAProgrammation réseau en JAVA
Programmation réseau en JAVA
 
Angular Avancé
Angular AvancéAngular Avancé
Angular Avancé
 
Chp3 - ESB
Chp3 - ESBChp3 - ESB
Chp3 - ESB
 
Architectures orientés services (SOA)
Architectures orientés services (SOA)Architectures orientés services (SOA)
Architectures orientés services (SOA)
 
Support de cours angular
Support de cours angularSupport de cours angular
Support de cours angular
 
Architecture: Microservices
Architecture: MicroservicesArchitecture: Microservices
Architecture: Microservices
 
Presentation of framework Angular
Presentation of framework AngularPresentation of framework Angular
Presentation of framework Angular
 
Arquitetura Node com NestJS
Arquitetura Node com NestJSArquitetura Node com NestJS
Arquitetura Node com NestJS
 
Architecture réparties et les services web
Architecture réparties et les services webArchitecture réparties et les services web
Architecture réparties et les services web
 
Express js
Express jsExpress js
Express js
 
Chp2 - SOA
Chp2 - SOAChp2 - SOA
Chp2 - SOA
 
Introduction to microservices
Introduction to microservicesIntroduction to microservices
Introduction to microservices
 
softCours design pattern m youssfi partie 9 creation des objets abstract fact...
softCours design pattern m youssfi partie 9 creation des objets abstract fact...softCours design pattern m youssfi partie 9 creation des objets abstract fact...
softCours design pattern m youssfi partie 9 creation des objets abstract fact...
 

Ähnlich wie Introduction au Domain Driven Design

Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]linasafaa
 
Linq et Entity framework
Linq et Entity frameworkLinq et Entity framework
Linq et Entity frameworkDNG Consulting
 
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 ServicesLilia Sfaxi
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs Microsoft
 
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 Flexdavid deraedt
 
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 Flexdavid deraedt
 
Portails Etat De L'art
Portails  Etat De L'artPortails  Etat De L'art
Portails Etat De L'artTugdual Grall
 
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...Microsoft
 
Architecture des applications métiers
Architecture des applications métiersArchitecture des applications métiers
Architecture des applications métiersGasytek
 
Design applicatif avec symfony2
Design applicatif avec symfony2Design applicatif avec symfony2
Design applicatif avec symfony2RomainKuzniak
 
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.pdfBabacarDIOP48
 
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 VirtualizationDenodo
 
Architecture orientée service (SOA)
Architecture orientée service (SOA)Architecture orientée service (SOA)
Architecture orientée service (SOA)Klee Group
 
Environnements & Développements
Environnements & DéveloppementsEnvironnements & Développements
Environnements & DéveloppementsPaulin CHOUDJA
 
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 applicativeMicrosoft
 
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 APIDenodo
 
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 VirtualizationDenodo
 
Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022Laurent Guérin
 
Entity_framework_db first
Entity_framework_db firstEntity_framework_db first
Entity_framework_db firstZineb ELGARRAI
 

Ähnlich wie 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
 
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 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
 

Mehr von DNG Consulting

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 BootDNG Consulting
 
Introduction aux Web components (DNG Consulting)
Introduction aux Web components (DNG Consulting)Introduction aux Web components (DNG Consulting)
Introduction aux Web components (DNG Consulting)DNG Consulting
 
Présentation DevoxxFR 2015 sur GWT
Présentation DevoxxFR 2015 sur GWTPrésentation DevoxxFR 2015 sur GWT
Présentation DevoxxFR 2015 sur GWTDNG Consulting
 
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'OfflineDNG Consulting
 
GWT Introduction for Eclipse Day
GWT Introduction for Eclipse Day GWT Introduction for Eclipse Day
GWT Introduction for Eclipse Day DNG Consulting
 
Session GWT Devoxx France 2012 Cobra
Session GWT Devoxx France 2012 CobraSession GWT Devoxx France 2012 Cobra
Session GWT Devoxx France 2012 CobraDNG Consulting
 
Resource Oriented Architecture
Resource Oriented ArchitectureResource Oriented Architecture
Resource Oriented ArchitectureDNG Consulting
 

Mehr von 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.

Hinweis der Redaktion

  1. Entreprise JavaBeans 3.0