Bonnes Pratiques Web & Cloud
58.8K views | +4 today
Follow
Bonnes Pratiques Web & Cloud
Administration cloud et développement web
Curated by Mickael Ruau
Your new post is loading...
Your new post is loading...

Popular Tags

Current selected tag: 'conventions de nommage'. Clear
Scooped by Mickael Ruau
Scoop.it!

Application / Domain / Infrastructure : des mots de la Layered Hexagonal Clean Architecture ? | OCTO Talks !

Application / Domain / Infrastructure : des mots de la Layered Hexagonal Clean Architecture ? | OCTO Talks ! | Bonnes Pratiques Web & Cloud | Scoop.it
 

Depuis quelques années, quand je découvre un projet je vois régulièrement des répertoires qui s’appellent :

  • Application
  • Domain
  • Infrastructure

Je me suis interrogé sur le sens de ces mots. Est-ce qu’ils sont liés à un pattern en particulier ? J’ai eu des réponses diverses en fonction des projets :

  • « C’est une architecture en couches »
  • « C’est une architecture hexagonale »
  • « C’est une Clean Architecture »
  • « On fait du Domain-Driven Design (DDD) »

Quelle est la bonne réponse ? D’où viennent ces mots ? Quel intérêt à les utiliser ou ne pas les utiliser aujourd’hui ? Je me suis documenté sur le sujet et je vous propose un voyage dans le temps pour y voir un peu plus clair.

Mickael Ruau's insight:

 

Annexe : Exemples de code

DDD Sample

Ce repository qui illustrait le Domain-Driven Design, initié vers 2008 par une équipe comprenant Eric Evans, utilise ces mots application / domain / infrastructure :

Dans src/main/java/se/citerus/dddsample, on trouve les répertoires :

. ├── application/ ├── config/ ├── domain/ ├── infrastructure/ └── interfaces/

Le répertoire application contient l’interface de programmation du code métier, une fine couche qui orchestre le code métier :

src/main/java/se/citerus/dddsample/application/ ├── ApplicationEvents.java ├── BookingService.java ├── CargoInspectionService.java ├── HandlingEventService.java └── impl/    ├── BookingServiceImpl.java    ├── CargoInspectionServiceImpl.java    └── HandlingEventServiceImpl.java

Dans domain, on trouve les objets et les règles métier, par exemple pour les marchandises (cargo) :

src/main/java/se/citerus/dddsample/domain/model/cargo ├── Cargo.java ├── CargoRepository.java ├── Delivery.java ├── HandlingActivity.java ├── Itinerary.java ├── Leg.java ├── RouteSpecification.java ├── RoutingStatus.java ├── TrackingId.java └── TransportStatus.java

Et le répertoire infrastructure contient le code de persistance et de messaging :

src/main/java/se/citerus/dddsample/infrastructure/ ├── messaging/ │   └── jms/ ├── persistence/ │   └── hibernate/ └── routing/ └── ExternalRoutingService.java

Modular Monolith with DDD

Cet autre exemple de Kamil Grzybek utilise des répertoires Application / Domain / Infrastructure dans ses modules, qui correspondent chacun à des bounded contexts :

Vous pouvez inspecter chaque module :

No comment yet.
Scooped by Mickael Ruau
Scoop.it!

Learn BEM: CSS Naming Convention

http://inarocket.com Learn BEM fundamentals as fast as possible. What is BEM (Block, element, modifier), BEM syntax, how it works with a real example, etc.
No comment yet.