Разница между API и SDK

Я пытаюсь объяснить не разработчику разницу между API и SDK. Мне нужно объяснить, почему коммерческий поставщик программного обеспечения для отпечатков пальцев, скорее всего, не предоставит SDK, хотя они, безусловно, могли его использовать.

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

Если кто-то имеет больше идей, чтобы объяснить это ясно, я был бы очень признателен за предложения. Я хочу подчеркнуть, что цель состоит в том, чтобы объяснить концепции не программист, который не знает разработчик жаргон.

в частности, в контексте датчика отпечатков пальцев по сравнению с программным обеспечением для регистрации / проверки, вот как я попытался объяснить это:

Если я изготовитель прибора/датчика отпечатка пальцев и не в бизнес написания программного обеспечения, способы, которыми я мог бы лучше продать свой продукт:

  1. убедитесь, что мои драйверы устройств установлены на самых разных операционных системах
  2. определите и предоставьте API для разработчиков программного обеспечения для написания программ (например, для регистрации, проверки), чтобы "поговорить" или использовать мой устройство
  3. разработка и предоставление SDK (один шаг за API), чтобы сделать его проще и быстрее для разработчиков программного обеспечения для написания программ, которые работают с моим устройством. SDKs может предоставить вспомогательные библиотеки кода, ссылки применения, документация etc.

10 ответов


кусок пирога:

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

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

**технически, если API хорошо документирован, вам не нужен SDK для создания собственного программного обеспечения для использования API. Но наличие SDK обычно упрощает процесс.


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

SDK, С другой стороны, является надлежащей мастерской, где доступны все инструменты разработки, а не предварительно сформированные строительные блоки. В мастерской у вас есть фактические инструменты, и вы не ограничены блоками, и поэтому можете создавать свои собственные блоки или создавать что-то без каких-либо начнем с блоков.

кодирование без SDK или API Как делать все с нуля, без мастерской вы должны даже сделать свои собственные инструменты


предположим, что компания C предлагает продукт P и P каким-то образом включает программное обеспечение. Затем C может предложить библиотеку / набор библиотек разработчикам программного обеспечения, которые управляют программными системами P.

библиотеки/библиотек SDK. Она является частью системы П. Это комплект для разработчиков программного обеспечения, чтобы использовать для того, чтобы изменить, настроить, исправить, улучшить и т. д. кусок программного обеспечения П.

Если C хочет предложить функциональность P другим компаниям / системам, он делает это с API.

это интерфейс для P. способ взаимодействия внешних систем С P.

Если вы думаете с точки зрения реализации, они будут казаться очень похожими. Особенно теперь, когда интернет стал похож на одну большую распределенную операционную систему.

в цели, однако, они на самом деле довольно различны.

вы создаете что-то с SDK, и вы используете или потребляете что-то с API.


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


Интерфейс Прикладного Программирования - это набор подпрограмм / структур данных / классов, который определяет способ взаимодействия с целевой платформой / программным обеспечением, таким как OS X, Android, приложение для управления проектами, программное обеспечение для виртуализации и т. д.

пока Комплект Для Разработки Программного Обеспечения - это оболочка вокруг API / s, которая упрощает работу для разработчиков.

например, Android SDK облегчает разработчикам взаимодействие с платформой Android в целом в то время как сама платформа построена составными программными компонентами, взаимодействующими через API.

кроме того, иногда SDK создаются для облегчения разработки на определенном языке программирования. Например, Selenium web driver (встроенный в Java) предоставляет API для управления любым браузером изначально, в то время как капибара можно считать SDK, который облегчает разработчикам Ruby использование веб-драйвера Selenium. Однако Selenium web driver также является SDK сам по себе, как это объединяет взаимодействие с различными нативными драйверами браузера в один пакет.


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

SDK-это пакет реальных инструментов, которые уже беспокоятся о технических характеристиках. - Вот поезд, немного угля и ремонтник. Используйте его, чтобы перейти с места на место" с SDK вы не беспокоитесь о специфике. SDK-это фактический код, он может использоваться сам по себе для чего-то, но, конечно, поезд не запускается спонтанно, вам все равно нужно получить проводника для управления поездом.

SDKs также имеют свои собственные API. "Если вы хотите, чтобы питание поезда положить уголь в него", " потяните синий рычаг, чтобы переместить поезд.", "Если поезд начинает вести себя смешно, позвоните технику" и т. д.


API = словарь доступных слов и их значений (и требуемая грамматика для их объединения)

SDK = система обработки текстов... для 2-летних детей..., которая пишет прямо из идей

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


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


вы используете SDK для доступа к функциональности библиотеки и API для управления ею.


API = интерфейс прикладного программирования SDK = комплект для разработки программного обеспечения

An SDK кажется, полный набор APIs, которые позволяют выполнять большинство любых действий, необходимых для создания приложений. Кроме того,SDK может включать в себя другие инструменты для разработки для платформы/элемента, для которого он предназначен.

An API С другой стороны-это просто набор связанных методов, которые могут быть хорошо для конкретного цель.

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

примеры API:API Java, Google Maps API, API Flash Player.

примеры SDKs:пакета JDK, GWT, Flex SDK.