API против веб-сервиса

179

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

  • 3
    Под API вы имеете в виду API, доступный по HTTP? Или просто обычный простой API?
  • 1
    Да, API через HTTP.
Показать ещё 4 комментария
Теги:
web-services
terminology

9 ответов

136
Лучший ответ

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

Примеры веб-сервисов, например, см. SOAP, REST и XML-RPC. Для примера другого типа API, написанного на C для использования на локальной машине, см. API ядра ядра.

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

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

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

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

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

API

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

Веб-сервис

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

  • 4
    Я в порядке с кем-то, кто возражает против моего ответа, но мне было бы интересно узнать почему.
  • 39
    Ваш ответ подразумевает, что API-интерфейсы и веб-сервисы различны, хотя на самом деле веб-сервис представляет собой тип API. Поскольку суть этого вопроса заключается в том, в чем разница между ними, для ответа важно уточнить, что веб-сервисы являются типом API.
Показать ещё 1 комментарий
31

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

  • 18
    Таким образом, все веб-сервисы являются API, но не все API являются веб-сервисами?
  • 11
    Правильно, API могут быть библиотеками, такими как DLL, JAR или OCX и т. Д. Они также могут быть дистрибутивом исходного кода, таким как PHP API Facebook ...
9

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

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

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

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

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

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

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

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

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

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

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

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

4

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

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

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

1

Отметьте http://en.wikipedia.org/wiki/Web_service

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

0

еще один пример: google map api vs google direction api web service, в то время как первый служит (доставляет) javascript файл на сайт (который затем можно использовать как api для создания новых функций), более поздняя веб-служба Rest предоставление данных (в формате json или xml), которые могут обрабатываться (но не используются в смысле api).

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню