2009-03-26 7 views
4

Ich arbeite die meiste Zeit mit Microsoft-Technologien, also überprüfe ich natürlich, was WCF zu bieten hat. Es scheint sehr flexibel und ein großartiger nächster Schritt von .Net Remoting, aber es scheint sehr gebunden an SOAP-Nachrichten und ziemlich klobig für eine Plattform Agnostic Web Service App. Ich bin kein Experte für die Technologie, aber ich kann mir vorstellen, dass all diese Flexibilität, die sie propagieren, bedeutet, dass Sie sich von SOAP-Nachrichten lösen und die gewünschten Datenstrukturen/-formate zurückgeben können. Ist das wahr oder falsch?WCF als Web-Service mit kleinstmöglicher Nutzlast

Der Grund, warum ich das sage ist, dass, wenn ich wirklich eine Anwendung als REST-Dienst erstellen wollte, eine meiner Zielplattformen mobil sein würde. Nicht nur das, ein wichtiges Ziel eines webbasierten Dienstes ist es, die Datennutzlast gering zu halten, egal ob für ein Mobiltelefon mit Einwahlgeschwindigkeit oder eine vollständige Desktop-App. Wenn Sie also Twitter's API als Beispiel nehmen, ist es unglaublich erfolgreich gewesen, weil Sie die Daten als JSON anfordern können, ohne aufwändige SOAP-Umschläge, die die Daten wiegen und die kleinste Menge an Bytes erhalten, um die gewünschten Daten zu repräsentieren . So kann eine mobile Anwendung, die auf einem Gerät mit schlechter Konnektivität läuft und die Daten von Twitter verbraucht, die geringstmögliche Bandbreite verwenden. Abgesehen davon ist das Muster von Twitter, Facebook oder einer der erfolgreicheren öffentlichen APIs eine benutzerdefinierte Datenstruktur in JSON und/oder XML und nicht in einem SOAP-Umschlag (obwohl ich mich irren könnte ... das ist nur mein Eindruck).

Wie würden Sie das in WCF tun? Müssen Sie durch die Ringe springen, um WCF anzuweisen, "diesen Text einfach zurückzugeben ... machen Sie sich keine Sorgen über den SOAP-Umschlag" oder ist es eine einfache Konfigurationsoption?

Antwort

2

Es gibt mehrere Konfigurationsoptionen Sie den SOAP von WCF entfernen einstellen. Am einfachsten ist es, WebServiceHost anstelle der üblichen ServiceHost-Klasse zum Hosten Ihrer Dienste zu verwenden. Es legt die meisten Optionen fest, die Sie wünschen. Justin Smith hat eine good post that contrasts WebServiceHost and ServiceHost.

Obwohl es sich anhört, als ob Sie mehr Sorgen über das Senden einer POX (einfache alte XML) Payload, einige der REST-Prinzipien (URL-Mapping und HTTP-Methoden), könnten Sie Jon Flander RESTful .NET Buch hilfreich finden. Hier ist ein overview of Chapter 1.

Überprüfen Sie auch die REST Starter Kit von Microsoft, die viele Beispiele für gemeinsame web-orientierte Aufgaben mit WCF hat.

Und um den anderen Teil Ihrer Frage zu beantworten, habe ich festgestellt, dass die Verwendung von JSON zu einer viel geringeren Nutzlast als XML führt, während WCF immer noch gute Unterstützung bietet.

+0

Danke ... Ich werde wahrscheinlich eine Kopie des Buches, das du verlinkt hast, abholen. – Rich