Czym dokładnie jest „Web API” w ASP.Net MVC4?


15

Wiem, czym jest interfejs API sieci Web.
Napisałem API w wielu językach (w tym w MVC3).
Jestem również dobrze praktykowany w ASP.Net.
Właśnie odkryłem, że MVC4 ma „Web API” i bez przejrzenia przykładów wideo nie mogę znaleźć dobrego wyjaśnienia, czym on jest.
Z mojego dotychczasowego doświadczenia wynika, że ​​technologie Microsoft (szczególnie ASP.Net) mają tendencję do przyjmowania prostej koncepcji i owijania jej w bezużyteczne koszty ogólne, które mają ułatwić wszystko „łatwiej”.
Czy ktoś może mi wyjaśnić, czym dokładnie jest Web API w MVC4? Po co mi to? Dlaczego nie mogę po prostu napisać własnego API?


3
Czy mówisz o nowej strukturze interfejsu API sieci Web ? To oddzielne od MVC. Jeśli o to ci chodzi, spójrz na tego posta na blogu Ricka Strahla.
Oded,

1
@Oded: Powinieneś podać to jako odpowiedź.
James P. Wright,

Najfajniejszą rzeczą w interfejsie API sieci Web (której nie widzę nigdzie na liście w zaakceptowanej odpowiedzi lub powyższym linku) jest to, że jeśli zwrócisz IQueryable <>, twoje metody sieciowe automatycznie obsługują składnię zapytań OData! - W ogólnym stosie ASP.NET 4.5 „Web API” i „SignalR” zastępują „WCF” (nie jestem pewien, czy są one zbudowane na WCF, czy nie, ale WCF został usunięty ze wszystkich schematów blokowych i zastąpiony z „Web API” i „SignalR”).
BrainSlugs83

Why can't I just write my own API?Dzięki zwykłemu ASP.NET MVC? Możesz. Interfejs API sieci Web ASP.NET MVC zapewnia dodatkowe ułatwienia. Patrz poniżej.
Jim G.,

Odpowiedzi:


16

Interfejs API sieci Web ASP.NET jest „bezdyskusyjnym” środowiskiem do budowania usługi HTTP bez względu na REST lub RPC. Jest to najlepsza implementacja RFC 2616 (specyfikacja HTTP) firmy Microsoft.

Z pewnością możesz zbudować własny interfejs API, ale ASP.NET Web API:

  • Zbudowany w oparciu o model Russian Doll, który pozwala dodawać moduły typu lego do potoku HTTP
  • Sprawia, że ​​HTTP jest obywatelem pierwszej klasy, dzięki czemu wszystkie typowe nagłówki są mocno wpisane (nie tylko wartość nazwy) i pomaga w ich analizie
  • Pozwala zarówno na hosting ASP.NET (IIS), jak i na własny hosting
  • obsługuje negocjacje treści, typy mediów, ...
  • Jest asynchroniczny od góry do dołu
  • Stosuje podobne podejście dla klientów korzystających z HttpClient

6

Nowy interfejs API sieci Web firmy Microsoft, jak sama nazwa wskazuje, dotyczy tworzenia interfejsów API, które są dostępne w Internecie, z nastawieniem na REST.

Rick Strahl niedawno napisał o tym na blogu i dobrze analizuje, kiedy używać MVC vs Web API.

Rzeczy takie jak wbudowana negocjacja treści, kilka wbudowanych formatów i więcej.


6

W skrócie: ASP.NET Web API sprawia, że ​​REST jest obywatelem pierwszej klasy w .NET , czego WCF nie był w stanie zaakceptować. Jak zapewne wiesz, ASP.NET Web API to framework for building web APIsna platformie .NET Framework.

Jedną z największych frustracji, jaką mieliśmy jako twórcy stron internetowych, była niekończąca się konfiguracja z WCF. To znaczy, WCF jest świetny, ale nie został objęty REST od czasu frameworku API sieci Web WCF . Było coś o nazwie REST Starter Kit, ale skończyło się martwym.

Jednak ASP.NET Web API jest strukturą nowej generacji, która ułatwia budowanie usług HTTP docierających do szerokiej gamy klientów, takich jak przeglądarki i urządzenia mobilne. Jest to idealna platforma do budowania aplikacji RESTful w .NET Framework. Aby uzyskać więcej informacji i świetne posty na blogu, odwiedź stronę blogerów ASP.NET Web API


1
Jeśli zbadasz historię interfejsu API sieci Web, zaczął się on w WCF.
SASS_Shooter

Jest to lekka zamiana na ważne funkcje ułatwiające konfigurację i usprawniające tworzenie aplikacji.
Yusubov

@Yusobov: To nie do końca prawda - istnieją również usługi danych WCF, które są całkiem dobre w tworzeniu apletów REST kompatybilnych z Odatą. Używam go w środowisku produkcyjnym i naprawdę działa dobrze po skonfigurowaniu. Jedynym problemem jest to, że jest znacznie trudniejszy do skonfigurowania niż interfejs API sieci Web ASP.NET.
Adrian Grigore

1

ASP.NET Web API to platforma, która ułatwia tworzenie usług HTTP, które docierają do szerokiej gamy klientów, w tym przeglądarek i urządzeń mobilnych.

ASP.NET Web API to idealna platforma do budowania aplikacji RESTful w .NET Framework.

http://www.asp.net/web-api


EDYTOWAĆ:

W szczególności ASP.NET Web API obejmuje:

  1. Usprawniony potok ASP.NET ze zmniejszonym obciążeniem, jeśli zdecydujesz się hostować swoją usługę w IIS.
  2. HttpClient, który ułatwia klientowi podłączenie się do interfejsu API sieci Web.

Mogę sam przeczytać te rzeczy. Moje pytanie brzmi, o co chodzi? Czym tak różni się korzystanie z interfejsu API sieci Web i używanie zwykłego MVC, ale posiadanie JsonResults zamiast ViewResults?
James P. Wright,

1. Przed MVC 4 możesz zwrócić JSONResult bez żadnych problemów. MVC 4 po prostu zachowuje tę możliwość, zawiera kilka innych klas pomocników, aby ułatwić, i usprawnia potok ASP.NET, aby zmniejszyć obciążenie, gdy wiesz, że nie będziesz musiał zwracać ViewResults.
Jim G.

1
Ponadto, ponieważ jest to skutecznie aktualizacja interfejsu API WCF Web, nie należysz do IIS. Jeśli chcesz, możesz samodzielnie hostować usługę interfejsu API sieci Web platformy ASP.NET. wcf.codeplex.com/…
Jim G.

-2

Dziś aplikacja internetowa nie wystarczy, by dotrzeć do klientów. Ludzie są bardzo inteligentni, w codziennym życiu używają urządzeń iPhone, telefonów komórkowych, tabletów itp. Te urządzenia mają również wiele aplikacji ułatwiających życie. W rzeczywistości przenosimy się z Internetu do świata aplikacji. Jeśli więc chcesz udostępniać swoje dane serwisowe przeglądarkom, a także wszystkim tym nowoczesnym aplikacjom urządzeń w szybki i prosty sposób, powinieneś mieć interfejs API kompatybilny z przeglądarkami i wszystkimi tymi urządzeniami.


wydaje się, że nie dodaje to nic istotnego w stosunku do punktów poczynionych i wyjaśnionych we wcześniejszych 4 odpowiedziach
gnat
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.