Framework Vs. API

Asked
Viewd40945

43

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

И возьмем, к примеру, то, что Microsoft называет .NET Framework, тогда как Sun называет свою платформу ... так может ли это быть бизнес-решением или маркетинговым решением относительно того, как называть "набор библиотек"?

12 ответов

34

Шаблоны проектирования содержат следующие определения:

  • наборы инструментов: «часто приложение будет включать классы из одной или нескольких библиотек предопределенных классов, называемых наборами инструментов. Набор инструментов - это набор связанных и повторно используемых классов, предназначенных для обеспечения полезных универсальных функций».
  • frameworks: «структура - это набор взаимодействующих классов, которые составляют повторно используемый дизайн для определенного класса программного обеспечения».

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

Более того, что, возможно, более важно, «структура определяет архитектуру вашего приложения»: инверсия управления - одна из характеристик фреймворков (см. Мартин Фаулер об этом ); вместо того, чтобы ваше приложение вызывало определенные API-интерфейсы для реализации определенного поведения, ваш код вызывает инфраструктура.

6

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

  • Да, это моя точка зрения как специализированный интерфейс… не обязательно, что приложение может быть аппаратным.

    jasonco07 апреля 2009, 06:50
2

Мне бы хотелось думать, что API - это подмножество фреймворка

  • Да, как будто фреймворк содержит множество API. Например, платформа Java предоставляет Java 2D API, который я использовал для изменения размера изображений.

    jasonco07 апреля 2009, 06:52
2

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

9

Как следует из названия (интерфейс прикладного программирования), API - это просто интерфейс фреймворка.

20

Я всегда думал, что фреймворк - это все, внутренний код, API и т. д.

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

Другими словами, платформа .NET состоит из библиотек .NET, всех языков и так далее. API - это просто способ вызова функций.

2

По моему опыту, фреймворк часто включает две вещи (по крайней мере), которых нет в простом API:

  • Расширяемость: вы можете составлять компоненты инфраструктуры или создавать подклассы для расширения или настройки ее функциональности.

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

  • Согласовано - фреймворки предоставляют возможности настройки, конфигурации и расширения вместе с инструментами для генерации кода, развертывания и мониторинга.

    Gordon Mackie JoanMiro07 апреля 2009, 07:25
16

Фреймворк вводит понятие инверсии управления
(т.е. общий поток управления программой диктуется не вызывающей стороной, а фреймворком)

Когда вы имеете в виду языковые фреймворки (например, Java Framework или .Net Framework), вы фактически включаете не только библиотеки и их API-интерфейсы (которые были бы более ограниченными Software Framework , если эти библиотеки обеспечивают инверсию управления).

Языковая структура включает среды разработки и исполнения, которые вызывают ваш код (для его компиляции или выполнения).
Вот почему .Net Framework является «Framework».


Java может ссылаться на свои платформы (JDK, JRE) как на " Java Platform ", чтобы подчеркнуть его" платформенно-независимый "язык программирования.

Из О технологии Java

Платформа - это аппаратная или программная среда, в которой работает программа. (включая Microsoft Windows, Linux, Solaris OS и Mac OS).
Большинство платформ можно описать как комбинацию операционной системы и основного оборудования.
Платформа Java отличается от большинства других платформ тем, что это программная платформа, работающая поверх других аппаратных платформ.

Платформа Java состоит из двух компонентов:

  • Виртуальная машина Java
  • Интерфейс программирования приложений Java (API)

Платформа Java

5
  • Software Framework: это многократно используемый проект программной системы (или подсистемы). Программная структура может включать программы, библиотеки кода, язык сценариев и другое программное обеспечение, помогающее разрабатывать и склеивать вместе различные компоненты программного проекта. Различные части фреймворка могут быть доступны через API.

  • API (интерфейс прикладного программирования): представляет собой набор процедур (также известных как методы, функции), структур данных, классов объектов и / или протоколов, предоставляемых библиотеками и / или службами операционной системы по порядку для поддержки создания приложений.
    Подробнее и другие Ссылка на эту конкретную тему есть http://aprogrammersday.blogspot.com/2009/02 /difference-between-framework-and-api.html