# SOAP - Simple Object Access Protocol (26.09.2024) SOAP (Simple Object Access Protocol) ist ein Protokoll für den Austausch von Informationen. SOAP nutzt hauptsächlich HTTP für den Transport, wobei es auch mit anderen Protokollen genutzt werden kann. Auch die Architektonischen Muster sind nicht so auf HTTP abgestimmt wie beispielsweise bei REST. Während REST mehr einen Style beschreibt haben wir mit SOAP viel mehr Leitung in der Struktur der Antwort und der Anfrage. SOAP fokussiert sich also auf die Nachricht während REST sich mehr auf Ressourcen konzentriert. Bei SOAP nutzen wir XML für die Darstellung der Daten sowohl beim Senden wie auch Empfangen. Gearbeitet wir in vier bestimmten Dimensionen: - Envelope: Bestimmen der Struktur der Nachricht - Encoding: Regeln für das Ausdrücken der Typen von Daten - Requests: Wie alle Anfragen auf die API strukturiert sind - Response: Wie alle Antworten der API strukturiert sind Ein Beispiel für eine XML Anfrage an eine SOAP API könnte folgendermassen aussehen: ```XML <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body>  <IsValidISBN10 xmlns="http://webservices.daehosting.com/ISBN">   <sISBN>0-19-852663-6</sISBN> </IsValidISBN10> </soap:Body> </soap:Envelope> ``` In dieser Anfrage bestimmen wir zuerst das Schema für die Struktur der Anfrage (*Envelope*). Anschliessend rufen wir das *IsValidISBN10* Interface der *https://webservices.daehosting.com/ISBN* API auf und Prüfen, ob unsere ISBN gültig ist. Die Antwort würde in diesem Fall folgendermassen aussehen; ```XML <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">  <soap:Body>    <m:IsValidISBN10Response xmlns:m="http://webservices.daehosting.com/ISBN">       <m:IsValidISBN10Result>true</m:IsValidISBN10Result>     </m:IsValidISBN10Response> </soap:Body> </soap:Envelope> ``` ## Vorteile von SOAP Obwohl SOAP sehr strikte Richtlinien für die Implementation hat, ist es auch für seine Erweiterbarkeit bekannt. Durch die Unterstützung verschiedener Protokolle (z.B.: SMTP, TCP und UDP) bietet SOAP eine grössere Flexibilität wenn es zum Austausch von Daten kommt. SOAP ist ausserdem sehr sicher, was es besonders attraktiv für Anbieter macht, die mit sensitiven Daten arbeiten (z.B.: Finanzinstitutionen). Das Protokoll hat ausserdem eingebaute Fehlerbehandlungs-Features, was bei die Problemlösung im Falle einer fehlgeschlagenen Anfrage hilft. ## Nachteile von SOAP Während SOAP in vielen Situation eine gute Option ist, gibt es durchaus auch Szenarien, in denen es mehr Sinn macht auf eine Alternative zurückzugreifen. SOAP bietet keine Unterstützung für das Cachen von API Anfragen. Es ist ausserdem viel komplexer, was auch Auswirkungen auf die Performance haben kann. Alternativen bieten dazu noch eine bessere Anpassbarkeit, da mit SOAP viele Entscheidungen vorgegeben sind.[^1] ## SOAP vs. REST REST (Representational State Transfer) ist eine weitere Struktur, die viel für APIs genutzt wird. REST ist eine architektonische Struktur welche einfach zu nutzen und daher auch häufiger vorzufinden ist. Die Hauptunterschiede zu SOAP sind: - **Standards**: SOAP hat offizielle Standards, da es ein Protokoll ist. REST wiederum beschreibt nur einen Style von Architektur und hat keine offiziellen Standards. - **Funktionalität**: REST greift auf Daten über ein konsistentes Interface mit dem Namen der Resource zu. SOAP nutzt dagegen standardisierte Kommunikationsmuster auf unterschiedlichen Interfaces um Aufgaben auszuführen. - **Bandbreite**: REST APIs nutzen wenig Bandbreite während SOAP XML nutzt um Payloads zu erstellen, was zu grossen Dateien führen kann.[^2] ## Fazit SOAP bietet eine viel stabilere Basis als eine freiere Alternative wie REST. Diese Stabilität hat jedoch seinen Preis. SOAP kann die Applikation wie auch die Entwicklung verlangsamen. Dieser Preis kann sich jedoch bei gewissen Anwendungen als lohnenswert herausstellen. Eine Kosten-Nutzen-Rechnung sollte hier also Projektabhängig durchgeführt werden. [^1]: vgl. What Is a SOAP API?, in: blog.postman.com, 26.09.2024, https://blog.postman.com/soap-api-definition/ [^2]: vgl. What Is SOAP API? (Plus Comparison to REST API and Benefits), in: indeed, 26.09.2024, https://www.indeed.com/career-advice/career-development/what-is-soap-api