Jaka jest różnica między aplikacją API a aplikacją internetową?

95

Przeczytałem teraz kilka samouczków dotyczących wdrażania aplikacji internetowych i aplikacji API na platformie Azure. Jednak nadal nie jestem pewien, dlaczego miałbyś używać jednego zamiast drugiego.

Mogę stworzyć nowe rozwiązanie .NET z kontrolerami API i wdrożyć je jako aplikację internetową, więc dlaczego miałbym specjalnie wymagać aplikacji API? Czy są one zoptymalizowane specjalnie pod kątem ASP.NET Web API, gdzie aplikacje internetowe służą do dostarczania HTML?

envio
źródło

Odpowiedzi:

76

Aktualizacja odpowiedzi do aktualnego stanu Azure,

Usługi aplikacji zastępują teraz wszystkie odmiany aplikacji mobilnych, API i aplikacji internetowych w ramach jednej struktury aplikacji, a wszystkie funkcje są przenoszone, aby uczynić rzeczy bardziej dostępnymi dla różnych typów aplikacji. Obecnie wszystkie aplikacje internetowe, mobilne i api są łącznie nazywane usługami aplikacji. Nadal oferujemy klientowi możliwość tworzenia aplikacji mobilnej i aplikacji internetowej w galerii, ale w zasadzie jest to rozwiązanie w postaci aplikacji App Service.

https://azure.microsoft.com/en-us/documentation/articles/app-service-api-apps-why-best-platform/

Funkcje do pracy mobilnej w aplikacji internetowej, takie jak Easy Tables i Easy API. Funkcje aplikacji API, takie jak API Cors i definicje API, działają teraz również w aplikacjach internetowych. Klient może hostować pojedynczą aplikację internetową, działającą jako dowolna usługa mobilna lub interfejs API ze wszystkimi funkcjami oferowanymi przez usługi aplikacji.

Mamy również nową usługę w wersji zapoznawczej, szczególnie ukierunkowaną na aplikacje API, oferując doświadczenie zarządzania dla twoich interfejsów API. Zasadniczo możesz kontrolować generowanie stron testowych API, zbierać analizy wykonania, ograniczać i wiele więcej. Zapoznaj się z blogiem dotyczącym funkcji, aby dowiedzieć się więcej o funkcjach Azure API Management. I tak, możesz hostować interfejsy API jako aplikację App Service i łączyć się z API Management.

https://azure.microsoft.com/en-us/documentation/articles/api-management-get-started/

CB
źródło
2
Uznanie za aktualizowanie informacji! Chociaż ... Normalnie myślę, że nowa odpowiedź byłaby w porządku, biorąc pod uwagę, ile informacji zostało zaktualizowanych w porównaniu z oryginalną odpowiedzią. Z drugiej strony, myślę, że jest to dziwny przypadek / szara strefa, ponieważ został już przegłosowany / zaakceptowany. :)
David Makogon
Tak, myślę, że aktualizacja jest dobra, ponieważ utrzymuje aktualność wątku i zapewnia, że ​​ludzie łatwo zobaczą odpowiedź :).
CB
4
Jaki jest więc główny powód posiadania aplikacji API i aplikacji internetowych pod parasolem usług APP, jeśli nie ma różnicy
Hussein Salman
1
Inna różnica: jeśli programista chce zaimportować definicję aplikacji do zarządzania interfejsem API za pomocą opcji Api App, do wyboru będą dostępne tylko aplikacje internetowe utworzone jako Api Apps
użytkownik1075679
60

W pewnym momencie istniały różnice między różnymi typami usług aplikacji, ale to już nie prawda. Dokumentacja teraz stwierdza:

Jedyną różnicą między trzema typami aplikacji (API, internetowymi, mobilnymi) jest ich nazwa i ikona w Azure Portal.

Nie ma więc już znaczenia, który typ usługi aplikacji wybierzesz do wdrożenia (chyba że obchodzi Cię, jak wygląda ikona).

AKTUALIZACJA

Aplikacje funkcyjne są teraz wyjątkiem. Utworzenie aplikacji funkcji zmienia interfejs użytkownika w portalu. Jednak podstawowa aplikacja internetowa nie jest inna. Ustawienie ustawienia aplikacji o nazwie FUNCTIONS_EXTENSION_VERSION= ~1zmienia dowolną aplikację internetową w aplikację funkcji (bez interfejsu użytkownika w portalu).

gregjhogan
źródło
Jest jeszcze jedna różnica. Nie możesz używać punktów przyciągania debugowania w aplikacjach API. Zobacz komentarze Nikhil_Joglekar_MSFT z 12 października 2017 r. Docs.microsoft.com/en-us/visualstudio/debugger/…
Scott Chamberlain
@ChibiChakaravarthi Jak rozróżnić, czy aplikacja jest aplikacją funkcyjną, używając REST API? Używam tego punktu końcowego API: management.azure.com/subscriptions {subscriptionId} / resourceGroups / {resourceGroupName} /providers/Microsoft.Web/sites/ {name}? Api-version = 2016-08-01 Jest klucz rodzaju odpowiedź, czy ten klucz jest wiarygodny i użyteczny?
rohanagarwal
Niestety nie. Aplikacja funkcji to po prostu kolejna aplikacja internetowa. Czy mogę wiedzieć, dlaczego chcesz znać typ aplikacji?
CB,
Czuję, że to lepsza, bezpośrednia odpowiedź na to pytanie.
AlvinfromDiaspar
11

Istnieje wiele drobnych różnic między interfejsem API sieci Web a aplikacjami API, ale są to bardzo istotne i kluczowe różnice

  1. Implementacja natywnego elementu Swagger - podczas tworzenia aplikacji interfejsu API w programie Visual Studio odwołanie do elementu Swagger jest domyślnie dostępne. Swagger zapewnia bardzo przyjazne dla programistów funkcje dla konsumentów API do interakcji z interfejsem API za pośrednictwem interfejsu użytkownika Swagger. Również API oparte na Swagger zapewnia generowanie SDK klienta (zarówno klient oparty na .Net, jak i klient oparty na Javascript), co ułatwia wywoływanie API, tak jak zwykłe wywołanie metody. Uwaga: implementacja Swaggera w zwykłym interfejsie API sieci Web jest możliwa ręcznie.

  2. Możliwość publikowania aplikacji API w witrynie Azure Market Place. Azure Market Place to publiczne repozytorium wszystkich aplikacji interfejsu API, z których można korzystać bezpłatnie lub za opłatą.

ten 15-minutowy film z Channel 9 zawiera doskonały przegląd aplikacji Api.

Venkatesh Muniyandi
źródło
2

Aby uzupełnić odpowiedź Grega, oto jeszcze nowszy artykuł opisujący różnice.

Podsumowując:

„Kluczowe funkcje aplikacji API - uwierzytelnianie, CORS i metadane interfejsu API - zostały przeniesione bezpośrednio do App Service. Dzięki tej zmianie funkcje są dostępne w aplikacjach internetowych, mobilnych i API. W rzeczywistości wszystkie trzy korzystają z tego samego Microsoft.Web / typ zasobu witryn w Menedżerze zasobów ”.

A oto kolejna ważna uwaga:

„Jeśli Twój interfejs API jest już wdrożony jako aplikacja internetowa lub aplikacja mobilna, nie musisz ponownie wdrażać aplikacji, aby skorzystać z nowych funkcji”.

Rudy Scoggins
źródło
1

Może to zależeć od tego, co próbujesz zrobić, ale podczas tworzenia usługi należy użyć interfejsu API sieci Web. ASP.Net Web API to platforma służąca do tworzenia usług HTTP, z których może korzystać wielu klientów. Pozwala to zbudować go nie tylko dla aplikacji internetowej, ale także otworzyć go, aby łączyć się z aplikacjami na Androida, aplikacjami IOS, aplikacjami internetowymi, aplikacjami Windows 8, aplikacjami WPF itp.

Jeśli więc potrzebujesz usługi sieciowej, ale nie potrzebujesz protokołu SOAP, możesz użyć interfejsu API sieci Web.

Daniel Egan
źródło
Myślę, że użytkownik mówi, że aplikacja webowego API jest tak podobna do aplikacji internetowej i faktycznie w VS możemy je łatwo mieszać, co sprawia, że ​​aplikacja internetowa jest wyjątkowa. Gdy lokalnie wdrażamy interfejs API sieci Web lub aplikację internetową w usługach IIS, nie ma żadnej różnicy, więc po co różnica na platformie Azure?
user441521
1

Tutaj moje komentarze:

Aplikacja API: używana do określonych funkcji. Wyzwalanie tej funkcji z adresu URL. Może być używany z GET, POST, PUT, DELETE. Może otrzymać parametry w BODY (Json). Odpowiedź z poprawnym kodem stanu (niepowodzenie, powodzenie).

Aplikacja internetowa: aplikacja wdrożona z wieloma funkcjami, na przykład katalog do tworzenia, aktualizowania i usuwania klientów lub do tworzenia kompletnego ERP.

Aplikacja funkcji: jest bardzo podobna do aplikacji API, używana do określonych funkcji. Wyzwalanie tej funkcji z adresu URL. Może być używany z GET, POST, PUT, DELETE. Może otrzymać parametry w BODY (Json). Odpowiedź z poprawnym kodem stanu (niepowodzenie, powodzenie).

Tabela porównawcza: aplikacja internetowa, aplikacja interfejsu API i usługa Azure Functions.

Israel Calderon
źródło
0

W rzeczywistości możesz wdrożyć webapi aspnet w Azure WebApp i własny host w rolach procesu roboczego.

W aplikacji WebApp (dawne witryny internetowe platformy Azure) zostanie wdrożona w usługach IIS, dzięki czemu można będzie korzystać z funkcji usług IIS.

Thiago Custodio
źródło