In diesen Bereichen kann ich einen groben Überblick geben, aber ich kann Ihre Schlussfolgerungen nicht für Sie ziehen. Es gibt zwei Hauptbereiche, in denen sich die beiden Protokolle unterscheiden:
- Nachrichtenformat
- Service-Erkennung
Das Nachrichtenformat ist am einfachsten zu verstehen. Das SOAP-Paket für Anforderungen und Antworten ist ziemlich schwer. Es gibt den SOAP-Umschlag, der sowohl einen Header- als auch einen Body-Abschnitt enthält. Der Header kann von mehreren Filtern in der Anforderungskette verwendet werden, um eine Art Identifikation, Autorisierung usw. durchzuführen. Die Analyse von XML ist jedoch teuer, was die Skalierbarkeit Ihres Systems in gewissem Maße beeinträchtigt. Wie viel davon abhängt, hängt von der SOAP-Verarbeitungsschicht in Ihrem Stapel ab.
Service Discovery ist der Ort, an dem Sie wahrscheinlich die meisten Konflikte haben werden. REST bietet von Natur aus vorhersehbare Endpunkte, und der Inhalt der Anforderung ist eine einfache HTTP-Anforderung. Der Vorteil ist, dass es keinen zusätzlichen Overhead gibt und Endbenutzer ziemlich genau raten können, was sie tun müssen, wenn sie die URL-Struktur Ihrer Website verstanden haben. Natürlich werden naive sicherheitsbewusste Menschen dies als Schwäche ansehen. Schließlich müssen Sie mit SOAP eine WSDL verwenden, um die Endpunkte zu ermitteln. Natürlich haben Sie mit SOAP das gesamte Nachrichtenformat erhalten, damit Sie gezielter angreifen können.
Aufgeschlüsselt nach den von Ihnen angegebenen Kategorien:
Sicherheit
Keiner ist von Natur aus sicherer als der andere. Verwenden Sie gute Sicherheitsgrundsätze:
- Verschlüsseln Sie die Kommunikation
- Stellen Sie vor der Verarbeitung sicher, dass Sie Benutzer authentifizieren und autorisieren
- Gute Codierungsgewohnheiten, um direkte Angriffe zu vermeiden
- Und das ist nur die kurze Liste.
Denken Sie an Dunkelheit! = Sicherheit.
Performance
Sowohl die Raw-Leistung als auch die Skalierbarkeit werden aufgrund der Anforderung nach einfachen HTTP-Protokollen an REST übergeben. Die meisten SOAP-Stacks verwenden SAX-Parsing (ereignisbasiertes Parsing), wodurch die Skalierbarkeit von SOAP-Stacks erheblich verbessert wird. Der Overhead ist jedoch messbar. SOAP hat zusätzlich zum XML-Parsing-Overhead den normalen HTTP-Verarbeitungs-Overhead. REST hat nur den HTTP-Verarbeitungsaufwand.
Komplexität
Aus Sicht des Systems gewinnt REST. Es gibt weniger bewegliche Teile, eine schlankere Anforderungskette usw. Das bedeutet, es ist einfacher, zuverlässig zu machen.
Aus Sicht des Programmierers kann SOAP gewinnen, wenn die von Ihnen verwendete IDE oder das von Ihnen verwendete Framework dies gut unterstützen. Im Wesentlichen müssen Sie mit REST die Vorverarbeitung (Authentifizierung / Autorisierung / usw.) durchführen, während mit SOAP ein Großteil davon mit einer steckbaren Verarbeitungskette ausgeführt werden kann.
Meine Vorliebe
Ich bin mit HTTP-Anfragen sehr vertraut und weiß, wie das Web funktioniert. Aus diesem Grund ist der REST-Ansatz für mich vorzuziehen. Ich weiß jedoch, dass sich einige meiner Kunden damit unwohl fühlen. Sie haben einige Artikel aus der Industrie gelesen, in denen die Sicherheit von REST im Vergleich zu SOAP usw. angeprangert wird. Unter dem Strich garantiert keiner der beiden Ansätze die Sicherheit. Sie müssen sicherstellen, dass die Anwendung so sicher ist, wie es sein muss. Offensichtlich verlangt (oder wünscht) eine Social Web-Anwendung nicht so viel Sicherheit wie ein Bank- oder Regierungssystem. Viele SOAP-Stacks enthalten Prozessoren, die Sie anschließen können, um ein gewisses Maß an Sicherheit zu gewährleisten. Es liegt jedoch weiterhin in Ihrer Verantwortung, diese zu suchen und zu installieren.