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?



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


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.

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


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.


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


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.


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


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


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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.