API vs. Webservice [zamknięte]


204

Jaka jest różnica między usługą internetową a interfejsem API? Czy różnica jest większa niż protokół używany do przesyłania danych? dzięki.


3
Przez API masz na myśli interfejs API dostępny przez HTTP? A może zwykły zwykły interfejs API?
Pablo Santa Cruz



Żartujesz sobie. 122 głosy poparcia i pytanie jest zerwane z powodu mieszania poziomów.
Joshua

masz mnie, nie jestem pewien, dlaczego to pytanie zostało zamknięte
żetony

Odpowiedzi:


172

Interfejs API (Application Programming Interface) to sposób, w jaki osoby trzecie mogą pisać kod, który łączy się z innym kodem. Usługa sieci Web to rodzaj interfejsu API, który prawie zawsze działa przez HTTP (choć niektóre, takie jak SOAP, mogą korzystać z alternatywnych transportów, takich jak SMTP). Oficjalna definicja W3C wspomina, że usługi internetowe nie muszą używać HTTP, ale jest to prawie zawsze tak jest zazwyczaj zakłada się, chyba że zaznaczono inaczej.

Aby zapoznać się z przykładami usług internetowych, zobacz SOAP , REST i XML-RPC . Na przykład innego typu API, napisanego w C do użytku na komputerze lokalnym, zobacz Linux Kernel API .

Jeśli chodzi o protokół, interfejs API usługi sieci Web prawie zawsze korzysta z protokołu HTTP (stąd część sieci Web) i zdecydowanie wymaga komunikacji przez sieć. Interfejsy API ogólnie mogą korzystać z dowolnych środków komunikacji, jakie chcą. Na przykład interfejs API jądra Linux używa Przerwania do wywoływania wywołań systemowych, które składają się na jego interfejs API dla wywołań z przestrzeni użytkownika.


8
Czy uważasz każdą usługę internetową za API? Co powiesz na używanie AJAX do przeładowania regionu strony internetowej zamiast przeładowywania całej strony? Niekoniecznie postrzegam to jako API, mimo że zaangażowana jest usługa internetowa. W przeciwnym razie możemy stwierdzić, że dla każdego elementu funkcji, jaki kiedykolwiek stworzono, może to być biblioteka DLL, plik JAR, usługa sieci web lub zwykły kod, które mają być wszystkimi interfejsami API. Aby interfejs API był interfejsem API, musi mieć na uwadze zewnętrznych programistów, a interfejs API nie powinien być w żaden sposób zależny od produktu końcowego (aplikacji korzystającej z interfejsu API).
Ronald

18
Tak, każda usługa internetowa jest interfejsem API. Tak, usługa sieciowa AJAX jest interfejsem API, jest po prostu nieudokumentowana i dlatego tak naprawdę nie jest przeznaczona do publicznego użytku. Nie każdy interfejs API jest interfejsem API zaprojektowanym do użytku zewnętrznego. Możesz także mieć wewnętrzne interfejsy API.
Ryan Shillington,

54

Zasadniczo usługa sieciowa jest metodą komunikacji między dwoma komputerami, podczas gdy interfejs API jest odsłoniętą warstwą umożliwiającą programowanie przeciwko czemuś.

Możesz mieć interfejs API, a główną metodą interakcji z tym interfejsem API jest usługa internetowa.

Definicje techniczne (dzięki uprzejmości Wikipedii) to:

API

Interfejs programowania aplikacji (API) to zestaw procedur, struktur danych, klas obiektów i / lub protokołów udostępnianych przez biblioteki i / lub usługi systemu operacyjnego w celu wspierania tworzenia aplikacji.

Serwis internetowy

Usługa internetowa (również usługa internetowa) jest zdefiniowana przez W3C jako „system oprogramowania zaprojektowany do obsługi interoperacyjnej interakcji maszyna-maszyna w sieci”


4
Nie przeszkadza mi ktoś, kto sprzeciwia się mojej odpowiedzi, ale byłbym ciekawy, dlaczego.
Mark Biek

41
Twoja odpowiedź sugeruje, że interfejsy API i usługi sieciowe są różne, podczas gdy w rzeczywistości usługa internetowa jest rodzajem interfejsu API. Ponieważ sedno tego pytania polega na tym, jaka jest różnica między tymi dwoma, ważne jest, aby odpowiedź wyjaśniła, że ​​usługi sieciowe są rodzajem interfejsu API.
Andrew Cholakian

3
Ciekawy. Będę musiał (z szacunkiem :)) się nie zgodzić. Ale doceniam opinie.
Mark Biek

44

W ogólnym ujęciu usługa internetowa JEST interfejsem API przez HTTP. Często używają JSON lub XML, ale są też inne podejścia.


20
Więc wszystkie usługi sieciowe są API, ale nie wszystkie API są usługami internetowymi?
żetony

13
Zgadza się, API mogą być bibliotekami takimi jak DLL, JAR lub OCX itp. Mogą być także dystrybucją kodu źródłowego, taką jak PHP PHP na Facebooku ...
cgp 30.04.2009

10

Interfejsy API to opublikowany interfejs, który określa, w jaki sposób komponent A komunikuje się z komponentem B.

Na przykład Doubleclick ma opublikowany interfejs API języka Java, który pozwala użytkownikom przesłuchiwać tabele bazy danych w celu uzyskania informacji o ich internetowej kampanii reklamowej.

np. zadzwoń do GetNumberClicks (nazwa użytkownika)

Aby wdrożyć interfejs API, należy dodać plik .jar Doubleclick do ścieżki klasy. Połączenie jest lokalne.

Usługa internetowa jest formą interfejsu API, w której interfejs jest definiowany za pomocą WSDL. Umożliwia to zdalne wywoływanie interfejsu przez HTTP.

Gdyby Doubleclick zaimplementował swój interfejs jako usługę internetową, użyłby czegoś takiego jak Axis2 działający w Tomcat.

Użytkownik zdalny zadzwoniłby do usługi internetowej

np. zadzwoń do GetNumberClicksWebService (nazwa użytkownika)

a usługa GetNumberClicksWebService wywołałaby GetNumberClicks lokalnie.


To pytanie jest naprawdę stare, ale zauważę, że ta odpowiedź myli interfejsy API i interfejsy. Interfejs API to coś więcej niż opublikowany interfejs (który obejmuje takie rzeczy jak SOAP), to interfejs publiczny dla konkretnej aplikacji lub usługi. Bardziej trafne byłoby powiedzenie czegoś w rodzaju „Interfejsy API to komponenty, które mają opublikowany interfejs, za pomocą którego komponenty innych firm mogą z nimi współdziałać”.
JDB wciąż pamięta Monikę

7

API (Application Programming Interface), sama forma sugeruje, że jest to interfejs, który pozwala programować dla twojej aplikacji za pomocą lub wsparcia innego interfejsu aplikacji, który udostępnia pewne funkcje przydatne dla twojej aplikacji.

Np. Pokazywanie zaktualizowanych kursów wymiany walut na twojej stronie wymagałoby programowania interfejsu innej firmy, chyba że planujesz mieć własną bazę danych z kursami walut i regularnymi aktualizacjami. Ten zestaw funkcji jest dostępny, gdy jest już dostępny z kimś innym, a gdy chcą go udostępnić innym, muszą mieć punkt końcowy, aby komunikować się z innymi, którzy są zainteresowani takimi interakcjami, aby wdrożyć go w sieci za pomocą Internetu- usługi. Ten punkt końcowy jest niczym innym jak interfejsem ich aplikacji, który można zaprogramować na podstawie API.


4

API to integracja oparta na kodzie, podczas gdy usługa sieciowa to integracja oparta na komunikatach ze standardami interoperacyjnymi mającymi umowę, taką jak WSDL.


Nie jestem pewien, czy twoja odpowiedź dodaje cokolwiek do istniejących odpowiedzi.
andrewsi

3

Pomyśl o usłudze sieci Web jako o interfejsie API. Interfejs API jest obecnie tak ogólnym terminem, że usługa sieciowa jest interfejsem do funkcjonalności, zwykle związanym z biznesem, do którego można uzyskać dostęp z sieci za pomocą różnych protokołów.


1

Sprawdź to http://en.wikipedia.org/wiki/Web_service

Jak wspomniano łącze, Web API jest rozwinięciem usług sieciowych, które najprawdopodobniej dotyczą Web 2.0, podczas gdy usługi oparte na SOAP są zastępowane komunikacją opartą na REST. Należy pamiętać, że usługi REST nie wymagają definicji interfejsu API usługi XML, SOAP ani WSDL, więc różni się to znacznie od tradycyjnej usługi WWW.


0

inny przykład: usługa Google Maps API vs. usługa Google kierunek API api, podczas gdy pierwsza służy (dostarcza) plik javascript do witryny (która może być następnie wykorzystana jako interfejs API do tworzenia nowych funkcji), druga to usługa sieci Web Rest dostarczająca dane ( w formacie json lub xml), które można przetwarzać (ale nie można ich używać w interfejsie API).


1
Uhm ... javascript może zostać zwrócony jako dane, a następnie użyty jako kod, nie jest to prawidłowy kontrast
David C
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.