2013-03-16 17 views

Odpowiedz

12

WebAPI jest oparty na MVC, ale ma pewne subtelne różnice. Musisz zrozumieć, że WebAPI jest oddzielną rzeczą od MVC i nie wymaga MVC. Możesz zainstalować WebAPI oddzielnie i możesz go odinstalować z domyślnych szablonów MVC.

To prawda, MS mogło zbudować WebAPI bezpośrednio w kontrolerach MVC, ale zdecydowało się zachować kontrolery API oddzielnie od kontrolerów MVC, ponieważ tak naprawdę są to różne sposoby radzenia sobie z żądaniami i odpowiedziami.

Przykłady rzeczy można zrobić w WebAPI, że nie można (a przynajmniej nie tak łatwo) w MVC obejmują:

  • zawartość Negocjacje
    • Dzięki temu klient dzwoni do wyboru formatu dane zostaną zwrócone, na przykład XML lub JSON.
  • wsparcie OData
    • To pozwala rozmówcy na „Filter” Wyniki na serwerze bez metody usługi mającej konkretnie wspierać. Na przykład, jeśli chcesz, aby posortować wyniki według imienia, to można zrobić po prostu określając OData zapytanie Parametry

WebAPI zapewnia dużo energii do czynienia z danych wynikowych. MVC nie zapewnia takiej funkcjonalności.

Zwykle korzystasz z interfejsu WebAPI w przypadku żądań Ajax lub żądań opartych na usługach internetowych, które nie wymagają złożoności WCF.

RESTful API nie są specyficzne dla MVC lub WebAPI. Są po prostu filozofią tego, jak projektujesz swoje żądania HTTP w usłudze. Naprawdę jest w tym dużo, ale nie będę w to wchodził.

1

zespół WCF połączyły się Microsoft z zespołu MVC. WCF nie odejdzie, ale dla prostej RESTFUL service call, kontroler MVC był dopasowaniem stworzonym w niebie, a modyfikacja pozwalała na bardzo łatwe Web API.

Podczas gdy wielu z nas czuje, że WCF jest względnie łatwe, wielu jest tych, którzy boją się go i/lub nie mają/potrzebują czasu, aby się tego nauczyć, a więc oni. nadal korzystaj z ASMX, b. wciąż nie zostały przyjęte usługi, lub TERAZ z Web API, są c. Bardzo podekscytowani, że mogą bardzo łatwo zacząć korzystać z usług internetowych.

Tak naprawdę jest to kwestia poziomu komfortu, adaptacji, możliwości zmiany, a interfejs Web API ma swoje miejsce. Nie może zastąpić WCF, ponieważ WCF ma zaawansowane konfiguracje ze wszystkimi powiązaniami i możliwością wykonywania SOAP, a nie tylko REST, który wiele aplikacji wciąż potrzebuje protokołu SOAP.

+2

Nie zgadzam się, że WCF jest "łatwe". Oczywiście, łatwo jest stworzyć prostą usługę, ale WCF ma zbyt wiele "gotch" i ma stromą krzywą uczenia się poza podstawami. Na przykład coś tak prostego zignorowanie samopodpisanego certyfikatu wymaga skoku przez wiele kółek. Problemy z uwierzytelnianiem również stwarzają wiele problemów. W przypadku pełnego SOA, to WCF ma sens, ponieważ zapewnia mnóstwo funkcji, ale dla prostej obsługi AJAX jest to przesada. Nie wspominając o tym, że nie wszystko, co łatwe do odzyskania. –

+1

Jestem z @MystereMan na tym. WCF jest bardzo potężny, ale nie uważam, aby powiązania były łatwe lub zawsze intuicyjne, szczególnie w przypadku takich scenariuszy, jak poświadczenia użytkownika z zabezpieczeniami transportu. O zawar- tych umowach słychać słodkie sytuacje/mocno typowane wyniki + kontrakty, ale wielokrotnie ich przesada, a debugowanie jest zwykle trudniejsze niż proste, spokojne rozmowy. –

+1

"stosunkowo łatwe" to klucz nie "łatwy", ale nie chodzi o to, aby skupić się na mojej rozmowie WCF, ponieważ jest to jedynie punkt porównania, wyraźnie mówię, że Web API ma swoje miejsce i "c. Bardzo podekscytowani (Ludzie), którzy mogą bardzo łatwo zacząć korzystać z usług internetowych "Tak więc wybrałem moje słowa ostrożnie, ponieważ wiele z nich wciąż używa ASMX, niektóre nie używały WCF, ponieważ miały powody, aby tego nie przyjmować, a następnie tłum, który jest Przeskakiwanie w interfejsie API sieci Web w celu uproszczenia prostoty sake. –

1

MVC jest zoptymalizowany do podawania informacji klientowi przeglądarki internetowej. Jeśli Twoim klientem jest coś innego, Web API ułatwi ci życie na dłuższą metę.

Web API jest od podstaw ponownym zapisaniem stosu internetowego. Rdzeń jest znacznie czystszy i bardziej elastyczny niż 12-letnia infrastruktura, na której zbudowano MVC. Web API nie ma jeszcze takiego samego poziomu narzędzi, dodatków, wtyczek jak MVC, ale to przyjdzie.

Powiązane problemy