Framework Vs. API - PullRequest
       31

Framework Vs. API

41 голосов
/ 07 апреля 2009

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

И возьмем, к примеру, то, что Microsoft называет .NET платформой, в то время как Sun называет их платформой ... поэтому может ли это быть также деловым / маркетинговым решением относительно того, как называть «коллекцией библиотек»?

Ответы [ 12 ]

34 голосов
/ 07 апреля 2009

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

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

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

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

20 голосов
/ 07 апреля 2009

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

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

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

15 голосов
/ 07 апреля 2009

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

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

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


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

С О технологии Java

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

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

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

Java Platform

9 голосов
/ 07 апреля 2009

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

6 голосов
/ 07 апреля 2009

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

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

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

API (интерфейс прикладного программирования): как его имя означает, это интерфейс для внешних программ для взаимодействия с вашей внутренней программой или библиотекой без прямого доступа. Например, API Google Map и Facebook предоставляют интерфейс для взаимодействия с их программой и библиотекой без прямого доступа.

В другой руке:

Framework : это набор библиотек, которые могут помочь вам создать приложение. Вы можете представить себе фреймворк как «скелет», в котором приложение определяет «мясо», поэтому вы не можете взять человеческий скелет для создания тела hors, поэтому вам нужно выбрать хороший фреймворк перед началом программирования. Вот почему мы сказали: Вы звоните в библиотеку. Framework зовет вас.

2 голосов
/ 30 ноября 2011

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

2 голосов
/ 07 апреля 2009

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

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

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

2 голосов
/ 07 апреля 2009

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

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