Бібліотека проти фреймворку проти API? [зачинено]


33

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





2
@Jorg: Ви повинні надіслати це як відповідь. Як відомо, прикордонний спам і засмічує сторінку.

2
@Sergio - Йорг W Міттаг має 1171 продуманих і добре отриманих відповідей на SO (42 продуманих і добре отриманих відповіді тут). Він не намагається бути важким. Він намагається вдосконалити P.SE, показуючи, наскільки це питання непотрібне (не кажучи вже про те, що жодна відповідь тут не згадує відмінну характеристику рамки).
Корбін березня

Відповіді:


35

Бібліотека - це сукупність функцій / об'єктів, яка служить одній конкретній меті. ви можете використовувати бібліотеку в різних проектах.

Рамка - це набір шаблонів і бібліотек, які допомагають створити додаток.

API - це інтерфейс для взаємодії інших програм з вашою програмою без прямого доступу.

Інакше кажучи, подумайте про бібліотеку як надбудову / фрагмент програми, рамку як скелет програми та API як зовнішню частину зазначеної програми.


7
Це не дуже вдале визначення рамки. Я б насправді не назвав жодну рамку "колекцією шаблонів та бібліотек"
TheLQ

Рамка більше нагадує середовище для побудови. Окрім цього +1
Клайм

так, я трохи втратив слова про це. хтось має кращі пропозиції? інші мудрі сміливо редагувати. Я переглянув wikipedia, яка називає фреймворк: "Frameworks - це особливий випадок бібліотек програмного забезпечення, оскільки вони є багаторазовими абстракціями коду, укладеного у чітко визначеному інтерфейсі програмування прикладних програм (API)", який, схоже, викликає більше плутанини в контекст цього питання, ніж допомога.
GSto

3
Бібліотека - це коли ваш код відповідає (ваш код "використовує бібліотеку"), а фреймворк - це коли він заряджається (фреймворк "запускає ваш код"). Наприклад, фреймворк диктує, в якому порядку мають відбуватися речі (Swing, сервлети), тоді як за допомогою бібліотеки ви вирішуєте, коли і як вона буде використовуватися (перетворення зображень, шифрування). API - це лише визначення функції, яку ви можете зателефонувати, і є частиною як бібліотек, так і фреймворків.
Мартін Вікман

14

Поки що хороші відповіді, але вони пропускають один ключовий момент - фреймворк використовує IoC . Ваш код оточений рамкою. Він живе всередині нього. На відміну від цього, ваш код просто використовує бібліотеку або API. Вона живе поза нею. IoC - різниця.


Не обов'язково правда. Рамка може використовувати IoC, і ваша програма може жити всередині рамки, але це не обов'язково. Дуже запис Вікіпедії про Frameworks зазначає це як "відмітну особливість" рамки та згадує цю дисертацію " dirkriehle.com/computer-science/research/dissertation/… ", але сама дисертація не містить інверсії фраз. 'або' ioc 'і фактично зазначає "Зазвичай додатки використовують не лише один фреймворк, а кілька". (p26, ref p9)
Кірк Бродхерст

11
@Kirk Broadhurst - насправді думав про Мартіна Фаулера : "Інверсія управління - це ключова частина того, що робить рамки різними для бібліотеки (...) Рамка втілює деякий абстрактний дизайн, вбудований більше поведінки. Для того, щоб використовувати Вам потрібно вставити свою поведінку в різні місця в рамках або підкласифікацією, або за допомогою підключення до власних класів. Код фреймворку називає ваш код ... "Якщо ми зробимо висновок, що IoC не є відмінною рисою, то немає відмітна особливість - вони всі однакові, і це не весело.
Мізерний Роджер

@ScantRoger, Чи використовує IoC Framework Collection Framework IoC? Не здається так .......
Pacerier

3

Бібліотека - це сукупність кодів, побудованих для виконання загальних завдань. Код бібліотеки, як правило, відносно стабільний і не містить помилок. Використання відповідних бібліотек може зменшити кількість коду, який потрібно записати. Це, як правило, скорочує кількість рядків коду для додатка, збільшуючи швидкість доставки функціональності. У більшості випадків краще використовувати звичайну бібліотеку, ніж писати власний код.

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

API повинні бути стабільними, хоча частини API можуть бути застарілими з різних причин. Чим ширше використовується API, тим складніше його змінити. Більшість, якщо не весь API Java 1.0, як і раніше, доступні, хоча багато методів застаріли.

Framework - це сукупність API, призначених для спрощення створення додатків. Рамки забезпечують реалізацію для багаторазових компонентів. Хороші рамки, як правило, спеціалізуються на їх застосуванні.

Java Collections Framework - це сукупність API для різних типів об'єктів, які можна використовувати для обробки колекцій. Він забезпечує ієрархію API для різних колекцій. Інтерфейс SortedSet в Java Collections Framework розширює інтерфейс Set, який, в свою чергу, розширює інтерфейс Collection. Ці API - це абстрактні інтерфейси, а фактичні реалізації мають різні назви. Рамки колекцій спрощують реалізацію колекцій та спрощують зміни впровадження під час розробки.

Рамки можуть бути побудовані з менших рамок, як видно з Java Spring Framework, орієнтованої на розробку J2EE. Весна складається з понад десятка рамок, багато з яких можна використовувати самостійно або замінити іншими рамками.

Використання відповідних бібліотек, API та фреймворків може спростити розробку. Ці компоненти переймаються загальними проблемами та дозволяють команді розробників зосередитись на конкретних проблемах програми.


2

Рамка - це крок від бібліотеки. Якщо ваш інструментарій - це бібліотека, то ваша майстерня буде основою.

У Вікіпедії йдеться

API - це абстракція, яка описує інтерфейс взаємодії з набором функцій, що використовуються компонентами програмної системи

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

API можуть бути побудовані як для додатків (через dll або плагіни), так і для веб-сайтів і служб (через REST та веб-сервіси)


Приємна аналогія ...
sunwukung

1

API визначають, як використовувати щось інше з точки зору того, які об’єкти та методи можна використовувати з джерела. Наприклад, для інтеграції Twitter або Facebook у сайт використовується API від Twitter або Facebook, щоб забезпечити оновлення належних даних.

Рамки, як правило, трохи об'ємніші, оскільки це часом може формувати власну мову. jQuery є прикладом рамки, яка має власний синтаксис і має певну вагу в плані того, щоб в певному сенсі потрапити в мій код. Каркаси також можуть бути платформами, які в певному сенсі схожі на API, наприклад, Win32API або .Net Framework мають численні методи побудови програми, тому можуть бути Frameworks, які мають в них API та API, які також розглядаються як Frameworks.

Бібліотеки, як правило, є двійковими файлами, які реалізують API або Framework, і тому вони є бітами, які вам доведеться використовувати API або Framework в деяких випадках. Принаймні так я бачу ці терміни та відмінності між ними.


1

Зайдіть до бібліотеки і починайте читати книги. Якщо ви додаток, то колекція книг - це бібліотека. Полиці, шафи та з'єднання, в якому знаходиться все це, є основою. Все, з чим ви контактуєте, виконуючи завдання з читання книг, - це API.


Це чудова відповідь.
Маг

0

Бібліотека - це сукупність кодів, які використовуються для спрощення загальних завдань - це можуть бути класи, функції або все, що є специфічним для вашої мови чи платформи. Хорошим прикладом може бути бібліотека оброблення рядків, яка надає помічників для поширених завдань (створення, розбиття, пошук або сортування рядків тощо).

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

Рамка - це більш широке поняття - воно, як правило, містить декілька бібліотек та API для виконання загальних завдань. Він існує на більш високому концептуальному рівні - це не лише колекція інструментів, а й сукупність моделей дизайну, найкращих практик та методологій. Програмний фреймворк - це розширення загальної основи - його значення включають в себе фундамент, на якому будуються речі, забезпечують підтримку та структуру, а також дають настанови та визначення вимогам.


0

Додаток розробляється з використанням бібліотек на основі фреймворку та спілкується через API.

Якщо ви створюєте додаток, наприклад, онлайн-додаток для обробки зображень,

  • Ви можете використовувати деякі попередньо записані бібліотеки обробки зображень.
  • на будь-якій основі, яку ви знаєте, яка допоможе вам створити додаток.
  • Ви надасте додатку якийсь спосіб взаємодії із зовнішнім світом. Це був би API ваших програм для решти світу.

Коли до вашої заявки надходить дзвінок

  • це оброблялося б так, як ви розробили, керуючись рамками
  • обробка дзвінка, що здійснюється бібліотекою
  • Доступ до цих функцій через ваш API із зовнішнього світу

особі, що телефонує

причини, чому вони існують:

  • бібліотека: позбавляє вас від винаходи колеса
  • фреймворк: позбавляє вас від несподіваних пасток проектування системи та керування ними, якщо сама рамка не має недоліків
  • API: забезпечує безпеку програми за допомогою з'єднання ядра з реальним доступом
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.