ASP.NET WebApi czy MVC? [Zamknięte]

140

Dzięki kontrolerom ASP.NET MVC możesz udostępniać swoje dane w różnych formatach. AspNetWebAPI zostało zaprojektowane specjalnie do tworzenia interfejsów API, ale mogę to łatwo zrobić z kontrolerami MVC, nie jest dla mnie jasne, w jakich przypadkach byłoby to lepsze niż tradycyjne kontrolery MVC. Interesują mnie scenariusze, w których korzyści z WebApi są oczywiste i warto byłoby dodać kolejną warstwę złożoności do moich aplikacji.

Pytanie: jakie są zalety i / lub wady korzystania z asp.net WebApi w odniesieniu do MVC?

Hugo Zapata
źródło
11
Zabawne jest dla mnie to, jak przypadkowe pytania „kontra” są natychmiast zamykane lub wspinają się na ten poziom pozytywnych głosów.
cbmeeks
10
Grrr. Nienawidzę tych banerów „zamkniętych jak za broard”. Tyle razy znajduję takie świetne pytania. I częściej niż nie mają też świetnych odpowiedzi. A co, jeśli jest za szeroka. Eksperci są tutaj, a nie na Wikipedii czy innym forum. Więc pozwól im robić swoje i zejdź im z drogi.
nharrer

Odpowiedzi:

47

WebApi umożliwia tworzenie usług, które mogą być ujawniane za pośrednictwem protokołu HTTP, a nie za pośrednictwem formalnej usługi, takiej jak WCF lub SOAP. Inną różnicą jest sposób, w jaki WebApi używa protokołu HTTP i sprawia, że ​​jest naprawdę obywatelem HTTP pierwszej klasy.

AKTUALIZACJA: ASP.NET Core, interfejs API sieci Web został zintegrowany z typem projektu MVC. ApiControllerKlasa jest konsolidowana w Controllerklasie. Więcej na: https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6

Odpowiednie łącze do porównania, dyskusji i samouczków:

wprowadź opis obrazu tutaj

Yusubov
źródło
20
Nie zgadzam się, że drugi post jest podobny. Drugi post dotyczy w rzeczywistości WCF vs WebAPI.
Shane Courtrille
Technicznie rzecz biorąc, jest to napisane w WCF Web API, jednak post wspomina w drugim wierszu, że jest teraz scalony z interfejsem API sieci Web Asp.net i obsługuje własny hosting. Mimo to zaktualizowałem link o nowszy. Mam nadzieję, że to pomoże.
Yusubov
Zaktualizowano odniesienia.
Yusubov
23

WebAPI wypluwa OData, więc masz wszystkie zalety korzystania z OData. Na przykład dzięki WebAPI otrzymujesz:

  • Opcje zapytań, takie jak $ filter, $ top, $ orderby itp.
    • W przypadku tradycyjnych kontrolerów MVC należy je zaimplementować samodzielnie.
  • Standaryzacja formatu
    • Istnieją klienci OData, którzy zrozumieją podstawowy format interfejsu API RESTful.
Paolo del Mundo
źródło
5
Raczej. Mogę obsługiwać oData, ale tylko wtedy, gdy udekorujesz akcję atrybutem „queryable”, przynajmniej od RC.
EBarr
14

Interfejs API sieci Web Asp.Net VS Asp.Net MVC 1 . Asp.Net MVC służy do tworzenia aplikacji internetowych, które zwracają zarówno widoki, jak i dane, ale interfejs API sieci Web Asp.Net służy do tworzenia pełnowartościowych usług HTTP w łatwy i prosty sposób, który zwraca tylko dane, a nie widok.wprowadź opis obrazu tutaj

2 . Web API pomaga budować usługi REST-ful na platformie .NET Framework, a także obsługuje negocjacje zawartości (chodzi o wybór najlepszego formatu odpowiedzi, który może być akceptowany przez klienta. Mogą to być JSON, XML, ATOM lub inne sformatowane dane ), hosting własny, który nie znajduje się w MVC.

3 . Web API dba również o zwracanie danych w określonym formacie, takim jak JSON, XML lub innym, na podstawie nagłówka Accept w żądaniu i nie martw się o to. MVC zwraca tylko dane w formacie JSON przy użyciu JsonResult.

4 . W interfejsie API sieci Web żądanie jest mapowane na akcje oparte na zleceniach HTTP, ale w MVC jest mapowane na nazwę akcji.

5 . Asp.Net Web API to nowa struktura i część podstawowej struktury ASP.NET. Powiązanie modelu, filtry, routing i inne funkcje MVC istnieją w interfejsie API sieci Web różnią się od MVC i istnieją w nowym zestawie System.Web.Http. W MVC te funkcje istnieją w System.Web.Mvc. W związku z tym interfejs API sieci Web może być również używany z Asp.Net i jako samodzielna warstwa usług.

6 . Możesz mieszać Web API i kontroler MVC w jednym projekcie, aby obsługiwać zaawansowane żądania AJAX, które mogą zwracać dane w formacie JSON, XML lub innym, i budować pełną usługę HTTP. Zazwyczaj będzie to nazywane samoobsługowym interfejsem API sieci Web.

7 . Jeśli masz mieszany kontroler MVC i interfejsu API sieci Web i chcesz zaimplementować autoryzację, musisz utworzyć dwa filtry, jeden dla MVC, a drugi dla interfejsu API sieci Web, ponieważ oba są różne.

8 . Ponadto interfejs API sieci Web jest lekką architekturą i poza aplikacją internetową może być również używany z aplikacjami na smartfony.

Oryginalne źródło jest tutaj

ciekawyBoy
źródło
13

Podobieństwa

1) oba dziedziczą po ihhtphandler dla asyncrequest, więc w zasadzie apicontroller lub kontroler mvc oba są opakowaniem wokół sieci.

Różnice: 1) kontroler mvc jest bardzo ciężki, gdybyś mógł przejść przez jego definicję, możesz zobaczyć, ile interfejsów i kod bazowy użył, web api jest lżejszym kontrolerem i rozróżnia żądanie po jego przekazanych parametrach (tak, możemy to również zmienić! )

2) Kontroler MVC ma zbyt wiele funkcji, takich jak zwracanie widoków, wynik akcji, wynik javascript itp., Ale w interfejsie API sieci Web ma format JSON lub XML

3) API służy do implementacji usług Restful (pobieranie, wysyłanie, usuwanie, opcje), które mogą niezależnie hostować w dowolnym miejscu bez zależności od widoków, kontroler MVC nie może tego obsługiwać, ponieważ jest ściśle zintegrowany z widokami.

LostCoder
źródło
1
Warto zauważyć, że nadal można osiągnąć zachowanie podobne do API z MVC, używając wyników akcji mvc, takich jak JSONResult itp. Jednak, jak wskazałeś, kontroler MVC jest cięższy. Również sposób implementacji kontrolerów Web API jest bardziej sprzyjający tworzeniu API niż MVC.
Oprogramowanie Grizzly Peak,
12

Wydaje się, że ten obraz ukazuje różnice i podobieństwa w sposobie, w jaki sprawa. Mam nadzieję, że jest to dla mnie interesujące.

wprowadź opis obrazu tutaj

BehrouzMoslem
źródło
10

W pewnym momencie możesz razem zapomnieć o ASP.NET MVC. Jeśli jesteś programistą .NET, ale chcesz zbudować aplikację jednostronicową (na przykład przy użyciu Angular), będziesz chciał korzystać z zalet usługi RESTful (WebAPI) bez zbędnego nadmiaru, który jest dostarczany z ASP.NET MVC.

Co z Bobem
źródło
5

ASP.NET MVC i ASP.NET Web API oba są używane do różnych celów

ASP.NET

ASP.NET oferuje trzy struktury do tworzenia aplikacji internetowych: formularze sieci Web, ASP.NET MVC i strony internetowe ASP.NET. Wszystkie trzy frameworki są stabilne i dojrzałe, a za ich pomocą możesz tworzyć świetne aplikacje internetowe. Bez względu na to, jaką platformę wybierzesz, wszystkie korzyści i funkcje ASP.NET uzyskasz wszędzie.

Każdy framework jest przeznaczony dla innego stylu programowania. Ten, który wybierzesz, zależy od kombinacji twoich zasobów programistycznych (wiedzy, umiejętności i doświadczenia programistycznego), rodzaju tworzonej aplikacji i wygodnego podejścia do programowania. Wszystkie trzy struktury będą obsługiwane, aktualizowane i ulepszane w przyszłych wersjach programu ASP.NET.

MVC

ASP.NET MVC zapewnia potężny, oparty na wzorcach sposób tworzenia dynamicznych witryn internetowych, który umożliwia czyste oddzielenie problemów i zapewnia pełną kontrolę nad znacznikami w celu przyjemnego, zwinnego programowania. ASP.NET MVC zawiera wiele funkcji, które umożliwiają szybkie, przyjazne dla TDD tworzenie zaawansowanych aplikacji korzystających z najnowszych standardów internetowych.

Internetowy interfejs API

ASP.NET Web API to platforma ułatwiająca tworzenie usług HTTP docierających do szerokiego grona klientów, w tym przeglądarek i urządzeń mobilnych. ASP.NET Web API to idealna platforma do tworzenia aplikacji RESTful na platformie .NET Framework.

możesz przeczytać więcej formularza tutaj http://www.dotnet-tricks.com/Tutorial/webapi/Y95G050413-Difference-between-ASP.NET-MVC-and-ASP.NET-Web-API.html

Koder
źródło
3

ASP.NET MVC koncentruje się na łatwym tworzeniu kodu HTML. ASP.NET Web API koncentruje się na ułatwieniu tworzenia surowych danych.

W świecie formularzy sieci Web ASP.NET MVC byłby odpowiednikiem stron .aspx, a ASP.NET Web API byłby .asmx

Murugesan Nataraj
źródło
2

Asp.Net MVC służy do tworzenia aplikacji internetowych, które zwracają zarówno widoki, jak i dane, ale interfejs API sieci Web Asp.Net służy do tworzenia pełnowartościowych usług HTTP w łatwy i prosty sposób, który zwraca tylko dane, a nie widok.

Web API pomaga budować usługi REST-ful na platformie .NET Framework, a także obsługuje negocjacje treści (chodzi o wybór najlepszego formatu odpowiedzi, który mógłby być akceptowany przez klienta. Może to być JSON, XML, własny hosting, które nie są w MVC.

Web API dba również o zwracanie danych w określonym formacie, takim jak JSON, XML lub innym, na podstawie nagłówka Accept w żądaniu i nie martw się o to. MVC zwraca tylko dane w formacie JSON przy użyciu JsonResult.

Nikhil Fegade
źródło
1

Zazwyczaj WebAPI jest używane w usługach danych, w których MVC może generować więcej typów danych wyjściowych.

WebAPI z pewnością upraszcza sposób, w jaki tworzymy usługi danych. W tym celu jest czysty i łatwy. MVC zawiera więcej narzędzi.

MVC może generować dowolne dane wyjściowe, które może wyświetlać interfejs WebAPI. Generowanie wyników z szablonów można łatwo osiągnąć w MVC. Nie mogę znaleźć powodu, aby to robić w WebAPI. Programiści PHP i starzy programiści ASP mogą znać to podejście z przeszłości, gdzie można budować pliki HTML z zawartym w nich kodem C #.

WebAPI - DATA MVC - DATA, UI / HTML, XHTML, pliki, szablony itp.

Eitan Revach
źródło