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?
asp.net-mvc
asp.net-web-api
Hugo Zapata
źródło
źródło
Odpowiedzi:
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.
ApiController
Klasa jest konsolidowana wController
klasie. Więcej na: https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6Odpowiednie łącze do porównania, dyskusji i samouczków:
źródło
WebAPI wypluwa OData, więc masz wszystkie zalety korzystania z OData. Na przykład dzięki WebAPI otrzymujesz:
źródło
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.
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
źródło
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.
źródło
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.
źródło
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.
źródło
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
źródło
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
źródło
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.
źródło
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.
źródło