API vs. Webservice [geschlossen]

204

Was ist der Unterschied zwischen einem Webservice und einer API? Ist der Unterschied größer als das Protokoll zur Datenübertragung? Vielen Dank.

Chips
quelle
3
Mit API meinen Sie eine API, auf die über HTTP zugegriffen wird? Oder nur eine normale einfache API?
Pablo Santa Cruz
1
Siehe auch Programmierer. SE
Hippietrail
Du musst mich veräppeln. 122 Upvotes und die Frage ist aufgrund von Mischpegeln gebrochen.
Joshua
Sie haben mich, ich bin nicht sicher, warum diese Frage geschlossen wurde
Chips

Antworten:

172

Eine API (Application Programming Interface) ist das Mittel, mit dem Dritte Code schreiben können, der mit anderem Code verbunden ist. Ein Webdienst ist eine Art API, die fast immer über HTTP ausgeführt wird (obwohl einige wie SOAP alternative Transporte wie SMTP verwenden können). In der offiziellen W3C-Definition wird erwähnt, dass Webdienste nicht unbedingt HTTP verwenden. Dies ist jedoch fast immer der Fall und wird normalerweise angenommen, sofern nicht anders angegeben.

Beispiele für Webdienste finden Sie unter SOAP , REST und XML-RPC . Ein Beispiel für einen anderen API-Typ, der in C für die Verwendung auf einem lokalen Computer geschrieben wurde, finden Sie in der Linux-Kernel-API .

Was das Protokoll betrifft, verwendet eine Webdienst-API fast immer HTTP (daher das Webpart) und beinhaltet definitiv die Kommunikation über ein Netzwerk. APIs können im Allgemeinen jedes gewünschte Kommunikationsmittel verwenden. Die Linux-Kernel-API verwendet beispielsweise Interrupts , um die Systemaufrufe aufzurufen, aus denen sich die API für Aufrufe aus dem Benutzerbereich zusammensetzt.

Andrew Cholakian
quelle
8
Würden Sie jeden Webdienst als API betrachten? Wie wäre es, wenn Sie AJAX zum Neuladen eines Bereichs einer Webseite verwenden, anstatt die gesamte Seite neu zu laden? Ich sehe dies nicht unbedingt als API, obwohl ein Webdienst beteiligt ist. Andernfalls können wir davon ausgehen, dass für jede jemals erstellte Funktion, sei es in einer DLL, einer JAR, einem Webdienst oder einfachem Code, alle APIs verwendet werden. Damit eine API eine API ist, müssen Entwickler von Drittanbietern berücksichtigt werden, und die API sollte keinerlei Abhängigkeit vom Endprodukt (der App, die die API verwendet) haben.
Ronald
18
Ja, jeder Webdienst ist eine API. Ja, ein AJAX-Webdienst ist eine API, nur undokumentiert und daher nicht wirklich für den öffentlichen Gebrauch gedacht. Nicht jede API ist eine API, die für den Verbrauch durch Dritte entwickelt wurde. Sie können auch interne APIs haben.
Ryan Shillington
54

Grundsätzlich ist ein Webservice eine Kommunikationsmethode zwischen zwei Computern, während eine API eine exponierte Schicht ist, mit der Sie gegen etwas programmieren können.

Sie könnten sehr gut eine API haben und die Hauptmethode für die Interaktion mit dieser API ist über einen Webservice.

Die technischen Definitionen (mit freundlicher Genehmigung von Wikipedia) sind:

API

Eine Anwendungsprogrammierschnittstelle (API) ist eine Reihe von Routinen, Datenstrukturen, Objektklassen und / oder Protokollen, die von Bibliotheken und / oder Betriebssystemdiensten bereitgestellt werden, um die Erstellung von Anwendungen zu unterstützen.

Internetservice

Ein Webdienst (auch Webdienst) wird vom W3C als "ein Softwaresystem definiert, das die interoperable Interaktion von Maschine zu Maschine über ein Netzwerk unterstützt".

Mark Biek
quelle
4
Ich bin damit einverstanden, dass jemand Einwände gegen meine Antwort erhebt, aber ich wäre gespannt, warum.
Mark Biek
41
Ihre Antwort impliziert, dass APIs und Webservices unterschiedlich sind, obwohl ein Webdienst tatsächlich eine Art API ist. Da der Kern dieser Frage darin besteht, was der Unterschied zwischen den beiden ist, ist es wichtig, dass in der Antwort klargestellt wird, dass Webservices eine Art API sind.
Andrew Cholakian
3
Interessant. Ich werde (respektvoll :)) nicht zustimmen müssen. Aber ich freue mich über das Feedback.
Mark Biek
43

In einem allgemeinen Sinne ein Webservice IST eine API über HTTP. Sie verwenden häufig JSON oder XML, aber es gibt auch einige andere Ansätze.

cgp
quelle
20
Alle Webservices sind also APIs, aber nicht alle APIs sind Webservices?
Chips
13
Richtig, APIs können Bibliotheken wie DLLs, JARs oder OCX usw. sein. Sie können auch eine Quellcodeverteilung wie die PHP-API von Facebook sein ...
cgp
10

APIs sind eine veröffentlichte Schnittstelle, die definiert, wie Komponente A mit Komponente B kommuniziert.

Doubleclick verfügt beispielsweise über eine veröffentlichte Java-API, mit der Benutzer die Datenbanktabellen abfragen können, um Informationen zu ihrer Online-Werbekampagne zu erhalten.

zB GetNumberClicks (Benutzername) aufrufen

Um die API zu implementieren, müssen Sie die Doubleclick-JAR-Datei zu Ihrem Klassenpfad hinzufügen. Der Anruf ist lokal.

Ein Webdienst ist eine Form der API, bei der die Schnittstelle mithilfe einer WSDL definiert wird. Dies ermöglicht das Remote-Aufrufen einer Schnittstelle über HTTP.

Wenn Doubleclick ihre Benutzeroberfläche als Webdienst implementieren würde, würden sie so etwas wie Axis2 verwenden, das in Tomcat ausgeführt wird.

Der Remote-Benutzer würde den Webdienst aufrufen

zB GetNumberClicksWebService (Benutzername) aufrufen

und der GetNumberClicksWebService-Dienst würde GetNumberClicks lokal aufrufen.

rbrayb
quelle
Diese Frage ist wirklich alt, aber ich werde feststellen, dass diese Antwort APIs und Schnittstellen verwirrt. Eine API ist mehr als eine veröffentlichte Schnittstelle (die beispielsweise SOAP enthalten würde), sondern die öffentliche Schnittstelle zu einer bestimmten Anwendung oder einem bestimmten Dienst. Es wäre genauer zu sagen: "APIs sind Komponenten mit einer veröffentlichten Schnittstelle, über die Komponenten von Drittanbietern mit ihnen interagieren können."
JDB erinnert sich noch an Monica
7

API (Application Programming Interface), das vollständige Formular selbst schlägt vor, dass es sich um eine Schnittstelle handelt, mit der Sie mithilfe der Unterstützung oder Unterstützung einer anderen Anwendungsschnittstelle für Ihre Anwendung programmieren können, die eine für Ihre Anwendung nützliche Funktionalität bereitstellt.

Zum Beispiel würde das Anzeigen aktualisierter Wechselkurse auf Ihrer Website eine Schnittstelle eines Drittanbieters zum Programmieren erfordern, es sei denn, Sie planen eine eigene Datenbank mit Wechselkursen und regelmäßigen Aktualisierungen derselben. Diese Funktionen sind verfügbar, wenn sie bereits für andere verfügbar sind und wenn sie sie mit anderen teilen möchten, müssen sie einen Endpunkt haben, um mit den anderen zu kommunizieren, die an solchen Interaktionen interessiert sind, damit sie sie über das Web im Web bereitstellen können. Dienstleistungen. Dieser Endpunkt ist nichts anderes als eine Schnittstelle ihrer Anwendung, gegen die Sie programmieren können.

Manoj Dwivedi
quelle
4

API ist eine codebasierte Integration, während Webdienst eine nachrichtenbasierte Integration mit interoperablen Standards ist, die einen Vertrag wie WSDL haben.

Pingala
quelle
Ich bin nicht sicher, ob Ihre Antwort etwas zu den vorhandenen Antworten hinzufügt.
Andrewsi
3

Stellen Sie sich den Webdienst als Web-API vor. API ist heutzutage ein so allgemeiner Begriff, dass ein Webdienst eine Schnittstelle zu Funktionen ist, die normalerweise geschäftsbezogen sind und über eine Vielzahl von Protokollen vom Netzwerk aus aufgerufen werden können.

Joshua Belden
quelle
1

Überprüfen Sie dies http://en.wikipedia.org/wiki/Web_service

Wie der Link erwähnt, handelt es sich bei der Web-API um eine Entwicklung von Webdiensten, die sich höchstwahrscheinlich auf Web 2.0 bezieht, während SOAP-basierte Dienste durch REST-basierte Kommunikation ersetzt werden. Beachten Sie, dass für REST-Services keine XML-, SOAP- oder WSDL-Service-API-Definitionen erforderlich sind. Dies unterscheidet sich daher erheblich von herkömmlichen Webdiensten.

longbkit
quelle
0

Ein weiteres Beispiel: Google Map API vs Google Direction API-Webdienst, während der erstere Javascript-Datei an die Site liefert (liefert) (die dann als API verwendet werden kann, um neue Funktionen zu erstellen), der letztere ist ein Rest-Webdienst, der Daten liefert ( im json- oder xml-Format), das verarbeitet werden kann (aber nicht im API-Sinne verwendet wird).

anu
quelle
1
Ähm ... Javascript kann als Daten zurückgegeben und dann als Code verwendet werden. Dies ist kein gültiger Kontrast
David C