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

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

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

Спасибо за ответы! Вот некоторые ссылки, извлеченные из некоторых ответов ниже:

Ответы

Ответ 1

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

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

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

Wikipedia вызывает фреймворк "модное слово". Он определяет программную инфраструктуру как

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

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

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

Вот статья о каком-то парне по теме " Библиотека против Framework". Я лично считаю, что эта статья весьма спорна. Не то, что он там говорит, но он просто выбирает одно из множества определений фреймворка и сравнивает его с классическим определением библиотеки. Например. он говорит, что вам нужна основа для подклассификации. В самом деле? У меня может быть объект, определенный в библиотеке, я могу связать его и подкласс в моем коде. Я не вижу, как мне нужно "рамки" для этого. В некотором роде он скорее объясняет, как используется термин "рамки" в настоящее время. Это просто раздутое слово, как я уже говорил. Некоторые компании выпускают только обычную библиотеку (в любом смысле классической библиотеки) и называют ее "каркасом", потому что это звучит более фантастично.

Ответ 2

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

A framework - это скелет, в котором приложение определяет "мясо" операции, заполняя скелет. У скелета все еще есть код для соединения частей, но самая важная работа выполняется приложением.

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

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

Ответ 3

Я думаю, что основное отличие состоит в том, что рамки следуют принципу <

Согласно Мартин Фаулер:

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

A framework воплощает некоторые абстрактные дизайн, с большим количеством встроенных действий. Чтобы использовать его, вам необходимо вставить ваше поведение в разных местах рамки либо путем подклассификации, либо путем подключения к вашим собственным классам. код рамки затем вызывает ваш код в этих точках.

Ответ 4

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

Framework вызывает вас.


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

Ответ 5

Библиотека:

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

Структура:

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

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

Library,Framework and your Code image relation

KeyDifference:

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

Отношения:

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

Ответ 6

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

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

Рамка - это образ жизни.

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

Ответ 7

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

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

Ответ 8

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

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

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

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

  • В основном библиотека занимает гораздо меньше кривой обучения по сравнению с Framework. Например: underscore.js является библиотекой, Ember.js является основой.

Ответ 9

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

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

Ответ 11

Вот как я об этом думаю (и видел, что другие рационализированы):

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

Ответ 12

Библиотека

Библиотека - это многократно используемый фрагмент кода, который вы используете, поскольку он не содержит никаких перехватов для его расширения. В библиотеке обычно будет сосредоточена одна функциональность, к которой вы обращаетесь через API. Вы вызываете библиотечную функцию, она выполняет некоторый код, а затем возвращается код управления. Примером хорошей библиотеки Java (или библиотек в этом случае) является Apache Commons

Framework

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

Структура, как правило, включает множество библиотек, облегчающих вашу работу. Примерами (веб-) фреймворков являются:

Ответ 13

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

Ответ 14

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

Ответ 15

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

Ответ 16

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

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

Ответ 17

Структура может быть составлена ​​из разных библиотек. Возьмем пример.

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

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

введите описание изображения здесь


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

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

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


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

Ответ 18

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

Ответ 19

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

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

Ответ 20

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

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

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

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

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

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

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

А также есть больше категорий, чем Frameworks и Libraries, но это не в тему.

Ответ 21

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

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