Introduction au Domain Driven Design

DNG Consulting
DNG ConsultingCEO em DNG Consulting
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  
1 de 33

Recomendados

DDD Introduction por
DDD IntroductionDDD Introduction
DDD IntroductionGregory Boissinot
748 visualizações94 slides
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES por
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUESARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUES
ARCHITECTURE MICROSERVICE : TOUR D’HORIZON DU CONCEPT ET BONNES PRATIQUESSOAT
8.5K visualizações99 slides
Microservices Architecture Part 2 Event Sourcing and Saga por
Microservices Architecture Part 2 Event Sourcing and SagaMicroservices Architecture Part 2 Event Sourcing and Saga
Microservices Architecture Part 2 Event Sourcing and SagaAraf Karsh Hamid
9.1K visualizações58 slides
Introduction to DDD por
Introduction to DDDIntroduction to DDD
Introduction to DDDEduards Sizovs
2.4K visualizações33 slides
Domain Driven Design por
Domain Driven DesignDomain Driven Design
Domain Driven DesignYoung-Ho Cho
8.3K visualizações64 slides
Domain Driven Design por
Domain Driven DesignDomain Driven Design
Domain Driven DesignRyan Riley
9.8K visualizações32 slides

Mais conteúdo relacionado

Mais procurados

Domain Driven Design por
Domain Driven DesignDomain Driven Design
Domain Driven DesignHarsh Jegadeesan
4K visualizações45 slides
Domain driven design and model driven development por
Domain driven design and model driven developmentDomain driven design and model driven development
Domain driven design and model driven developmentDmitry Geyzersky
5.6K visualizações26 slides
Domain driven design por
Domain driven designDomain driven design
Domain driven designAmit Mukherjee
2K visualizações18 slides
Docker swarm por
Docker swarmDocker swarm
Docker swarmAlberto Guimarães Viana
3.4K visualizações36 slides
Architectures orientés services (SOA) por
Architectures orientés services (SOA)Architectures orientés services (SOA)
Architectures orientés services (SOA)Heithem Abbes
8.7K visualizações57 slides
Domain Driven Design(DDD) Presentation por
Domain Driven Design(DDD) PresentationDomain Driven Design(DDD) Presentation
Domain Driven Design(DDD) PresentationOğuzhan Soykan
5.9K visualizações34 slides

Mais procurados(20)

Domain Driven Design por Harsh Jegadeesan
Domain Driven DesignDomain Driven Design
Domain Driven Design
Harsh Jegadeesan4K visualizações
Domain driven design and model driven development por Dmitry Geyzersky
Domain driven design and model driven developmentDomain driven design and model driven development
Domain driven design and model driven development
Dmitry Geyzersky5.6K visualizações
Domain driven design por Amit Mukherjee
Domain driven designDomain driven design
Domain driven design
Amit Mukherjee2K visualizações
Architectures orientés services (SOA) por Heithem Abbes
Architectures orientés services (SOA)Architectures orientés services (SOA)
Architectures orientés services (SOA)
Heithem Abbes8.7K visualizações
Domain Driven Design(DDD) Presentation por Oğuzhan Soykan
Domain Driven Design(DDD) PresentationDomain Driven Design(DDD) Presentation
Domain Driven Design(DDD) Presentation
Oğuzhan Soykan5.9K visualizações
Domain Driven Design (Ultra) Distilled por Nicola Costantino
Domain Driven Design (Ultra) DistilledDomain Driven Design (Ultra) Distilled
Domain Driven Design (Ultra) Distilled
Nicola Costantino154 visualizações
Implementing Microservices by DDD por Amazon Web Services
Implementing Microservices by DDDImplementing Microservices by DDD
Implementing Microservices by DDD
Amazon Web Services2.4K visualizações
What are Microservices | Microservices Architecture Training | Microservices ... por Edureka!
What are Microservices | Microservices Architecture Training | Microservices ...What are Microservices | Microservices Architecture Training | Microservices ...
What are Microservices | Microservices Architecture Training | Microservices ...
Edureka!1.7K visualizações
Microservice Architecture | Microservices Tutorial for Beginners | Microservi... por Edureka!
Microservice Architecture | Microservices Tutorial for Beginners | Microservi...Microservice Architecture | Microservices Tutorial for Beginners | Microservi...
Microservice Architecture | Microservices Tutorial for Beginners | Microservi...
Edureka!1.4K visualizações
Domain Driven Design por Araf Karsh Hamid
Domain Driven DesignDomain Driven Design
Domain Driven Design
Araf Karsh Hamid3.6K visualizações
Domain Driven Design por Nader Albert
Domain Driven DesignDomain Driven Design
Domain Driven Design
Nader Albert4.4K visualizações
More the merrier: a microservices anti-pattern por Chris Richardson
More the merrier: a microservices anti-patternMore the merrier: a microservices anti-pattern
More the merrier: a microservices anti-pattern
Chris Richardson2.1K visualizações
Chp2 - Vers les Architectures Orientées Services por Lilia Sfaxi
Chp2 - Vers les Architectures Orientées ServicesChp2 - Vers les Architectures Orientées Services
Chp2 - Vers les Architectures Orientées Services
Lilia Sfaxi4.4K visualizações
HTML 5 - intro - en francais por Vlad Posea
HTML 5 - intro - en francaisHTML 5 - intro - en francais
HTML 5 - intro - en francais
Vlad Posea11.5K visualizações
Microservices por SmartBear
MicroservicesMicroservices
Microservices
SmartBear1.4K visualizações
Red Hat Value Proposition - Red Hat DevOps & Microservices Conference 2017 por Xpand IT
Red Hat Value Proposition - Red Hat DevOps & Microservices Conference 2017Red Hat Value Proposition - Red Hat DevOps & Microservices Conference 2017
Red Hat Value Proposition - Red Hat DevOps & Microservices Conference 2017
Xpand IT1.7K visualizações
Hexagonal Architecture.pdf por VladimirRadzivil
Hexagonal Architecture.pdfHexagonal Architecture.pdf
Hexagonal Architecture.pdf
VladimirRadzivil385 visualizações

Similar a Introduction au Domain Driven Design

Mappingobjetrelationnel[1] por
Mappingobjetrelationnel[1]Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]linasafaa
556 visualizações47 slides
Linq et Entity framework por
Linq et Entity frameworkLinq et Entity framework
Linq et Entity frameworkDNG Consulting
3.2K visualizações48 slides
SQL Server et les développeurs por
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs Microsoft
600 visualizações34 slides
Fondamentaux d'architecture d'une application Flex por
Fondamentaux d'architecture d'une application FlexFondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application Flexdavid deraedt
619 visualizações37 slides
Fondamentaux d'architecture d'une application Flex por
Fondamentaux d'architecture d'une application FlexFondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application Flexdavid deraedt
1.7K visualizações37 slides
Portails Etat De L'art por
Portails  Etat De L'artPortails  Etat De L'art
Portails Etat De L'artTugdual Grall
2.4K visualizações77 slides

Similar a Introduction au Domain Driven Design(20)

Mappingobjetrelationnel[1] por linasafaa
Mappingobjetrelationnel[1]Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]
linasafaa556 visualizações
Linq et Entity framework por DNG Consulting
Linq et Entity frameworkLinq et Entity framework
Linq et Entity framework
DNG Consulting3.2K visualizações
SQL Server et les développeurs por Microsoft
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs
Microsoft600 visualizações
Fondamentaux d'architecture d'une application Flex por david deraedt
Fondamentaux d'architecture d'une application FlexFondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application Flex
david deraedt619 visualizações
Fondamentaux d'architecture d'une application Flex por david deraedt
Fondamentaux d'architecture d'une application FlexFondamentaux d'architecture d'une application Flex
Fondamentaux d'architecture d'une application Flex
david deraedt1.7K visualizações
Portails Etat De L'art por Tugdual Grall
Portails  Etat De L'artPortails  Etat De L'art
Portails Etat De L'art
Tugdual Grall2.4K visualizações
Architecture des applications métiers por Gasytek
Architecture des applications métiersArchitecture des applications métiers
Architecture des applications métiers
Gasytek1.7K visualizações
Patterns (et anti-patterns) d’architecture ou comment mieux concevoir ses app... por Microsoft
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...
Microsoft2K visualizações
Design applicatif avec symfony2 por RomainKuzniak
Design applicatif avec symfony2Design applicatif avec symfony2
Design applicatif avec symfony2
RomainKuzniak9.5K visualizações
Les vrais enjeux de l'IA.pdf por BabacarDIOP48
Les vrais enjeux de l'IA.pdfLes vrais enjeux de l'IA.pdf
Les vrais enjeux de l'IA.pdf
BabacarDIOP484 visualizações
Discovery Session France: Atelier découverte de la Data Virtualization por Denodo
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
Denodo 245 visualizações
Architecture orientée service (SOA) por Klee Group
Architecture orientée service (SOA)Architecture orientée service (SOA)
Architecture orientée service (SOA)
Klee Group15.6K visualizações
Environnements & Développements por Paulin CHOUDJA
Environnements & DéveloppementsEnvironnements & Développements
Environnements & Développements
Paulin CHOUDJA993 visualizações
Cours architecture por Abdelaziz Elbaze
Cours architectureCours architecture
Cours architecture
Abdelaziz Elbaze2.7K visualizações
De A à Z : Choisir une architecture pour sa solution applicative por Microsoft
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
Microsoft906 visualizações
Denodo, pilier central de votre stratégie API por Denodo
Denodo, pilier central de votre stratégie APIDenodo, pilier central de votre stratégie API
Denodo, pilier central de votre stratégie API
Denodo 181 visualizações
Discovery Session France: Atelier découverte de la Data Virtualization por Denodo
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
Denodo 50 visualizações
Microservices-DDD-Telosys-Devoxx-FR-2022 por Laurent Guérin
Microservices-DDD-Telosys-Devoxx-FR-2022Microservices-DDD-Telosys-Devoxx-FR-2022
Microservices-DDD-Telosys-Devoxx-FR-2022
Laurent Guérin202 visualizações
Entity_framework_db first por Zineb ELGARRAI
Entity_framework_db firstEntity_framework_db first
Entity_framework_db first
Zineb ELGARRAI271 visualizações
Single Page Application por Cherif Bouchelaghem
Single Page ApplicationSingle Page Application
Single Page Application
Cherif Bouchelaghem1.2K visualizações

Mais de DNG Consulting

Concevoir, développer et sécuriser des micro-services avec Spring Boot por
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
2.7K visualizações24 slides
Introduction aux Web components (DNG Consulting) por
Introduction aux Web components (DNG Consulting)Introduction aux Web components (DNG Consulting)
Introduction aux Web components (DNG Consulting)DNG Consulting
1.4K visualizações39 slides
Présentation DevoxxFR 2015 sur GWT por
Présentation DevoxxFR 2015 sur GWTPrésentation DevoxxFR 2015 sur GWT
Présentation DevoxxFR 2015 sur GWTDNG Consulting
6.7K visualizações30 slides
Devoxx fr por
Devoxx frDevoxx fr
Devoxx frDNG Consulting
677 visualizações30 slides
Présentation GWT et HTML 5 pour l'Offline por
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
2.2K visualizações20 slides
GWT Introduction for Eclipse Day por
GWT Introduction for Eclipse Day GWT Introduction for Eclipse Day
GWT Introduction for Eclipse Day DNG Consulting
685 visualizações12 slides

Mais de DNG Consulting(8)

Concevoir, développer et sécuriser des micro-services avec Spring Boot por DNG Consulting
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
DNG Consulting2.7K visualizações
Introduction aux Web components (DNG Consulting) por DNG Consulting
Introduction aux Web components (DNG Consulting)Introduction aux Web components (DNG Consulting)
Introduction aux Web components (DNG Consulting)
DNG Consulting1.4K visualizações
Présentation DevoxxFR 2015 sur GWT por DNG Consulting
Présentation DevoxxFR 2015 sur GWTPrésentation DevoxxFR 2015 sur GWT
Présentation DevoxxFR 2015 sur GWT
DNG Consulting6.7K visualizações
Devoxx fr por DNG Consulting
Devoxx frDevoxx fr
Devoxx fr
DNG Consulting677 visualizações
Présentation GWT et HTML 5 pour l'Offline por DNG Consulting
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
DNG Consulting2.2K visualizações
GWT Introduction for Eclipse Day por DNG Consulting
GWT Introduction for Eclipse Day GWT Introduction for Eclipse Day
GWT Introduction for Eclipse Day
DNG Consulting685 visualizações
Session GWT Devoxx France 2012 Cobra por DNG Consulting
Session GWT Devoxx France 2012 CobraSession GWT Devoxx France 2012 Cobra
Session GWT Devoxx France 2012 Cobra
DNG Consulting3.1K visualizações
Resource Oriented Architecture por DNG Consulting
Resource Oriented ArchitectureResource Oriented Architecture
Resource Oriented Architecture
DNG Consulting2.6K visualizações

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.

Notas do Editor

  1. Entreprise JavaBeans 3.0