Разница между API и фреймворком - PullRequest
26 голосов
/ 13 декабря 2010

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

Ответы [ 10 ]

51 голосов
/ 13 декабря 2010

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

API является публичным лицом фреймворка.Хорошо спроектированная инфраструктура предоставляет только те классы, интерфейсы и т. Д., Которые необходимы для ее использования.Код, который поддерживает работу платформы, но не является обязательным для пользователей платформы, хранится внутри сборок / библиотек платформы.Это делает публичное лицо фреймворка небольшим и способствует «яме успеха» или качеству фреймворка, который упрощает правильные действия.

(я привожу пример из мира .NET) Класс SqlConnection используется для подключения к экземпляру Sql Server.Его общедоступный API довольно прост:

using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    // Do work here; connection closed on following line.
}

Однако этот класс зависит от примерно 200 методов в рамках System.Data (в данном случае, сборка ), 3/4 из которых являются внутренними и не являются частью общедоступного API System.Data .Поскольку API фреймворка остается простым, становится легко использовать SqlConnection правильно.Если бы пользователю требовалось иметь дело с SqlConnectionFactory , SqlDebugContext , DbConnectionPoolGroup или любым другим внутренним классом, требуемым классом SqlConnection, это стало бы экспоненциально сложнееправильно использовать SqlConnection.Поскольку API предоставляет только небольшой процент структуры, проще создавать и использовать соединение.

6 голосов
/ 13 декабря 2010

API - это интерфейс для (набора) компонента (ов), инкапсулирующих функциональность. Например, API GoogleMaps, API DirectX или OpenGL.

Фреймворк - это скорее набор инструментов, компонентов, направленных на то, чтобы помочь разработчику разработать свой проект в заданном фрейме. Фреймворк обычно устанавливает некоторые стандарты кодирования, предоставляет полезные компоненты ... Например, Symfony / Cake - это фреймворки веб-приложений PHP. JUnit - это фреймворк для модульных тестов в Java, ...

Каркасы часто могут объединять / предоставлять унифицированный интерфейс для некоторых API.

Некоторые API могут быть построены изнутри с использованием фреймворка.

3 голосов
/ 13 декабря 2010
  1. API - интерфейс прикладного программирования -> контракт, который вы должны соблюдать при использовании API библиотеки
  2. библиотека - набор классов / модулей, решающих конкретную проблему -> имеет API
  3. framework - «больший» набор библиотек с набором правил их использования

Поскольку у каждой библиотеки есть API, нет смысла приводить примеры.

Популярная библиотека Java для времени: Joda time .

Популярной платформой Java является Spring Framework .

Вы должны соблюдать множество правил, чтобы хорошо использовать Spring. Вам не нужно соблюдать столько правил, чтобы использовать время Joda.

1 голос
/ 13 декабря 2010

API - это то, что код имеет, не то, чем . Фреймворк имеет API, но сам по себе он не является API.

0 голосов
/ 31 июля 2017

Еще один способ визуализации - это: (верно для любого языка программирования)

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

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

Ведь ...

Actum Ne Agas: Не делать уже готовую вещь.

0 голосов
/ 24 февраля 2017

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

0 голосов
/ 27 октября 2016

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

0 голосов
/ 10 августа 2015
  1. Java API просто означает ... Интерфейс прикладного программирования, в котором описаны все функции продукта или программного обеспечения.

  2. Java Framework означает полу-завершенный проект или код.Он предоставляет архитектуру для создания проекта.Фреймворк имеет собственные классы и методы и т.д ..

0 голосов
/ 13 декабря 2010

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

API для взаимодействия между приложениями, ваше приложение будет использовать API Facebook для взаимодействия с Facebook.

Надеюсь, это немного яснее.

0 голосов
/ 13 декабря 2010

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

Пример:

API:

-stringWithString:

функция из рамок:

-myExposedMethod:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...