API против веб-сервиса [закрыто]

205

В чем разница между веб-сервисом и API? Разница больше, чем протокол, используемый для передачи данных? Спасибо.

чипсы
источник
3
Под API вы имеете в виду API, доступный по HTTP? Или просто обычный простой API?
Пабло Санта Круз
1
Смотрите также programmers.SE: Разница между веб-API и веб-сервисом?
hippietrail
Ты должно быть шутишь. 122 голосов, и вопрос не решен из-за смешивания уровней.
Джошуа
вы меня поняли, я не уверен, почему этот вопрос был закрыт
фишки

Ответы:

173

API (интерфейс прикладного программирования) - это средство, с помощью которого третьи стороны могут писать код, который взаимодействует с другим кодом. Веб-сервис - это тип API, который почти всегда работает по HTTP (хотя некоторые, например SOAP, могут использовать альтернативные транспорты, например SMTP). Официальное определение W3C говорится , что Web - сервисы не обязательно использовать HTTP, но это почти всегда так , и, как правило , предполагается , если не указано иное.

В частности, примеры веб-служб см. В разделах SOAP , REST и XML-RPC . Пример API другого типа, написанного на C для использования на локальном компьютере, см. В API ядра Linux .

Что касается протокола, API веб-службы почти всегда использует HTTP (отсюда и веб-часть) и определенно включает в себя связь по сети. API в целом могут использовать любые средства связи, которые они пожелают. API ядра Linux, например, использует прерывания для вызова системных вызовов, составляющих его API, для вызовов из пространства пользователя.

Андрей Чолакян
источник
8
Считаете ли вы каждый веб-сервис API-интерфейсом? Как насчет использования AJAX для перезагрузки области веб-страницы, а не для перезагрузки всей страницы? Я не обязательно рассматриваю это как API, даже если задействован веб-сервис. В противном случае мы можем сделать так, чтобы для каждого созданного бита функции, будь то в DLL, или в JAR, в веб-службе или в простом коде, использовались все API. Чтобы API был API, он должен иметь в виду сторонних разработчиков, и API не должен иметь никакой зависимости от конечного продукта (приложения, использующего API).
Рональд
18
Да, каждый веб-сервис - это API. Да, AJAX Web Service - это API, он просто недокументирован и поэтому не предназначен для общего пользования. Не каждый API является API, разработанным для стороннего потребления. Вы также можете иметь внутренние API.
Райан Шиллингтон
54

По сути, веб-сервис - это метод связи между двумя машинами, в то время как API - это открытый уровень, позволяющий программировать против чего-либо.

У вас вполне может быть API, и основным методом взаимодействия с этим API является веб-сервис.

Технические определения (любезно предоставленные Википедией):

API

Интерфейс прикладного программирования (API) - это набор подпрограмм, структур данных, классов объектов и / или протоколов, предоставляемых библиотеками и / или службами операционной системы для поддержки построения приложений.

Веб-сервис

Веб-служба (также веб-служба) определяется W3C как «программная система, предназначенная для поддержки взаимодействия компьютеров между компьютерами по сети».

Марк Бик
источник
4
Я согласен с кем-то, кто возражает против моего ответа, но мне было бы интересно узнать почему.
Марк Бик
41
Ваш ответ подразумевает, что API-интерфейсы и веб-сервисы различны, хотя на самом деле веб-сервис представляет собой тип API. Поскольку суть этого вопроса заключается в том, в чем разница между ними, для ответа важно уточнить, что веб-сервисы являются типом API.
Андрей Чолакян
3
Интересный. Я собираюсь (неуважительно :)) не согласиться. Но я ценю обратную связь.
Марк Бик
44

В общем смысле вебсервис IS API через HTTP. Они часто используют JSON или XML, но есть и другие подходы.

CGP
источник
20
Таким образом, все веб-сервисы являются API, но не все API являются веб-сервисами?
чипсы
13
Правильно, API могут быть библиотеками, такими как DLL, JAR или OCX и т. Д. Они также могут быть дистрибутивом исходного кода, таким как PHP api Facebooks ...
cgp
10

API - это опубликованный интерфейс, который определяет, как компонент A взаимодействует с компонентом B.

Например, Doubleclick имеет опубликованный Java API, который позволяет пользователям опрашивать таблицы базы данных, чтобы получить информацию об их рекламной кампании в Интернете.

например, вызов GetNumberClicks (имя пользователя)

Чтобы реализовать API, вы должны добавить файл DoubleClick .jar в путь к классам. Звонок местный.

Веб-сервис - это форма API, в которой интерфейс определяется с помощью WSDL. Это позволяет удаленно вызывать интерфейс через HTTP.

Если бы Doubleclick реализовал их интерфейс как веб-сервис, они использовали бы что-то вроде Axis2, работающее внутри Tomcat.

Удаленный пользователь будет вызывать веб-сервис

например, вызов GetNumberClicksWebService (имя пользователя)

и сервис GetNumberClicksWebService будет вызывать GetNumberClicks локально.

rbrayb
источник
Этот вопрос действительно старый, но я отмечу, что этот ответ путает API и интерфейсы. API - это больше, чем опубликованный интерфейс (который включает в себя такие вещи, как SOAP), это открытый интерфейс для конкретного приложения или службы. Было бы точнее сказать что-то вроде «API - это компоненты, которые имеют опубликованный интерфейс, с помощью которого сторонние компоненты могут взаимодействовать с ними».
JDB до сих пор помнит Монику
7

API (интерфейс прикладного программирования), полная форма которого сама по себе предполагает, что это интерфейс, который позволяет вам программировать для вашего приложения с помощью или поддержкой какого-либо другого интерфейса приложения, который предоставляет некоторую функциональность, полезную для вашего приложения.

Например, для отображения обновленных курсов обмена валют на вашем веб-сайте потребуется сторонний интерфейс для программирования, если только вы не планируете иметь собственную базу данных с курсами валют и регулярно обновлять их. Этот набор функций доступен, когда он уже доступен кому-то другому, и когда он хочет поделиться им с другими, у него должна быть конечная точка для связи с другими, кто заинтересован в таких взаимодействиях, чтобы они развернули его в сети посредством веб-интерфейса. Сервисы. Эта конечная точка - не что иное, как интерфейс их приложения, который вы можете программировать, следовательно, API.

Маной Двиведи
источник
4

API - это интеграция на основе кода, а веб-сервис - это интеграция на основе сообщений с совместимыми стандартами, имеющими контракт, такими как WSDL.

Пингала
источник
Я не уверен, что ваш ответ что-то добавляет к существующим ответам.
Эндрюси
3

Думайте о веб-сервисе как о веб-интерфейсе. В настоящее время API - это такой общий термин, поэтому веб-сервис - это интерфейс с функциональностью, обычно связанной с бизнесом, которую вы можете получить из сети по различным протоколам.

Джошуа Белден
источник
1

Проверь это http://en.wikipedia.org/wiki/Web_service

Как упоминалось в ссылке, Web API - это разработка веб-сервисов, которая, скорее всего, относится к Web 2.0, тогда как сервисы на основе SOAP заменяются коммуникациями на основе REST. Обратите внимание, что для служб REST не требуются определения API-интерфейса служб XML, SOAP или WSDL, поэтому они существенно отличаются от традиционных веб-служб.

longbkit
источник
0

Другой пример: API карты Google против веб-службы API направления Google, в то время как первый обслуживает (доставляет) на сайт файл javascript (который затем может использоваться как API для создания новых функций), второй - веб-сервис Rest, доставляющий данные ( в формате json или xml), который можно обрабатывать (но не использовать в смысле API).

ана
источник
1
Хм ... JavaScript может быть возвращен как данные, а затем использован в качестве кода, это не является действительным контрастом
Дэвид С.