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

Я целый день слышу термины библиотека классов, библиотека базовых классов, Framework, ...
Что выделяет фреймворк и что такое библиотека базовых классов?

11 ответов

Решение

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

Это также называется принципом Голливуда (не звоните нам, мы вам звоним).

Кстати, есть также хорошая статья в Википедии на эту тему.

При написании кода вы используете библиотеку классов, но кодируете в рамках.

Термин "структура" предназначен для того, чтобы вызывать ощущение "быть в окружающей среде". Если бы я привел (ограниченную) аналогию с этим, я бы сказал, что библиотека классов похожа на возможность есть сыр и пить вино, тогда как рамки похожи на посещение Франции; испытывая культуру. Каркас - это структура, вокруг которой вы строите свою программу. Библиотека классов - это инструменты, которые вы используете (возможно, в рамках).

Конечно, фреймворк, как правило, будет содержать библиотеки классов. .NET, например, имеет кучу библиотек классов, которые включены во всю инфраструктуру.

Библиотека:

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

Фреймворк:

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

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

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

KeyDifference:

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

Связь:

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

Оригинальный ответ

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

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

  • например, Spring является основой для DI. Вы пишете XML-файлы в формате, который диктуют дизайнеры, и затем среда позволяет вам получать собранные классы, не беспокоясь о том, что среда делает это.
  • Rails - это фреймворк в Ruby для веб-приложений RAD. Вы пишете только модели, контроллеры и представления, и у вас есть рабочее веб-приложение менее чем за час.
  • BCL - это набор библиотек классов, так что вам не нужно реализовывать структуры данных и часто используемые типы в.NET, а просто бесплатно получать проверенные проверенные реализации, просто включив их.

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

Часто вы используете библиотеки для получения определенной функциональности в вашем СОБСТВЕННОМ программном обеспечении / инфраструктуре. Например, для печати штрих-кода вы должны использовать библиотеку для этого. Фреймворк абстрагирует целый класс проблем, возможно, проблему написания веб-приложений. Для этого фреймворк предоставляет "фрейм" со всеми функциями и заглушками, с которыми вы можете программировать.

Библиотека классов - это просто набор классов, инкапсулированных в определимую единицу, такую ​​как сборка. Термин не ограничен каким-либо конкретным языком или рамками.

Библиотека базовых классов (BCL) - это особые атрибуты термина для набора библиотек классов, которые поставляются с предустановленной.NET Framework и предоставляют классы, аккуратно организованные в пространства имен, так что у вас есть API для создания собственных решений.

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

Вы называете код библиотеки классов, где фреймворк вызывает ваш код

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

Может быть, вы могли бы возразить, что BCL обычно представляет "чистые" (независимые от поставщика) модули, где в качестве "каркаса" могут (в зависимости от того, как вы используете этот термин) включать заказные модули поставщика. Но это, возможно, открыто для местной интерпретации.

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

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

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

Я рассматриваю фреймворк как шаблон, которому может соответствовать приложение, определенное в наборе библиотек.

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

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

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

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

Разница между Application Framework и библиотеками: вы используете библиотеку классов при написании своего кода, но кодируете в рамках.

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

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

Несколько членов здесь дают хорошее объяснение: в чем разница между фреймворком и библиотекой?

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

Другие вопросы по тегам