Simple Object Access Protocol (SOAP)

Eintrag zuletzt aktualisiert am: 11.10.2019

Simple Object Access Protocol (SOAP) war das Standardprotokoll für Webservice in den 2000er Jahren. In den 2010er Jahren wurde SOAP zunehmend durch REST-basierte WebAPIs (einfache HTTP-Dienste), zunächst mit XML-Serialisierung, mittlerweile hauptsächlich mit JSON-Serialisierung abgelöst.

Versionen

SOAP 1.2 ist der aktuelle Standard, Stand 27.4.2007: https://www.w3.org/TR/soap/
SOAP 1.1 war übrigens nie eine Recommendation, sondern nur im Vorstadium "Note" – dennoch wurde es von allen Herstellern implementiert.
Die für SOAP zuständige Arbeitsgruppe beim W3C wurde am 10.7.2019 aufgelöst: https://www.w3.org/2000/xp/Group/
Ein neuerer SOAP-Standard ist aktuell nicht zu erwarten

SOAP

Das beim World Wide Web Consortium (W3C) entwickelte SOAP basiert auf der Extensible Markup Language (XML) und dem Hypertext Transfer Protocol (HTTP): Der Aufruf einer entfernten Routine wird in eine XML-Datenstruktur verpackt und via HTTP-Request (in der Regel auf dem Standardport 80) vom Client an den Server übertragen. Nach Abarbeitung der Routine verpackt der Server die Rückgabewerte ebenfalls in eine XML-Struktur und sendet diese per HTTP-Response zurück. Um auf einem System eine Routine per SOAP starten zu können, ist es also Voraussetzung, dass das aufgerufene System über einen HTTP-Listener verfügt.

SOAP in .NET Framework

SOAP in .NET Core

Der WCF-Client ist partiell vorhanden, der WCF Server nicht geplant von Microsoft.

Offizieller WCF Client für .NET Core
https://github.com/dotnet/wcf

Diskussionen über WCF Server auf .NET Core
https://github.com/dotnet/wcf/issues/1200#issuecomment-356422289
https://www.infoq.com/articles/WCF-Net-Core-Debate/

Community-Projekt für WCF in .NET Core
https://github.com/dotnet/wcf

Alternativen für SOAP in .NET Core

SOAP Core
https://github.com/DigDes/SoapCore
Hierbei ist SOAP als eine Custom Middleware in ASP.NET Core realisiert (vgl. https://blogs.msdn.microsoft.com/dotnet/2016/09/19/custom-asp-net-core-middleware-example)

ServiceStack
https://docs.servicestack.net/soap-support
https://docs.servicestack.net/netcore