В чем разница между фреймворком и библиотекой?[закрыто]

StackOverflow https://stackoverflow.com/questions/148747

Вопрос

В чем разница между рамки и библиотека?

Я всегда думал о библиотеке как о наборе объектов и функций, ориентированных на решение конкретной проблемы или конкретной области разработки приложений (т. е.доступ к базе данных);и фреймворк, с другой стороны, как набор библиотек, основанных на определенной методологии (т.е.MVC) и который охватывает все области разработки приложений.

Это было полезно?

Решение

На самом деле эти термины могут означать много разных вещей в зависимости от контекста, в котором они используются.

Например, в Mac OS X фреймворки — это просто библиотеки, упакованные в бандл.В комплекте вы найдете настоящую динамическую библиотеку (libWhatever.dylib).Разница между простой библиотекой и платформой на Mac заключается в том, что платформа может содержать несколько разных версий библиотеки.Он может содержать дополнительные ресурсы (изображения, локализованные строки, файлы данных XML, объекты пользовательского интерфейса и т. д.), и если платформа не выпущена для общего доступа, она обычно содержит необходимые файлы .h, необходимые для использования библиотеки.

Таким образом, у вас есть все в одном пакете, что вам нужно для использования библиотеки в вашем приложении (библиотека C/C++/Objective-C без файлов .h совершенно бесполезна, если вы не напишете ее самостоятельно в соответствии с какой-либо документацией библиотеки), вместо куча файлов для перемещения (пакет Mac — это просто каталог на уровне Unix, но пользовательский интерфейс обрабатывает его как один файл, почти так же, как у вас есть файлы JAR в Java, и когда вы щелкаете по нему, вы обычно не видите что внутри, если вы явно не выбрали отображение содержимого).

Википедия называет фреймворк «модным словечком».Он определяет структуру программного обеспечения как

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

Так что я бы сказал, что библиотека — это просто «библиотека».Это коллекция объектов/функций/методов (в зависимости от вашего языка), и ваше приложение «ссылается» на нее и, таким образом, может использовать объекты/функции/методы.По сути, это файл, содержащий код многократного использования, который обычно может использоваться несколькими приложениями (вам не нужно писать один и тот же код снова и снова).

Фреймворком может быть все, что вы используете при разработке приложений.Это может быть библиотека, набор множества библиотек, набор скриптов или любое программное обеспечение, необходимое для создания приложения.Фреймворк — это просто очень расплывчатый термин.

Вот статья о каком-то парне по теме "Библиотека против.Рамки".Я лично считаю эту статью весьма спорной.В том, что он там говорит, нет ничего плохого, однако он просто выбирает одно из множества определений фреймворка и сравнивает его с классическим определением библиотеки.Например.он говорит, что вам нужна основа для подклассов.Действительно?Я могу определить объект в библиотеке, я могу связать его с ним и создать его подкласс в своем коде.Я не понимаю, зачем мне для этого нужна «структура».В каком-то смысле он скорее объясняет, как в наши дни используется термин «фреймворк».Как я уже говорил, это просто раскрученное слово.Некоторые компании выпускают обычную библиотеку (в любом смысле классической библиотеки) и называют ее «фреймворком», потому что это звучит более причудливо.

Другие советы

А библиотека выполняет конкретные, четко определенные операции.

А рамки представляет собой скелет, в котором приложение определяет «содержание» операции, заполняя скелет.В скелете по-прежнему есть код для соединения частей, но самую важную работу выполняет приложение.

Примеры библиотек: Сетевые протоколы, сжатие, манипулирование изображениями, строковые утилиты, оценка регулярных выражений, математика.Операции являются автономными.

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

Я думаю, что основная разница в том, что фреймворки следуют принципу "Голливудский принцип", то есть«не звони нам, мы тебе позвоним».

В соответствии с Мартин Фаулер:

А библиотека По сути, набор функций, которые вы можете вызвать, в наши дни обычно организованные в классы.Каждый вызов выполняет некоторую работу и возвращает управление клиенту.

А рамки воплощает в себе какой -то абстрактный дизайн, с встроенным большим поведением.Чтобы использовать его, вам необходимо вставить свое поведение в различные места в рамках, либо подклассы, либо подключив собственные классы.Затем код Framework вызывает ваш код в этих точках.

Библиотека:

Это просто коллекция из рутины (функциональное программирование) или определения классов(объектно-ориентированного программирования).Причина просто повторное использование кода, т.е.получить код, который уже был написан другими разработчиками.Классы или процедуры обычно определяют конкретные операции в конкретной области домена.Например, существуют математические библиотеки, которые позволяют разработчику просто вызывать функцию, не переделывая реализацию алгоритма.

Рамки:

В рамках все поток управления уже есть, и есть куча предустановленных белых пятен что мы должны заполните наш код.Структура обычно более сложна.Это определяет скелет, где приложение определяет свои собственные функции для заполнения скелета.Таким образом, ваш код будет вызываться платформой в нужный момент.Преимущество заключается в том, что разработчикам не нужно беспокоиться о том, хорош ли дизайн или нет, а достаточно лишь реализовать функции, специфичные для предметной области.

Библиотека, Framework и представление изображения вашего кода:

Library,Framework and your Code image relation

Ключевая разница:

Ключевое различие между библиотекой и фреймворком заключается в "Инверсия контроля".Когда вы вызываете метод из библиотеки, вы контролируете ситуацию.Но с фреймворком управление инвертируется: фреймворк вызывает вас. Источник.

Связь:

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

Вы звоните в библиотеку.

Фреймворк звонит вам.


図書館 助け
足場が痛い
多くの涙

Как я всегда это описывал:

Библиотека — это инструмент.

Фреймворк — это образ жизни.

Библиотека, в которой вы можете использовать любую крошечную часть, которая вам поможет.Фреймворк, которому вы должны закрепить весь свой проект.

Мне нравится ответ Коэна, но более техническое определение:Ваш код вызывает библиотеку. Фреймворк вызывает ваш код.Например, среда графического пользовательского интерфейса вызывает ваш код через обработчики событий.Веб-фреймворк вызывает ваш код через некоторую модель запрос-ответ.

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

С точки зрения веб-разработчика:

  1. Библиотеку можно легко заменить другой библиотекой.Но фреймворк не может.

    Если вам не нравится библиотека выбора даты jquery, вы можете заменить ее другим средством выбора даты, таким как средство выбора даты начальной загрузки или Pickadate.

    Если вам не нравится AngularJS, на котором вы создали свой продукт, вы не можете просто заменить его каким-либо другим фреймворком.Вам придется переписать всю кодовую базу.

  2. В основном библиотека требует гораздо меньше времени на обучение по сравнению с Frameworks.Например:underscore.js — это библиотека, Ember.js — это фреймворк.

Я забыл, где я видел это определение, но думаю, оно довольно хорошее.

Библиотека — это модуль, который вы вызываете из своего кода, а фреймворк — это модуль, который вызывает ваш код.

Фреймворк может быть составлен из разных библиотек.Давайте возьмем пример.

Допустим, вы хотите приготовить рыбное карри.Тогда вам нужны такие ингредиенты, как масло, специи и другие коммунальные услуги.Вам также нужно рыба на какой базе вы готовите блюдо (это данные вашего приложения).все ингредиенты вместе называются рамки.Теперь вы будете использовать их по одному или в комбинации, чтобы приготовить рыбное карри, которое вам по душе. конечный продукт.Сравните это с веб-фреймворк который сделан из underscore.js, bootstrap.css, bootstrap.js, потрясающий, AngularJS и т. д.Например, Twitter Bootstrap v.35.

Теперь, если вы рассматриваете только один ингредиент, например масло.Вы не можете использовать любое масло, которое хотите, потому что оно испортит вашу рыбу (данные).Вы можете использовать только Оливковое масло.Сравните это с underscore.js.Теперь вам решать, какую марку масла вы хотите использовать.Какое-то блюдо было приготовлено с Американское оливковое масло (underscore.js) или Индийское оливковое масло (lodash.js).Это только изменит вкус вашего приложения.Поскольку они служат практически одной и той же цели, их использование зависит от предпочтений разработчика, и их легко заменить.

enter image description here


Рамки :Коллекция библиотек, которые обеспечивают уникальные свойства и поведение вашего приложения.(Все ингредиенты)

Библиотека :Четко определенный набор инструкций, которые придают вашим данным уникальные свойства и поведение.(Масло на рыбе)

Плагин :Сборка утилиты для библиотеки (ui-router -> AngularJS) или множества библиотек в комбинации (date-picker -> bootstrap.css + jQuery), без которой ваш плагин теперь может работать как положено.


P.S.AngularJS — это платформа MVC, но библиотека JavaScript.Потому что я считаю, что библиотека расширяет стандартное поведение встроенной технологии (в данном случае JavaScript).

Вот как я об этом думаю (и вижу объяснение этому у других):

Библиотека — это нечто, содержащееся в вашем коде.А фреймворк — это контейнер для вашего приложения.

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

Библиотека реализует функциональность для узкой цели, тогда как инфраструктура обычно представляет собой набор библиотек, обеспечивающих поддержку более широкого спектра функций.Например, библиотека System.Drawing.dll поддерживает функции рисования, но является лишь частью общей платформы .NET.

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

Библиотеки созданы для простоты использования и эффективности. Например, можно сказать, что библиотека Zend помогает нам выполнять различные задачи с помощью четко определенных классов и функций. В то время как фреймворк — это то, что обычно требует определенного способа реализации решения, например MVC (модель -view-контроллер)(ссылка).Это четко определенная система распределения задач, как в MVC. Модель содержит сторону базы данных, представления предназначены для интерфейса пользовательского интерфейса, а контроллеры предназначены для бизнес-логики.

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

Я думаю, что библиотека — это набор утилит для достижения цели (например, сокеты, криптография и т. д.).Фреймворк — это библиотека + RUNTIME EINVIRONNEMENT.Например, ASP.NET — это платформа:он принимает HTTP-запросы, создает объект страницы, вызывает события жизненного цикла и т. д.Фреймворк делает все это, вы пишете немного кода, который будет запускаться в определенный момент жизненного цикла текущего запроса!

В любом случае, очень интересный вопрос!

Я не помню источник этого ответа (полагаю, я нашел его в формате .ppt в Интернете), но ответ довольно прост.

Библиотека и платформа — это набор классов, модулей и/или кода (в зависимости от языка программирования), которые могут использоваться в ваших приложениях и помогают вам решить конкретную «проблему».

Эта проблема может заключаться в регистрации или отладке информации в приложении, построении диаграмм, создании определенного формата файла (html, pdf, xls), подключении к базе данных, создании части приложения или полного приложения или кода, примененного к Шаблон проектирования.

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

Основное отличие между библиотекой и структурой - это зависимость между их собственным кодом, в словах Oder для использования структуры, необходимой для использования почти всех классов, модулей или кода в FW, но для использования библиотеки вы можете использовать один или Немногие классы, модули или код в LIB в вашем собственном приложении

Это означает, что если фреймворк имеет, например, 50 классов, то для того, чтобы использовать фреймворк в приложении, вам нужно использовать, скажем, 10-15 или более классов в вашем коде, потому что именно так устроен фреймворк, некоторые классы (объекты этих классов) являются входными данными/параметрами для методов других классов в рамках.См. инфраструктуру .NET, Spring или любую другую среду MVC.

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

А еще категорий больше, чем «Фреймворки» и «Библиотеки», но это не по теме.

Ваша интерпретация мне очень нравится...А библиотека может быть что угодно, скомпилированное и автономное для повторного использования в другом коде, на его содержимое буквально нет ограничений.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top