Hexagonal architecture (software): Difference between revisions

Content deleted Content added
No edit summary
Monkbot (talk | contribs)
m Task 18 (cosmetic): eval 8 templates: del empty params (5×);
Line 20:
 
== Usage, criticism and evolution ==
According to [[Martin Fowler (software engineer)|Martin Fowler]], the hexagonal architecture has the benefit of using similarities between presentation layer and data source layer to create symmetric components made of a core surrounded by interfaces, but with the drawback of hiding the inherent asymmetry between a service provider and a service consumer that would better be represented as layers.<ref>{{Cite book|title=Patterns of enterprise application architecture|last=Fowler, Martin|date=2003|publisher=Addison-Wesley|isbn=0-321-12742-0|___location=|pages=21|oclc=50292267}}</ref>
 
According to some authors, the hexagonal architecture is at the origin of the [[microservices]] architecture.<ref>{{Cite book|title=Spring 5.0 microservices : build scalable microservices with Reactive Streams, Spring Boot, Docker, and Mesos|last=Rajesh R. V.|publisher=Packt Publishing|year=2017|isbn=978-1-78712-051-8|edition= Second|___location=|pages=13–14|oclc=999610958}}</ref>
 
== Variants ==
The onion architecture proposed by Jeffrey Palermo in 2008 is similar to the hexagonal architecture: it also externalizes the infrastructure with proper interfaces to ensure loose coupling between the application and the database.<ref>{{Cite web|url=https://jeffreypalermo.com/2008/07/the-onion-architecture-part-1/|title=The Onion Architecture : part 1|last=Jeffrey|first=Palermo|date=2008-07-29|website=Programming with Palermo|language=en-US|access-date=2019-08-12}}</ref> It decomposes further the application core into several concentric rings using [[inversion of control]].<ref>{{Cite book|title=Learning NHibernate 4 : explore the full potential of NHibernate to build robust data access code|last=Chatekar, Suhas|publisher=Packt Publishing|year=2015|isbn=978-1-78439-206-2|___location=|pages=249–250|oclc=937787252}}</ref>
 
The clean architecture proposed by [[Robert C. Martin]] in 2012 combines the principles of the hexagonal architecture, the onion architecture and several other variants; It provides additional levels of detail of the component, which are presented as concentric rings. It isolates adapters and interfaces (user interface, databases, external systems, devices) in the outer rings of the architecture and leaves the inner rings for [[use case]]s and [[Entity class|entities]]<ref>{{Cite web|url=https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html|title=The Clean architecture {{!}} Clean Coder Blog|last=Martin|first=Robert, C.|date=2012-08-12|website=blog.cleancoder.com|access-date=2019-08-12}}</ref><sup>,</sup>.<ref>{{Cite book|title=Clean architecture : a craftsman's guide to software structure and design|last=Martin, Robert C.|publisher=Prentice Hall|year=2017|isbn=978-0-13-449416-6|___location=|pages=|oclc=1004983973}}</ref> The clean architecture uses the principle of [[Dependency inversion principle|dependency inversion]] with the strict rule that dependencies shall only exist between an outer ring to an inner ring and never the contrary.
 
== See also ==