2008-08-08 8 views
18

Mein Gefühl ist, dass dokumentenbasierte Webdienste in der Praxis bevorzugt werden - ist das die Erfahrung anderer Menschen? Sind sie leichter zu unterstützen? (Ich habe bemerkt, dass SharePoint Any für den "Dokumenttyp" in seiner WSDL-Schnittstelle verwendet, ich denke, das macht es dokumentenbasiert).Dokument oder RPC-basierte Webdienste

Auch - bieten Leute jetzt sowohl WSDL- als auch Rest-Dienste für die gleiche Funktionalität an? WSDL ist beliebt für die Code-Generierung, aber für Frontends wie PHP und Rails scheinen sie Ruhe zu bevorzugen.

Antwort

30

Dokument versus RPC ist nur eine Frage, wenn Sie SOAP Web Services verwenden, die eine Dienstbeschreibung benötigen (WSDL). REST-konforme Web-Services verwenden WSDL nicht, da der Service nicht durch sie beschrieben werden kann und das Gefühl besteht, dass REST einfacher und leichter zu verstehen ist. Einige Leute haben vorgeschlagen, WADL REST-Dienste zu beschreiben.

Sprachen wie Python, Ruby und PHP erleichtern die Arbeit mit REST. Die WSDL wird verwendet, um C# -Code (einen Web-Service-Proxy) zu generieren, der leicht aus einer statischen Sprache aufgerufen werden kann. Dies geschieht, wenn Sie in Visual Studio eine Service-Referenz oder Web-Referenz hinzufügen.

Ob Sie SOAP- oder REST-Dienste bereitstellen, hängt von Ihrer Benutzerpopulation ab. Ob die Dienste über das Internet oder nur innerhalb Ihrer Organisation genutzt werden, beeinflusst Ihre Wahl. SOAP kann einige Funktionen (WS- * Standards) haben, die gut für den B2B- oder internen Gebrauch funktionieren, aber für einen Internet-Dienst saugt.

Dokument/Literal im Vergleich zu RPC für SOAP-Dienste sind auf dieser IBM DevelopWorks article beschrieben. Dokument/Literal wird im Allgemeinen als das beste in Bezug auf Interoperabilität (Java zu .NET usw.) angesehen. Ob es einfacher ist zu unterstützen, hängt von Ihren Umständen ab. Meine persönliche Ansicht ist, dass die Leute dazu neigen, das Zeug komplizierter zu machen, als es sein muss, und RESTs einfacher Ansatz ist überlegen.

+3

Link beschreibt alles, Alle meine Bedenken werden nach dem Lesen abgelehnt. http://www.ibm.com/developerworks/webservices/library/ws-whichwsdl/ –

1

BiranLys Antwort ist ausgezeichnet. Ich möchte nur hinzufügen, dass Dokument-vs-RPC auch auf Implementierungsprobleme herunterkommen kann. Wir haben festgestellt, dass Microsoft Dokumenten bevorzugt, während unsere Java-basierten Bibliotheken RPC-basiert sind. Was auch immer Sie wählen, stellen Sie sicher, dass Sie wissen, was andere potenzielle Kunden auch übernehmen werden.

4

Wie bereits erwähnt, ist es besser, wenn möglich, das Dokument-Literal über RPC-codiert zu wählen. Es ist wahr, dass die alten Java-Bibliotheken (Axis1, Glue und andere prähistorische Sachen) nur RPC-kodierte unterstützen, aber in den meisten modernen Java-SOAP-Bibliotheken werden sie einfach nicht unterstützt (e.x. AXIS2, XFire, CXF). Versuchen Sie daher, den RPC-codierten Dienst nur dann freizugeben, wenn Sie wissen, dass Sie mit einem Verbraucher umgehen müssen, der nicht besser ist. Aber vielleicht hilft auch nur XML RPC für diese Legacy-Implementierungen.