Jakiego podejścia / technologii / narzędzia .NET REST należy użyć?

16

Wdrażam usługę internetową RESTful i kilka aplikacji klienckich, które są głównie w Silverlight. Znajduję mnóstwo opcji dla rozwijania interfejsu API po stronie serwera i klienta, ale nie jestem pewien, które z nich jest najlepsze. Martwię się o stabilność, a także o platformę, która będzie istnieć za kilka miesięcy.

Zaczęliśmy używać zestawu startowego REST z .NET 3.5, ale podczas aktualizacji do .NET 4.0 przeszliśmy na nowy interfejs API sieci Web WCF. Cała ich dokumentacja wskazuje, że WCF Web API zastępuje RSK. Interfejs API sieci Web znajduje się jednak tylko w wersji zapoznawczej 4 i nie obejmuje jeszcze obsługi klientów Silverlight ani Windows Phone 7.

WCF Web API wygląda jak opakowanie na rzeczy WCF WebHttp Services zawarte w System.ServiceModel.Webbibliotece, co sprawia, że ​​myślę, że może byłoby łatwiej po prostu skorzystać z wbudowanych rzeczy, ale Web API oferuje kilka fajnych funkcji.

Jestem szczególnie zaangażowany w ustalanie najlepszego kursu dla klienta. Moim głównym wymaganiem jest to, że muszę szybko i łatwo obsługiwać deserializację w obiekty po stronie klienta. Web API oferuje niezłą bibliotekę klienta, ale nie ma wersji Silverlight.

Chciałbym skorzystać z najnowszego podejścia i zestawu narzędzi, który jest aktywnie rozwijany i wspierany.

  1. Czy zestaw startowy REST jest naprawdę przestarzały?

  2. Czy ktoś miał sukces we wdrażaniu zestawu narzędzi WCF Web API?

  3. Czy warto skorzystać z któregokolwiek z nich w ramach wbudowanych funkcji usług WCF WebHttp Services, które można znaleźć w System.ServiceModel.Web?

  4. Czy istnieje jedno rozwiązanie, które działa dla dowolnego klienta (sieć, Silverlight itp.)?

Jakie masz sugestie?

SonOfPirate
źródło
Gorąco polecam użycie servicestack
Mithir

Odpowiedzi:

6

Aby przejrzeć i zamknąć wpis, w wersji zapoznawczej 5 interfejs API sieci Web WCF zrobił ogromny krok naprzód, dzięki czemu tworzenie interfejsów API REST jest niezwykle proste. I chociaż obecna baza kodu w Codeplex nie obejmuje klienta Silverlight, istnieje tam zestaw narzędzi i mogłem łatwo usunąć części Async-CTP z otwartego kodu źródłowego i utworzyć wersję SL.

Zdecydowanie polecam wszystkim zainteresowanym wejściem w REST z WCF, zajrzyj do frameworka: http://wcf.codeplex.com .

FYI - Będzie to zintegrowana część platformy .NET 4.5 i obecnie jest przepisywana, aby działała w tym samym systemie szkieletowym co ASP.NET MVC (chociaż, jak mi powiedziano, na pewno będzie nadal obsługiwać samo-hosting).

SonOfPirate
źródło
1

Nie korzystałem z zestawu startowego REST, ale jak teraz piszę API REST .NET 4.0 WCF, jestem całkiem pewien, że nadal istnieje :)

Polecam spojrzeć na odata. Jest niezwykle szybki i łatwy do zakodowania, i ładnie gra z Silverlight.

Tom Squires
źródło
Jedną z funkcji oferowanych przez WCF Web API jest obsługa OData, która działa dobrze. Ale brak wersji Silverlight mi nie pomaga. Jak sobie radzisz z deserializacją po stronie klienta?
SonOfPirate
Zrobiłem to tylko z WP7 Silverlight. Właśnie dodałem odwołanie do usługi i nazwałem to. Możesz po prostu użyć klienta sieci web i zdekrializować odpowiedź, jeśli to działa lepiej dla Ciebie. To nie jest trudne
Tom Squires
Nie sądziłem, że użycie webHttpBinding do włączenia REST z WCF obsługuje punkt końcowy mex. Jak dodajesz numer referencyjny usługi? To byłoby moje preferencje w stosunku do udostępniania wspólnej biblioteki zawierającej moje kontrakty danych.
SonOfPirate
Właśnie dodałem odwołanie do usługi. Konieczne może być zdefiniowanie punktu końcowego w pliku konfiguracyjnym.
Tom Squires,
Właśnie dowiedziałem się (na poważnie), że Silverlight nie obsługuje WebHttpBinding. Tak więc, chociaż byłem w stanie odsłonić punkt końcowy mex i dodać odwołanie do usługi, usługa nie wykona połączenia, ponieważ nie może rozwiązać punktu końcowego.
SonOfPirate
1

Interfejs API sieci Web WCF nie zapewnia żadnych informacji metadanych, których można by użyć do wygenerowania serwera proxy usługi, dzięki czemu można dodać odwołanie do usługi. Jest przeznaczony do łatwego tworzenia usług REST pod parasolem WCF, podobnie jak w przypadku ASP.NET MVC 4 Web API.

Dlatego nie ma wsparcia dla WP7 lub Silverlight, ale jest prawie idealny dla reszty sieci.

Jednak usługi danych WCF wyglądają jak odpowiedni kandydat, umożliwiają tworzenie usług RESTful i łatwe korzystanie z nich za pomocą Silverlight.

Ned Smajic
źródło
Interfejsu API sieci Web używamy z naszym klientem Silverlight od prawie roku bez żadnych problemów.
SonOfPirate