Was ist der Unterschied zwischen einer API-App und einer Web-App?

95

Ich habe jetzt einige Tutorials zum Bereitstellen von Web-Apps und API-Apps in Azure gelesen. Ich bin mir jedoch immer noch ein wenig unsicher, warum Sie eine über die andere verwenden würden.

Ich kann eine neue .NET-Lösung mit API-Controllern erstellen und diese als Web-App bereitstellen. Warum sollte ich also speziell eine API-App benötigen? Sind diese speziell für die ASP.NET-Web-API optimiert, wo Web-Apps für die Bereitstellung von HTML vorgesehen sind?

envio
quelle

Antworten:

75

Aktualisieren der Antwort auf den aktuellen Status von Azure,

App Services ersetzt jetzt alle Mobil-, API- und Web-Apps-Varianten als ein einziges App-Framework mit allen Funktionen, die erweitert wurden, um den Zugriff auf verschiedene Anwendungstypen zu erleichtern. Derzeit werden alle Web-, Mobile- und Api-Apps gemeinsam als App Services bezeichnet. Wir bieten Kunden weiterhin die Möglichkeit, eine mobile App und eine Web-App in der Galerie zu erstellen. Dies wird jedoch im Grunde genommen in eine App Service App aufgelöst.

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

Funktionen für Mobile Work für Web App sowie Easy Tables und Easy API. Funktionen für API-Apps wie API-Cors und API-Definitionen funktionieren jetzt auch für Web-Apps. Ein Kunde kann eine einzelne Web-App als mobilen Dienst oder API mit allen über die App-Dienste angebotenen Funktionen hosten.

Wir haben auch einen neuen Service in der Vorschau, der speziell auf API-Apps abzielt, indem er eine Verwaltungserfahrung für Ihre APIs bietet. Grundsätzlich können Sie die API-Seiten zum Generieren von Versuchen steuern, Ausführungsanalysen erfassen, Gas geben und vieles mehr. Weitere Informationen zu den Azure API-Verwaltungsfunktionen finden Sie im Feature-Blog. Und ja, Sie können die APIs als App Service App hosten und sich mit API Management verbinden.

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

Chibi Chakaravarthi
quelle
2
Ein großes Lob für die Aktualisierung! Obwohl ... Normalerweise würde ich denken, dass eine neue Antwort in Ordnung wäre, wenn man bedenkt, wie viele Informationen gegenüber der ursprünglichen Antwort aktualisiert wurden. Andererseits denke ich, dass dies ein seltsamer Fall / eine seltsame Grauzone ist, da sie bereits positiv bewertet / akzeptiert wurde. :)
David Makogon
Ja, ich denke, das Aktualisieren ist gut, da es den Thread frisch hält und sicherstellt, dass die Leute die Antwort leicht sehen :).
Chibi Chakaravarthi
4
Also, was ist der Hauptgrund dafür, API-APPs und Web-Apps unter dem Dach von APP Services zu haben, wenn es keinen Unterschied gibt
Hussein Salman
1
Ein weiterer Unterschied: Wenn ein Entwickler eine App-Definition in die API-Verwaltung mithilfe der Api-App-Option importieren möchte, stehen nur als Api-Apps erstellte Web-Apps zur Auswahl
user1075679
59

Es gab einen Zeitpunkt, an dem es Unterschiede zwischen den verschiedenen App-Diensttypen gab, aber das stimmt nicht mehr. In der Dokumentation heißt es nun:

Der einzige Unterschied zwischen den drei App-Typen (API, Web, Mobile) besteht in dem Namen und dem Symbol, die im Azure-Portal für sie verwendet werden.

Es spielt also keine Rolle mehr, für welchen App-Diensttyp Sie die Bereitstellung auswählen (es sei denn, Sie interessieren sich dafür, wie das Symbol aussieht).

AKTUALISIEREN

Funktions-Apps sind jetzt die Ausnahme. Durch das Erstellen einer Funktions-App wird die Benutzeroberfläche im Portal geändert. Die zugrunde liegende Web-App ist jedoch nicht anders. Durch Festlegen einer App-Einstellung mit dem Namen FUNCTIONS_EXTENSION_VERSION= ~1wird jede Web-App in eine Funktions-App umgewandelt (abzüglich der Benutzeroberfläche im Portal).

gregjhogan
quelle
Es gibt noch einen anderen Unterschied. Sie können Debugging-Snappoints nicht für API-Apps verwenden. Siehe die Kommentare von Nikhil_Joglekar_MSFT am 12. Oktober 2017 docs.microsoft.com/en-us/visualstudio/debugger/…
Scott Chamberlain
@ChibiChakaravarthi Wie kann man mithilfe der Rest-API unterscheiden, ob eine App eine Funktions-App ist? Ich verwende diesen API-Endpunkt: management.azure.com/subscriptions {Abonnement-ID} / resourceGroups / {resourceGroupName} /providers/Microsoft.Web/sites/ {name}? Api-version = 2016-08-01 Es gibt einen freundlichen Schlüssel Die Antwort: Ist dieser Schlüssel zuverlässig und nützlich?
Rohanagarwal
Traurigerweise Nein. Die Funktions-App ist nur eine weitere Web-App. Darf ich wissen, warum Sie den Typ der App wissen möchten?
Chibi Chakaravarthi
11

Es gibt viele kleine Unterschiede zwischen Web-API und API-Apps, aber die sehr bemerkenswerten und wesentlichen Unterschiede sind

  1. Native Swagger-Implementierung - Wenn Sie eine API-App in Visual Studio erstellen, wird standardmäßig die Swagger-Referenz verwendet. Swagger bietet API-Verbrauchern sehr entwicklerfreundliche Funktionen für die Interaktion mit Ihrer API über die Swagger-Benutzeroberfläche. Swagger-basierte APIs bieten auch eine Client-SDK-Generierung (sowohl .Net-basierter Client als auch Javascript-basierter Client), mit der APIs wie normale Methodenaufrufe einfach aufgerufen werden können. Hinweis: Die Implementierung von Swagger auf einer regulären Web-API ist manuell möglich.

  2. Möglichkeit, Ihre API-Apps auf dem Azure Market Place zu veröffentlichen. Azure Market Place ist das öffentliche Repository für alle API-Apps, die frei oder kostenlos verwendet werden können.

Dieses 15-minütige Video von Kanal 9 bietet einen hervorragenden Überblick über Api Apps.

Venkatesh Muniyandi
quelle
2

Als Ergänzung zu Gregs Antwort finden Sie hier einen noch neueren Artikel, in dem die Unterschiede beschrieben werden.

Um zusammenzufassen:

"Die Hauptfunktionen von API-Apps - Authentifizierung, CORS und API-Metadaten - wurden direkt in den App Service übernommen. Mit dieser Änderung sind die Funktionen für Web-, Mobil- und API-Apps verfügbar. Tatsächlich verwenden alle drei Microsoft.Web / Ressourcentyp der Site im Ressourcenmanager. "

Und hier noch ein wichtiger Hinweis:

"Wenn Ihre API bereits als Web-App oder mobile App bereitgestellt ist, müssen Sie Ihre App nicht erneut bereitstellen, um die neuen Funktionen nutzen zu können."

Rudy Scoggins
quelle
1

Dies kann davon abhängen, was Sie versuchen, aber Sie würden beim Erstellen eines Dienstes eine Web-API verwenden. Die ASP.Net-Web-API ist ein Framework zum Erstellen von HTTP-Diensten, die von einer Vielzahl von Clients verwendet werden können. Auf diese Weise können Sie es nicht nur für eine Web-App erstellen, sondern auch öffnen, um eine Verbindung zu Android-Apps, IOS-Apps, Web-Apps, Windows 8-Apps, WPF-Apps usw. herzustellen.

Wenn Sie also einen Webdienst benötigen, aber kein SOAP benötigen, können Sie die Web-API verwenden.

Daniel Egan
quelle
Ich denke, der Benutzer sagt, dass eine Web-API-App einer Web-App so ähnlich ist, und tatsächlich können wir sie in VS leicht mischen, was eine Web-API-App einzigartig macht. Wenn wir eine Web-API oder Web-App lokal für IIS bereitstellen, gibt es keinen Unterschied. Warum also einen Unterschied in Azure?
user441521
1

Hier meine Kommentare:

API-App: Wird für bestimmte Funktionen verwendet. Auslösen dieser Funktionalität über eine URL. Kann mit GET, POST, PUT, DELETE verwendet werden. Kann Parameter bei BODY (Json) empfangen. Antwort mit gültigem Statuscode (fehlgeschlagen, erfolgreich)

Web-APP: Eine Anwendung mit mehreren Funktionen, z. B. ein Katalog zum Erstellen, Aktualisieren und Löschen von Kunden oder zum Erstellen eines vollständigen ERP.

Funktions-APP: Ist der API-App sehr ähnlich. Wird für bestimmte Funktionen verwendet. Auslösen dieser Funktionalität über eine URL. Kann mit GET, POST, PUT, DELETE verwendet werden. Kann Parameter bei BODY (Json) empfangen. Antwort mit gültigem Statuscode (fehlgeschlagen, erfolgreich)

Vergleichstabelle: Web App vs API App vs Azure-Funktionen.

Israel Calderon
quelle
0

Tatsächlich können Sie Ihr Aspnet-Webapi in Azure WebApp und einen Selbsthost in Worker Roles bereitstellen.

Auf WebApp (früheren Azure-Websites) wird es auf IIS bereitgestellt, sodass Sie die IIS-Funktionen nutzen können.

Thiago Custodio
quelle