PHP 8.2: Was ist neu?
Die neue Version von PHP steht vor der Tür. Was sind die neuen Implementierungen, über die Sie Bescheid wissen sollten? Lesen Sie diesen Artikel, um es herauszufinden!
Erforschen Sie die Möglichkeiten der hexagonalen Architektur zur Verbesserung der Wartbarkeit, Testbarkeit und Anpassbarkeit von Software.
In diesem umfassenden Leitfaden werden wir uns mit den Nuancen folgender Themen befassen Sechseckige ArchitekturWir werden seine Definition, seine Bestandteile und seine Geschichte untersuchen. Wir werden Vergleiche ziehen zwischen Sechseckige Architektur und andere populäre Architekturmuster, um ihre einzigartigen Stärken hervorzuheben. Außerdem werden wir seine kritische Rolle bei Domain-Driven Design (DDD) und Microservices untersuchen, die in der Welt der modernen Architektur zunehmend an Bedeutung gewinnen. Software-Entwicklung.
In der dynamischen Landschaft der Software-Architektur, Sechseckige Architekturauch bekannt als die Häfen und Adapter Musterhat sich zu einem beachtlichen Konkurrenten entwickelt, der nach und nach die Normen der traditionelle Schichtenarchitektur.
Angetrieben von der Notwendigkeit, eine Architektur zu entwerfen, die ein einfaches Testen und eine bessere Wartbarkeit ermöglicht, Sechseckige Architektur wurde konzipiert. Seine Aufgabe: die Bereitstellung robuster Softwareanwendungen frei von den Verwicklungen und Unwägbarkeiten der Außenwelt.
In diesem Artikel begeben wir uns auf eine Reise durch die Annalen der Sechseckige Architektur - eine Architektur, die sich an der Schnittstelle zwischen Einfachheit und Macht befindet. Wir werden ihre Geschichte, ihre Struktur und ihre Prinzipien enträtseln und sie mit anderen Architekturmuster. Wir werden untersuchen, inwieweit es möglich ist, die Qualität von Softwareanwendungen zu verbessern und die zunehmende technische Verschuldung zu verringern, die die Softwareindustrie bedroht.
Ihr Kernstück, Sechseckige Architekturoder die Häfen und Architektur von Adapternist ein Entwurfsmuster, das auf der Trennung von Belangen beruht. Es unterteilt eine Anwendung in zwei primäre Bereiche: den inneren und den äußeren Bereich.
Das Innere, das auch als Anwendungskern bezeichnet wird, beherbergt die Geschäftslogik und Domänenobjekte - der Kern des Wertes in Ihrer Software. Dieses innere Heiligtum bleibt losgelöst von äußeren Einflüssen und bewahrt so die Integrität der Software. Geschäftslogik und das Domänenmodell.
Die Außenseite hingegen ist der Bereich der externen Systeme - von der Benutzeroberfläche bis hin zum Datenbankzugriff -, die mit dem Anwendungskern interagieren. Diese Interaktionen werden über einen Mechanismus von Ports und Adaptern verwaltet, der eine saubere Trennung zwischen dem Anwendungskern und seine externen Akteure.
Sechseckige Architektur ist eine Erfindung von Alistair Cockburn, einem Visionär, der dieses Konzept erstmals als Antwort auf die Beschränkungen der herkömmlichen Systeme formulierte. geschichtete Architektur. Es wurde entwickelt, um eine technologieunabhängige Domänenschicht die den Kern isoliert Geschäftslogik von äußeren Einflüssen, wie zum Beispiel dem Benutzeroberfläche Code und Datenbankzugriff.
Im traditionellen geschichtete ArchitekturÄnderungen in einer Schicht konnten sich auf andere Schichten auswirken und zu unbeabsichtigten Folgen führen. Außerdem wurde das Testen durch komplizierte Abhängigkeiten zwischen den Schichten erschwert.
Sechseckige Architektur Als Lösung bot sich ein Modell an, bei dem Änderungen in einem Teil des Systems die anderen Teile nicht aus dem Gleichgewicht bringen würden. Im Wesentlichen ging es darum, die Geschäftslogik unabhängig davon, ob der Zugriff über eine Webschnittstelle, ein REST-APIoder sogar eine Kommandozeile.
Sechseckige Architekturdas aufgrund seiner hexagonalen Darstellung in Diagrammen benannt wurde, besteht aus drei Kernkomponenten: dem Domänenmodell, Anschlüsse (primär und sekundär) und Adapter (primär und sekundär).
Die Domänenmodell ist das Herzstück der Softwareanwendung und kapselt die Unternehmensregeln und Kernlogik. Die Domänenobjekte, die sich in diesem Modell befinden, enthalten spezifische Geschäftswerte und -regeln.
Als nächstes haben wir die Ports, die Leitungen zwischen den Domänenmodell und der Außenwelt. Primäre Häfen die Anwendung offenlegen Geschäftslogikdie als Tor zum Anwendungskern dienen. Sie stellen die Anwendungsfälle dar, die die Anwendung unterstützt.
Sekundäre Häfensind dagegen nach außen gerichtet. Sie stellen Schnittstellen dar, die die Anwendung von der Außenwelt benötigt, wie Persistenzschichten oder externe Dienste.
Schließlich gibt es noch die Adapter, die als Übersetzer zwischen den Domänenmodell und der Außenwelt. Sie konvertieren Daten aus dem Format, das von externe Systeme auf das Format des Programms Geschäftslogikund andersherum.
Anschlüsse und Adapter bilden die Brücke zwischen dem Anwendungskern und den externen Akteuren. Die primären Ports stellen die geschäftlichen Anwendungsfälle dar, die die Anwendung offenlegt und den externen Akteuren die Interaktion mit der Anwendung ermöglichen. Stellen Sie sich diese als die Dienstschnittstellen in Ihrem Business-Schicht.
Sekundäre Ports hingegen sind Schnittstellen, die Ihre Anwendung von der Außenwelt benötigt. Dabei kann es sich um Dienste wie Datenbankzugriff, Webdienste oder sogar Zeitdienste handeln. Sie stellen das bereit, was die Anwendung benötigt, unabhängig von technologie- oder anbieterspezifischen Merkmalen.
Adapter sind die physischen Erscheinungsformen dieser Ports. Sie übersetzen die Daten aus dem Format, das von der Geschäftslogik in das von den externen Akteuren verwendete Format und umgekehrt. Bei diesen Adaptern kann es sich um technologiespezifische Adapterkonvertierungen für REST-APIs, SQL-Datenbanken oder Messaging-Systeme handeln, aber auch um Batch-Skripte oder Benutzeroberfläche Code. Die Adapter bilden die Grenze der Anwendung, so dass die Anwendung technologieunabhängig ist.
Primäre Ports stellen die Operationen dar, die unsere Anwendung ausführen kann - die Befehle, die unsere Kerndomäne akzeptieren kann. Sie werden oft als Schnittstellen in Sprachen wie Javaund legt fest, welche Operationen die Anwendung anbietet.Primäradaptersind also die Implementierungen dieser Schnittstellen für bestimmte externe Akteure.
Sekundäre Ports hingegen sind Schnittstellen, die die Kerndomäne zur Interaktion mit der Außenwelt verwendet. Dazu können Schnittstellen für die Persistenz von Domänenobjekten oder das Senden von Benachrichtigungen gehören. Sekundäradapter sind die eigentlichen Implementierungen dieser Schnittstellen - eine SQL-Datenbank Adapter oder einen Adapter für E-Mail-Benachrichtigungen.
Gemeinsam wird die primäre und sekundäre Anschlüsse und Adapter bilden eine flexible, modulare Grenze um die Anwendung herum und trennen die Fachgebietslogik von technischen Belangen zu trennen. Sie erzwingen eine saubere Trennung der Zuständigkeiten und ermöglichen es, dass sich verschiedene Teile des Systems unabhängig voneinander weiterentwickeln können.
Die Abhängigkeitsregel ist ein Grundprinzip der Sechseckige Architektur die besagt, dass die Abhängigkeiten nach innen zum Anwendungskern zeigen sollten. Der Kern der Anwendung ist nicht von einer bestimmten Datenbank, Benutzeroberfläche oder einer anderen externen Einrichtung abhängig.
Dieser Grundsatz steht in engem Zusammenhang mit dem Prinzip der Inversion von Abhängigkeiten (DIP), eines der SOLID-Prinzipien des objektorientierten Designs. DIP besagt, dass High-Level-Module (Geschäftslogik oder Domänenschicht sollte nicht von Low-Level-Modulen (wie dem Datenbankadapter) abhängen. Stattdessen sollten beide von Abstraktionen abhängen. Durch diese Umkehrung der Abhängigkeiten können die High-Level-Module von Änderungen in den Low-Level-Modulen isoliert werden, wodurch ein Design gefördert wird, bei dem die Geschäftslogik steuert die Gesamtarchitektur.
Mapping ist ein wesentlicher Prozess in Sechseckige Architekturwobei ein technologiespezifischer Adapter die Daten aus dem Format, das von externe Systeme in ein Format, das unsere Domänenschicht verstehen kann. Dieses Mapping erleichtert die Übersetzung zwischen der internen und der externen Darstellung der Daten in der Anwendung.
Wenn zum Beispiel eine HTTP-Anfrage von einer externen Schnittstelle wie einer REST-APImüssen die Anfragedaten von JSON in Domänenobjekte übersetzt werden, die die Anwendung verwenden kann. Diese Übersetzung liegt in der Verantwortung der Adapter.
Wenn die Anwendung dagegen eine Antwort senden muss, wandeln die Adapter die Domänenobjekte wieder in JSON um. Auf diese Weise kann die Kernanwendung die Besonderheiten der externen Welt ignorieren und gleichzeitig sicherstellen, dass sie eingehende Daten korrekt interpretieren und ausgehende Daten formatieren kann.
Sechseckige Architektur bietet eine Fülle von Vorteilen, die größtenteils auf die Entkopplung der Softwareanwendungen von ihren externen Elementen und die klare Abgrenzung zwischen den verschiedenen Teilen eines Systems zurückzuführen sind.
Einer der grundlegenden Vorteile ist die Trennung von Belangen, die die Wartbarkeit und Lesbarkeit des Codes fördert. Die Entkopplung des Kerns Geschäftslogik von der Außenwelt ermöglicht Änderungen an technologiespezifischen Adaptern, Datenbanken und Benutzeroberflächen ohne den Kern zu verändern Geschäftslogik.
Sechseckige Architektur zeichnet sich auch im Bereich der Testbarkeit aus. Die Isolierung externer Abhängigkeiten durch die Architektur ermöglicht es Entwicklern, automatisierte Regressionstests durchzuführen und automatisierte Testsuiten einfacher. Diese Isolierung erhöht die Widerstandsfähigkeit der Anwendung, da sich Änderungen an einer Komponente nicht nachteilig auf die anderen auswirken.
Darüber hinaus unterstützt die Architektur mehrere Adapter für denselben Anschluss, was die Möglichkeit eröffnet, mehrere Adapter für denselben sekundären Anschluss zu verwenden. Diese Flexibilität ermöglicht es der Anwendung, mit verschiedenen Arten von Datenbanken zu interagieren oder verschiedene Benutzeroberfläche Plattformen.
Im Bereich der Softwareentwicklung ist Wartungsfreundlichkeit oft eine gefragte Eigenschaft, die traditionelle Architekturstile nicht immer bieten können. Sechseckige Architektur sticht hier durch seine starke Betonung der Wartbarkeit hervor.
Indem wir uns auf die Trennung der Anliegen konzentrieren, Sechseckige Architektur stellt sicher, dass sich Änderungen in einem Teil der Anwendung nicht auf andere Teile auswirken. Diese Eigenschaft trägt dazu bei, den Zeit- und Arbeitsaufwand für das Verständnis und die Fehlersuche im Code zu verringern.
Darüber hinaus fördert die Architektur die Wiederverwendung von Code, indem sie ein Design unterstützt, bei dem der Kern Geschäftslogik ist von den spezifischen Technologien isoliert, die zur Steuerung der Anwendung verwendet werden. Diese Entkopplung ermöglicht es den Entwicklern, ihre Anwendungen auszutauschen, zu aktualisieren oder umzugestalten. externe Schnittstellen ohne die Kernlogik zu beeinträchtigen, was das Risiko der Einführung von Fehlern verringert.
Technische Schulden, ein wichtiges Thema in der Softwareentwicklung, beziehen sich auf die zukünftigen Kosten für die Überarbeitung und Korrektur von Abkürzungen und Hacks im Code. Sechseckige Architektur bietet einen proaktiven Ansatz zur Verringerung dieser Schulden.
Durch die Erleichterung einer klaren Trennung zwischen dem Kern Geschäftslogik und externe Komponenten, Sechseckige Architektur verringert die Wahrscheinlichkeit von miteinander verwobenem Code, der Wartungsprobleme verursachen und die technischen Schulden erhöhen kann. Die inhärente Wartbarkeit und Testbarkeit der Architektur tragen ebenfalls zur Verringerung der technischen Schulden bei, da sie die Einführung von Fehlern verhindern und Refactoring-Bemühungen erleichtern.
Außerdem ist die Fähigkeit der Sechseckige Architektur Änderungen an der Infrastruktur zu unterstützen, ohne dass Änderungen an den Geschäftslogik bietet einen Schutzpuffer gegen technische Schulden. Dank dieser Fähigkeit können sich Teams an geänderte Anforderungen oder Technologien anpassen, ohne große Teile der Anwendung neu schreiben zu müssen.
In der Praxis, Sechseckige Architektur bringt einen strukturierten Ansatz in die Softwareentwicklung. Die sechseckige Begrenzung um die Kernanwendung bietet eine klare Abgrenzung, wo die Anwendung endet und wo die Außenwelt beginnt.
Die Adapter fungieren als Gatekeeper, die Anfragen von externen Akteuren in eine Form übersetzen, die die Kernanwendung verstehen kann, und umgekehrt. Auf diese Weise stellen sie sicher, dass die Kernanwendung unabhängig von den Besonderheiten der Außenwelt bleibt, sei es eine Datenbank, ein externe APIoder eine Benutzeroberfläche.
Domain-Driven Design (DDD) ist eine Softwareentwicklungsmethodik, bei der die Kerngeschäftskonzepte oder die Fachgebietslogikals wichtigste treibende Kraft für das Design. Diese Methodik stimmt bemerkenswert gut überein mit Sechseckige Architekturdie auch die Bedeutung der Geschäftslogik und die Domänenmodell in der Architektur.
Im Kontext der Sechseckige ArchitekturDDD stellt sicher, dass die High-Level-Module der Anwendung - die Domänenschichten - unabhängig von den externen Elementen sind, wie z. B. dem Benutzeroberfläche oder der Datenbank. Diese Unabhängigkeit wird durch die Ports und Adapter gewährleistet, die die Domänenschicht von den Besonderheiten der Datenbank abschirmen. externe Systemeund ermöglicht so die Fachgebietslogik sich unabhängig voneinander zu entwickeln.
Außerdem, Sechseckige Architektur ergänzt die strategischen Designprinzipien von DDD, einschließlich des Konzepts der begrenzten Kontexte. Jeder begrenzte Kontext in DDD kann als ein Sechseck in Sechseckige Architekturmit dem Domänenmodell als Kernstück und dem Anschlüsse und Adapter die die Grenzen bilden.
Microservices, ein weiterer zeitgenössischer Architekturstil, kann stark von folgenden Faktoren profitieren Sechseckige Architektur. Die dezentralisierte Natur von Microservices - bei denen jeder Dienst eine spezifische Geschäftsfunktion kapselt - passt gut zur Kapselung von Geschäftslogik im Kern des Sechsecks.
Genauso wie jeder Microservice lose mit anderen gekoppelt sein sollte, sollte jedes Hexagon in Sechseckige Architektur ist ebenfalls von den anderen isoliert und kommuniziert nur über die definierten Ports und Adapter. Dies ermöglicht es jedem Microservice, seine eigene sechseckige ArchitekturDas Ergebnis ist eine Sammlung von autonomen, lose gekoppelten Diensten.
Die Isolierung, die durch Sechseckige Architektur kann besonders nützlich sein, wenn es um die Komplexität und den verteilten Charakter von Microservices geht. Durch die Isolierung der zentrale Geschäftslogik von der Außenwelt, Sechseckige Architektur gewährleistet die Geschäftslogik bleibt unabhängig von Änderungen bei anderen Diensten oder externe Systeme.
Die Art und Weise, wie eine Software entwickelt wird, kann einen großen Einfluss darauf haben, wie sie sich im Laufe der Zeit weiterentwickelt. Vergleich von Sechseckige Architektur im Vergleich zu anderen Architekturen ermöglicht uns ein besseres Verständnis ihrer Stärken und potenzieller Kompromisse.
Mehrschichtige Architektur ist eine traditionelle Architekturmuster das eine Anwendung in logische Schichten strukturiert - häufig Präsentations-, Geschäfts- und Datenzugriffsschichten. Der größte Nachteil dieses Musters ist, dass es eine starke Abhängigkeit zwischen den Schichten fördert, was dazu führt, dass Änderungen in einer Schicht sich auf die gesamte Anwendung auswirken können.
Im Gegensatz dazu, Sechseckige Architektur minimiert solche Abhängigkeiten. Anstelle von Schichten hat es eine Anwendungskern umgeben von austauschbaren Adaptern. Änderungen an einem Datenbankserver zum Beispiel würden sich nur auf den entsprechenden Adapter auswirken, so dass der Anwendungskern und anderen Adaptern unberührt.
Saubere Architektureine andere Architekturmusterhat viele Ähnlichkeiten mit Sechseckige Architektur. Beide betonen die Trennung von Belangen und zielen darauf ab, den Kern des Problems zu isolieren. Unternehmensregeln von externen Details und halten sich an die Prinzip der Inversion von Abhängigkeiten.
Allerdings, Sechseckige Architektur konzentriert sich mehr auf die Interaktion der Anwendung mit dem außerhalb Welt mit Hilfe von Ports und Adaptern, während Saubere Architektur bietet eine detailliertere Struktur für die inneren Schichten der Architektur. Mit anderen Worten, Saubere Architektur kann als Obermenge betrachtet werden von Sechseckige Architekturmit zusätzlichen Hinweisen zur Organisation der internen Struktur der Anwendung.
Architektur der Zwiebel ist ein weiterer architektonischer Stil, der auf die Isolierung des zentrale Geschäftslogik von der externe Schnittstellen und Infrastruktur. Es hat mehrere konzentrische Schichten mit dem Domänenmodell in der Mitte, und jede Schicht kann nur von den Schichten innerhalb der Schicht abhängen.
Obwohl sie ein gemeinsames Ziel haben, sind Hexagonal und Architektur der Zwiebel dies auf leicht unterschiedliche Weise erreichen. Architektur der Zwiebel legt großen Wert auf die Richtung der Abhängigkeiten und stellt sicher, dass alle Abhängigkeiten nach innen gerichtet sind. Sechseckige Architekturbefürwortet zwar auch nach innen gerichtete Abhängigkeiten, legt aber mehr Gewicht auf die Interaktion mit dem Außenwelt über seine Anschlüsse und Adapter.
Eine wesentliche Stärke von Sechseckige Architektur ist der Fokus auf die Testbarkeit. Durch die Isolierung der Kernanwendung von der Außenwelt durch Ports und Adapter ermöglicht die hexagonale Architektur die Ausführung von automatische Tests die Vertrauen in die Stabilität und Korrektheit der Software schaffen können.
In einem Sechseckige Architekturdie Primäranschlüssedie den Kern des Systems einkapseln Unternehmensregelnkann unabhängig von der Außenwelt getestet werden. Anstatt während der Tests mit einer realen Datenbank zu kommunizieren, kann zum Beispiel ein Datenbank-Adapter kann gegen ein Testdouble ausgetauscht werden, das das Verhalten einer echten Datenbank simuliert. Dies ermöglicht es den Entwicklern, sich auf das Testen der Unternehmensregelnund nicht die Interaktion mit der Datenbank.
Außerdem, automatisierte Regressionstests können leicht erstellt werden, um zu überprüfen, ob sich das System bei Änderungen wie erwartet verhält. Dieses Maß an Testbarkeit ist ein wesentlicher Vorteil bei der Wartung und Aktualisierung von Software, da es hilft, Probleme frühzeitig im Entwicklungsprozess zu erkennen und zu beheben.
Außerdem ist die Struktur der Sechseckige Architektur unterstützt auch Integrationstests. Durch das Ersetzen des externe Komponenten (wie ein Datenbankserver oder ein externe API) mit Testdoppelungen können Entwickler testen, wie die Anwendungskern integriert sich mit diesen Komponenten, ohne dass die eigentlichen externen Systeme verwendet werden müssen. Dies kann die Geschwindigkeit und Zuverlässigkeit der Tests erheblich verbessern.
Sechseckige Architektur erweist sich als verlockende Lösung im weiten Feld der Softwareentwicklungsstrategien. Sie hebt sich durch die Entkopplung der Anwendungskern von der externen Umgebung, wodurch ein hohes Maß an Wartbarkeit, Testbarkeit und Flexibilität gewährleistet wird. Diese Trennung erleichtert es den Entwicklern, sich auf das Wesentliche zu konzentrieren Geschäftslogikund erhöht gleichzeitig die Widerstandsfähigkeit der Software gegenüber Änderungen in externe Systeme.
Die hexagonale Architektur bringt zwar einige Nachteile mit sich, aber ihre zahlreichen Vorteile machen sie zu einem wertvollen Bestandteil der Werkzeugkiste eines jeden Entwicklers. Im Bereich der Software-Architekturbehauptet das sechseckige Modell weiterhin seine Dominanz.
Dieser Artikel, gespickt mit Code-Beispielezielt darauf ab, ein gründliches Verständnis zu vermitteln für Sechseckige Architektur und ihre potenziellen Vorteile. Denken Sie daran, dass das Geheimnis einer effektiven Architektur nicht in der blinden Befolgung von Mustern liegt, sondern im Verständnis der zugrundeliegenden Prinzipien und in deren durchdachter Umsetzung, um spezifische Anforderungen zu erfüllen.
Im Bereich der hexagonalen Architektur wird die Schnittstelle zwischen den Anwendungsschicht und die Datenschicht ist von größter Bedeutung. Ob Sie ein Softwarearchitekt Wenn man bedenkt, dass der Einfluss dieser Architektur weiter zunimmt, sei es als Entwickler, der die Komplexität dieser Methodik verstehen will, oder als Entwickler, der sich mit ihr auseinandersetzen möchte, ist es klar. Es werden verschiedene Möglichkeiten aufgezeigt, wie sie effektiv genutzt werden kann. Zum Beispiel, in einem Bankwesen Anmeldungdie Repository-Schnittstelle kann als sekundärer Adapter fungieren, der die Kernstück der Anwendung mit externer Code. Diese Trennung ermöglicht die Flexibilität, die konkrete Umsetzung eines Dateisystem oder eine bestimmte Technologie, ohne die Anwendungsdienste zu beeinträchtigen.
Die Entwicklung Team können nun an der linke Seite der Anwendung, ohne sich Gedanken über externe FaktorenDadurch wird ein nahtloser Fortschritt gewährleistet. Und so schließen wir unsere Erkundung der Welt der Sechseckige ArchitekturEin architektonischer Stil, der seinen Einfluss auf die gesamte Landschaft der Softwareentwicklung weiter ausdehnt.