Serviceorientierte Architektur (SOA) entstand zu Beginn dieses Jahrhunderts als Weiterentwicklung des verteilten Rechnens. Vor SOA wurden Services als Endergebnis des Anwendungsentwicklungsprozesses verstanden. In SOA besteht die Anwendung selbst aus Diensten. Services können einzeln bereitgestellt oder als Komponenten in einem größeren zusammengesetzten Service kombiniert werden.
Services interagieren über die Leitung mithilfe eines Protokolls wie REST oder SOAP (Simple Object Access Protocol). Services sind lose gekoppelt, was bedeutet, dass die Service-Schnittstelle unabhängig von der zugrunde liegenden Implementierung ist. Entwickler oder Systemintegratoren können einen oder mehrere Dienste in einer Anwendung zusammenstellen, ohne unbedingt zu wissen, wie die einzelnen Dienste implementiert sind.
Dieser Artikel enthält eine Übersicht über Java SOA und die wichtigsten Merkmale von a Serviceorientierte Architektur, die mithilfe von SOAP-basierten Webdiensten implementiert wird. Ich werde auch kurz SOA und Microservices vergleichen und den Unterschied zwischen RESTful- und SOAP-basierten Webdiensten in Java diskutieren.
Warum serviceorientierte Architektur?
SOA befasst sich mit drei allgemeinen Unternehmensherausforderungen :
- Reagieren Sie schnell auf geschäftliche Änderungen.
- Nutzen Sie vorhandene Infrastrukturinvestitionen.
- Unterstützen Sie neue Kanäle für die Interaktion mit Kunden, Partnern und Lieferanten.
Die Unternehmensinfrastruktur ist über Betriebssysteme, Anwendungen, Systemsoftware und Anwendungsinfrastruktur hinweg heterogen. Daher bestehen viele Unternehmenssysteme aus komplexen und inkonsistenten Anwendungen, die a Bestehende Anwendungen, in denen aktuelle Geschäftsprozesse ausgeführt werden, sind von entscheidender Bedeutung. Daher ist es eine heikle Angelegenheit, von vorne zu beginnen oder sie zu ändern. Unternehmen müssen jedoch in der Lage sein, die technische Infrastruktur zu ändern und zu erweitern, um den Geschäftsanforderungen gerecht zu werden.
As im Vergleich zu einem monolithischen Archi Aufgrund der lockeren Kopplung von SOA ist es relativ nahtlos, neue Dienste anzuschließen oder vorhandene Dienste für neue Geschäftsanforderungen zu aktualisieren. Es bietet auch die Möglichkeit, Dienste über verschiedene Kanäle hinweg nutzbar zu machen und ältere Anwendungen als Dienste verfügbar zu machen, wodurch Infrastrukturinvestitionen geschützt werden.
Da sie lose gekoppelt sind, können SOA-Komponenten mit minimalen Auswirkungen auf andere Komponenten geändert werden . Komponenten können der Architektur auch auf standardisierte Weise hinzugefügt und auf die Last skaliert werden.
Überlegen Sie beispielsweise, wie ein Unternehmen eine Reihe vorhandener Anwendungen verwenden kann, um eine neue zu erstellen. zusammengesetzte Supply-Chain-Anwendung. Während die vorhandenen Anwendungen heterogen und auf verschiedene Systeme verteilt sind, wird ihre Funktionalität über Standardschnittstellen verfügbar gemacht und darauf zugegriffen.
Schlüsselmerkmale von SOA
SOA kann so einfach sein wie eine einzelne Komponente, die Dienste verbraucht, die von einer anderen Komponente bereitgestellt werden, oder so komplex wie eine Reihe von Komponenten, die über einen Enterprise Service Bus wie MuleSofts ESB interagieren. Unabhängig von der Größe ist der Schlüssel für eine erfolgreiche SOA-Implementierung Ihre erste und letzte Frage sollte immer lauten: Entspricht dieses Design unseren Geschäftsanforderungen?
Unabhängig von Größe oder Komplexität das Muster einer serviceorientierten Architektur ist mehr oder weniger dasselbe:
- Dienstanbieter legen Endpunkte offen und beschreiben die verfügbare Aktionen an jedem Endpunkt.
- Dienstkonsumenten geben Anforderungen aus und konsumieren Antworten.
- Dienstanbieter generieren Nachrichten, um Anforderungen zu verarbeiten.
Implementieren von Dienst- orientierte Architektur
Um SOA zu implementieren, beginnen Sie mit der grundlegenden Dienstarchitektur und stellen dann die Infrastruktur bereit, dh Protokolle und andere Tools, die Kommunikation und Interoperabilität ermöglichen. Abbildung 2 zeigt ein Diagramm einer typischen Servicearchitektur.
In diesem Diagramm rufen drei Verbraucher Dienste auf, indem sie Nachrichten an einen Enterprise Service Bus senden, der die Nachrichten transformiert und an eine geeignete Dienstimplementierung weiterleitet . Eine Geschäftsregel-Engine enthält Geschäftsregeln in einem Dienst oder dienstübergreifend. Eine Service-Management-Schicht verwaltet Aktivitäten wie Überwachung, Abrechnung und Protokollierung.
Komponenten in dieser Architektur sind lose miteinander verbunden, sodass sie mit relativ geringen Auswirkungen auf die gesamte Anwendung ausgetauscht oder aktualisiert werden können. Dies gibt dem Unternehmen die Flexibilität, Geschäftsprozesse nach Bedarf hinzuzufügen oder zu aktualisieren. Änderungen an einzelnen Diensten sollten zum größten Teil keine großen Auswirkungen auf andere Dienste haben.
SOAP-basierte Webdienste
Mit SOAP implementierte Webdienste sind immer noch starrer als eine RESTful-Webdienst- oder Microservices-Implementierung, aber weitaus flexibler als die Anfänge von SOA. Hier sehen wir uns nur die allgemeinen Protokolle an, die für SOAP-basierte Webdienste erforderlich sind.
SOAP, WSDL und XSD
SOAP, WSDL und XSD sind die grundlegende Infrastruktur Bei einer SOAP-basierten Webdienstimplementierung wird WSDL zur Beschreibung des Dienstes verwendet, und SOAP ist die Transportschicht zum Senden von Nachrichten zwischen Dienstkonsumenten und -anbietern. Dienste kommunizieren mit Nachrichten, die mithilfe des XML-Schemas (XSD) formal definiert wurden. Sie können an WSDL denken als Schnittstelle des Dienstes (lose analog zu einer Java-Schnittstelle). Die Implementierung erfolgt in Java-Klassen, und die Kommunikation über das Netzwerk erfolgt über SOAP. Funktionell würde ein Verbraucher nach einem Dienst suchen, die WSDL für diesen Dienst abrufen und den Dienst dann über SOAP aufrufen.
Webdienstsicherheit
Der WS -I Die Basic Profile 2.0-Spezifikation befasst sich mit der Nachrichtensicherheit. Diese Spezifikation konzentriert sich auf den Austausch von Anmeldeinformationen, die Nachrichtenintegrität und die Vertraulichkeit von Nachrichten.
Webdiensterkennung
Sobald der Eckpfeiler der Webdiensterkennung festgelegt ist, ist UDDI (Universal Description, Definition and Integration) verblasst in die Geschichte. Heutzutage ist es üblich, einen SOAP-basierten Webdienst wie jeden anderen Dienst über eine Endpunkt-URL verfügbar zu machen. Beispielsweise können Sie die JAX-WS-Dienstendpunktschnittstelle und ihre @WebService
und @WebMethod
Anmerkungen.
Erstellen und Bereitstellen von Webdiensten
Java-Entwickler haben verschiedene Optionen zum Erstellen und Bereitstellen von SOAP-basierten Webdienste, einschließlich Apache Axis2 und Spring-WS. Der Java-Standard ist jedoch JAX-WS, die Java-API für XML-Webdienste. Die Kernidee von JAX-WS besteht darin, Java-Klassen zu erstellen und diese mit Anmerkungen zu versehen, um die erforderlichen Artefakte zu erstellen. Unter der Haube verwendet JAX-WS mehrere Java-Pakete, darunter JAXB, eine Allzweckbibliothek zum Binden von Java-Klassen an XML.
JAX-WS verbirgt die zugrunde liegende Komplexität und Protokolle vor dem Entwickler und optimiert so den Prozess Moderne Java-IDEs wie Eclipse bieten volle Unterstützung für die Entwicklung von JAX-WS-Webdiensten. Die JAX- Die WS-Spezifikation wurde auch für die Weiterentwicklung in Jakarta EE ausgewählt.
Schlussfolgerung
Die mit SOAP-basierten Webdiensten implementierte serviceorientierte Architektur erfordert strengere und strengere Anforderungen formale Service-Definitionen als RESTful-Web-Services oder Microservices. Einige größere Organisationen bevorzugen jedoch weiterhin den formelleren Stil von SOAP. Viele große Legacy-Systeme basieren ebenfalls auf SOAP, und einige B2B- und interne Systeme wählen SOAP-basierte Webdienste für ihre formell definierten API-Verträge. Unabhängig davon, ob Sie ein umfangreiches Unternehmenssystem entwickeln oder warten, das SOA-Muster zu verstehen und Ihre Optionen für dessen Implementierung bewerten zu können, wird Ihnen in Ihrer Programmierkarriere gute Dienste leisten.