Welchen .NET REST-Ansatz / welche Technologie / welches Tool soll ich verwenden?

16

Ich implementiere einen RESTful-Webdienst und mehrere Clientanwendungen, die sich hauptsächlich in Silverlight befinden. Ich finde eine Vielzahl von Optionen für die Entwicklung sowohl der Server- als auch der Client-Seite der API, bin mir jedoch nicht sicher, welcher Ansatz der beste ist. Ich mache mir Sorgen um Stabilität sowie um eine Plattform, die in einigen Monaten weiter bestehen wird.

Wir haben begonnen, das REST Starter Kit mit .NET 3.5 zu verwenden, sind jedoch bei der Aktualisierung auf .NET 4.0 auf die neue WCF-Web-API umgestiegen. Die gesamte Dokumentation weist darauf hin, dass die WCF-Web-API den RSK ersetzt. Die Web-API ist jedoch nur in Vorschau 4 enthalten und unterstützt (noch) keine Silverlight- oder Windows Phone 7-Clients.

Die WCF-Web-API sieht aus wie ein Wrapper über dem WCF-WebHttp-Services-Material, das in der System.ServiceModel.WebBibliothek bereitgestellt wird , was mich zu der Annahme veranlasst, dass es vielleicht einfacher wäre, nur mit dem integrierten Material umzugehen, aber die Web-API bietet einige nette Funktionen.

Ich versuche konkret, den besten Kurs für die Kundenseite zu finden. Meine Hauptanforderung ist, dass ich das Deserialisieren in meine clientseitigen Objekte schnell und einfach unterstützen muss. Die Web-API bietet eine nette Client-Bibliothek, hat aber keine Silverlight-Version.

Ich möchte den neuesten Ansatz und das Toolset verwenden, das aktiv entwickelt und unterstützt wird.

  1. Ist das REST Starter Kit wirklich veraltet?

  2. Hat jemand das WCF-Web-API-Toolkit erfolgreich implementiert?

  3. Ist es sinnvoll, eine dieser beiden Funktionen über die integrierten WCF WebHttp Services-Funktionen in zu verwenden System.ServiceModel.Web?

  4. Gibt es eine einzige Lösung, die für jeden Client (Web, Silverlight usw.) funktioniert?

Welche Vorschläge haben Sie?

SonOfPirate
quelle
Ich würde die Verwendung von servicestack
Mithir 30.03.13

Antworten:

6

Um den Beitrag zu verfolgen und abzuschließen, hat die WCF-Web-API mit Preview 5 einen großen Schritt nach vorne gemacht und das Erstellen von REST-APIs so unglaublich einfach gemacht. Und obwohl die aktuelle Codebasis von Codeplex keinen Silverlight-Client enthält, gibt es ein Toolkit, mit dem ich die Async-CTP-Teile problemlos aus dem Open Source-Code entfernen und eine SL-Version erstellen konnte.

Ich empfehle jedem, der sich für REST mit WCF interessiert, einen Blick in das Framework zu werfen: http://wcf.codeplex.com .

Zu Ihrer Information: Es wird ein integrierter Bestandteil von .NET 4.5 sein und wird derzeit so umgeschrieben, dass es auf demselben Kernframework wie ASP.NET MVC ausgeführt wird (obwohl mir mitgeteilt wird, dass es auf jeden Fall noch Selbsthosting unterstützen wird).

SonOfPirate
quelle
1

Ich habe das REST Starter Kit nicht benutzt, aber da ich gerade eine .net 4.0 WCF REST API schreibe, bin ich mir ziemlich sicher, dass es noch existiert :)

Ich würde empfehlen, dass Sie sich odata ansehen. Es ist erstaunlich schnell und einfach zu codieren und spielt gut mit Silverlight.

Tom Squires
quelle
Eine der vom WCF-Web-API-Toolkit angebotenen Funktionen ist die OData-Unterstützung, die einwandfrei funktioniert. Es hilft mir jedoch nicht, keine Silverlight-Version zu haben. Wie gehen Sie clientseitig mit der Deserialisierung um?
SonOfPirate
Ich habe es nur mit WP7 Silverlight gemacht. Dass ich gerade eine Servicereferenz hinzugefügt und das genannt habe. Sie können jedoch auch einen Webclient verwenden und die Antwort selbst deserialisieren, wenn dies für Sie besser funktioniert. Es ist nicht schwer
Tom Squires
Ich hätte nicht gedacht, dass die Verwendung von webHttpBinding zur Aktivierung von REST mit WCF einen mexikanischen Endpunkt unterstützt. Wie fügen Sie eine Servicereferenz hinzu? Das wäre mir lieber, als eine gemeinsame Bibliothek mit meinen Datenverträgen zu nutzen.
SonOfPirate
Ja, ich habe gerade eine Servicereferenz hinzugefügt. Möglicherweise müssen Sie den Endpunkt in der Konfigurationsdatei definieren.
Tom Squires
Ich habe gerade (auf die harte Tour) erfahren, dass Silverlight das WebHttpBinding nicht unterstützt. Obwohl ich einen mex-Endpunkt und eine Dienstreferenz hinzufügen konnte, konnte der Dienst den Anruf nicht tätigen, da er den Endpunkt nicht auflösen konnte.
SonOfPirate
1

Die WCF-Web-API bietet keine Metadateninformationen, die Sie zum Generieren eines Service-Proxys verwenden würden, und kann daher einen Service-Verweis hinzufügen. Es ist wie das ASP.NET MVC 4-Web-API-Framework für die einfache Erstellung von REST-Diensten unter dem WCF-Dach vorgesehen.

Daher gibt es keine Unterstützung für WP7 oder Silverlight, aber es ist fast perfekt für den Rest des Webs.

WCF Data Services sieht jedoch wie ein richtiger Kandidat aus. Sie können RESTful-Services erstellen und diese problemlos mit Silverlight nutzen.

Ned Smajic
quelle
Wir verwenden die Web-API mit unserem Silverlight-Client seit fast einem Jahr ohne Probleme.
SonOfPirate