Verwenden von SOAP zum Verfügbarmachen von CRUD-Vorgängen

Ist das Aufstellen von CRUD-Vorgängen über SOAP-Webdienste eine schlechte Idee? Mein Instinkt sagt mir, dass es nicht zuletzt, weil der Aufwand für Datenbankaufrufe Overhead könnte enorm sein. Ich habe Schwierigkeiten, Dokumentation für/gegen dieses (Anti-)Muster zu finden, also fragte ich mich, ob mich jemand auf eine Dokumentation hinweisen könnte oder eine Meinung zu diesem Thema hat.

Auch wenn jemand von bewährten Praktiken (und/oder Dokumentation in diesem Sinne) bei der Gestaltung von Seifendiensten weiß, wäre das großartig.

Hier ist ein Beispiel dafür, wie der Webdienst aussehen würde:

  • Erstellen
  • Löschen
  • Ausführen
  • Fetch
  • Update

Und hier ist, wie die Implementierung aussehen würde:

[WebMethod]
public byte[] Fetch(byte[] requestData)
{
    SelectRequest request = (SelectRequest)Deserialize(requestData);

    DbManager crudManager = new DbManager();
    object result = crudManager.Select(request.ObjectType, request.Criteria);

    return Serialize(result);
}

Antwort auf "Verwenden von SOAP zum Verfügbarmachen von CRUD-Vorgängen " 4 von antworten

Es ist nichts falsch daran, die CRUD-Operationen über SOAP-Webdienste per se aufzudecken.

Sie werden natürlich eine ganze Reihe von Beispielen für solche Dienstleistungen finden.

Je nach Ihren speziellen Anforderungen können Sie jedoch feststellen, dass für Sie die Verwendung von SOAP zu viel Overhead ist oder dass Sie mit JSON/AJAX usw. besser dran sein könnten.

Also glaube ich, dass es keine gute Antwort auf Ihre Frage gibt, wenn Sie keine zusätzlichen Details zu Ihren angaben machen.

Ich denke, die Veröffentlichung eines SOAP-Dienstes, der CRUD-Operationen anonymen, öffentlichen "Nutzern" aussetzt, wäre eine besonders schlechte Idee. Wenn Sie jedoch eine oder beide dieser Vorbehalte einschränken können, dann sehe ich nichts falsch daran (außerdem habe ich solche Dienste viele Male implementiert).

  • Sie können zusätzlich zu den Methodenparametern, die Sie zum Ausführen des Vorgangs benötigen, Benutzernamen und Kennwortparameter, die den Absender vor der Verarbeitung der Anforderung tatsächlich authentifizieren, benötigen: Ein Fehler bei der Authentifizierung kann mit der Rückgabe einer SOAP-Ausnahme signalisiert werden. Wenn Sie besonders paranoid waren, können Sie den Dienst optional über SSL

  • ausführen. Sie können die Serverlösung haben, die sich mit dem Senden und Empfangen des Anforderungenfilters basierend auf IP befasst und nur Anfragen aus einer Liste genehmigter Adressen zulässt.

Ja, es gibt Overheads für das Ausführen von Anforderungen über SOAP (im Gegensatz zum Aufdecken des direkten Datenbankzugriffs) - nämlich die Verarbeitungszeit, um eine Anforderung in eine HTTP-Anforderung zu wickeln, einen Socket zu öffnen und zu senden (und die Rückseite am empfangenden Ende und die erneut für die Antwort) - aber es hat Vorteile.

Java (obwohl die NetBeans IDE) und .Net (über VS), beide unterstützen den Verbrauch von Web Services in Projekte / Lösungen - der größte Vorteil davon ist, dass Objekte / Strukturen auf dem Remote-Service automatisch in native Objekte in der verbrauchenden Anwendung übersetzt werden, was außergewöhnlich praktisch ist.

Wenn alles, was Sie tun möchten, ist CRUD über das Web, Würde ich einige verschiedene Technologien für die Arbeit REST statt mit WS * betrachten. SQL Data Services (formerly Project Astoria) might actually be a good alternative. (früher Project Astoria) könnte eigentlich eine gute Alternative sein.

Wenn Sie SOAP in einer RESTful-Manier verwenden möchten, dann gibt es einen interessanten Standard dafür, WS-Transfer; which provides loosely coupled CRUD endpoints; from which you inspect the message and act upon your entities accordingly. ; die lose gekoppelte CRUD-Endpunkte bereitstellt; von dem aus Sie die Nachricht überprüfen und entsprechend auf Ihre Entitäten reagieren.

Dann können Sie Layer, was auch immer Sie wollen, WS-Secure, WS-Zuverlässige Nachrichten und so weiter.