Вам бонус- начислено 1 монета за дневную активность. Сейчас у вас 1 монета

Фреймворк как программная платформа, Классификация и виды фреймворков (framework)

Лекция



Привет, Вы узнаете о том , что такое фреймворк, Разберем основные их виды и особенности использования. Еще будет много подробных примеров и описаний. Для того чтобы лучше понимать что такое фреймворк, классификация фреймворков, виды фреймворков, framework , настоятельно рекомендую прочитать все из категории Фреймворки. Famworks ( программная платформа).

фреймворк (иногда фреймво́рк; англицизм, неологизм от framework — остов, каркас, структура) — программная платформа, определяющая структуру программной системы; программное обеспечение, облегчающее разработку и объединение разных компонентов большого программного проекта.

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

  1. Постоянная часть — каркас, не меняющийся от конфигурации к конфигурации и несущий в себе гнезда, в которых размещается вторая, переменная часть;
  2. Сменные модули (или точки расширения).

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

У фреймворков есть ключевые отличительные особенности, которые отличают их от обычных библиотек :

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

Отличие фреймвока от библиотеки

«Фреймворк» отличается от понятия библиотеки тем, что библиотека может быть использована в программном продукте просто как набор подпрограмм близкой функциональности, не влияя на архитектуру программного продукта и не накладывая на нее никаких ограничений. В то время как «фреймворк» диктует правила построения архитектуры приложения, задавая на начальном этапе разработки поведение по умолчанию — «каркас», который нужно будет расширять и изменять, согласно указанным требованиям. Пример программного фреймворка — C.M.F. (Content Management Framework), а пример библиотеки — модуль электронной почты.

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

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

Архитектура фреймворков

Программные среды состоят из замороженных и горячих точек ( frozen spots and hot spots). Frozen spots (Замороженные места) определяют общую архитектуру программной системы, то есть ее основные компоненты и отношения между ними. Они остаются неизменными (замороженными) в любом экземпляре инфраструктуры приложения. Hot spots(Горячие точки )представляют собой те части, где программисты, использующие фреймворк, добавляют свой собственный код для добавления функциональности, специфичной для их собственного проекта.

В объектно-ориентированной среде фреймворк состоит из абстрактных и конкретных классов . Создание такой структуры состоит из составления и создания подклассов существующих классов.

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

При разработке конкретной программной системы с программной структурой разработчики используют горячие точки в соответствии с конкретными потребностями и требованиями системы. Программные фреймворки основываются на голливудском принципе : «Не звоните нам, мы позвоним вам». Это означает, что определенные пользователем классы (например, новые подклассы) получают сообщения от предопределенных классов инфраструктуры. Разработчики обычно справляются с этим путем реализации абстрактных методов суперкласса .

Классификация фреймворков:

  • Фреймворки приложений;
  • Фреймворки программных моделей;
  • Фреймворки концептуальных моделей.

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

Фреймворк  как  программная платформа, Классификация и виды фреймворков (framework)

Языки программирования высокого уровня, или подход «Без фреймворков»

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

Узкоспециализированные фреймворки

Это самый многочисленный класс. Об этом говорит сайт https://intellect.icu . Все его представители упрощают разработку за счет повышения уровня абстракции и предоставления понятного API. При этом каждый такой фреймворк предназначен для своей узкой области. Связать воедино ORM, Middleware, UI, Messaging и прочие фреймворки — задача нетривиальная. У этого подхода есть свое преимущество — неплохой баланс между скоростью разработки и действительно высокой гибкостью.

Генераторы кода/Агрегаторы

Этот класс позволяет ускорить разработку на стадии старта проекта. По сути, генераторы кода и агрегаторы просто выстраивают структуру приложений, основанных на узкоспециализированных фреймворках, о которых я говорил выше. Например, JHipster генерирует приложение на базе Spring с пользовательским интерфейсом на Angular. Однако, на других стадиях такие фреймворки уже не сильно или вообще не помогут.

Высокоуровневые full-stack фреймворки

Этот класс — следующий после Узкоспециализированных фреймворков уровень абстракции. Готовая инфраструктура, которую предлагают такие фреймворки, позволяет создавать корпоративные full-stack системы в разы быстрее. Например, Платформа CUBA предоставляет готовую архитектуру для создания 3-слойных приложений и включает в себя функции, без которых редко обходятся корпоративные системы: soft deletion, data-aware компоненты, хранилище файлов, а также модули высокого уровня: аутентификация и авторизация, аудит данных, и т.п. Этот класс, пожалуй, лучше всего подходит для разработки систем типа ERP, бизнес-приложений или другого пользовательского ПО для корпоративного сегмента.

Low/No Code фреймворки

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

все классы фреймворков и типы задач, которые они решают лучше всего:

Класс

Типичное применение

Подход «Без фреймворков»

  • Узкоспециализированные фреймворки
  • Низкоуровневые продукты, такие как in-memory grids, алгоритмы обработки больших данных, распознавание изображений и т.д.

Узкоспециализированные фреймворки

  • Корпоративные приложения с уникальной или нетипичной архитектурой
  • Микросервисы
  • Свой собственный backend
  • Платформы E-commerce
  • Enterprise Service Bus

Генераторы кода/Агрегаторы

  • Значительное ускорение на стадии запуска тех же типов проектов, что и в классе узкоспециализированных фреймворков

Высокоуровневые Full-stack фреймворки

  • ERP-приложения
  • Собственные BPMS-приложения
  • Управление мастер-данными
  • Сеть бизнес-приложений
  • Собственные приложения с типовыми энтерпрайз-требованиями

Low/No Code фреймворки

  • Простые сайты
  • Стандартные интернет-магазины
  • Корпоративные порталы
  • Простые/Типовые BPMS
  • Простые CRUD-приложения (учетные системы)

выбор лучшего фреймворка (или их набора) для разработки приложения — это поиск оптимального баланса между следующими критериями:

  1. Диапазон применения — какую часть приложения можно написать с помощью этого фреймворка? Сколько фреймворков понадобится — один или несколько?
  2. Скорость разработки — сколько времени сэкономит фреймворк?
  3. Управляемость и гибкость — какие у фреймворка ограничения по архитектуре приложения, производительности и т.д.?

Примеры фреймворков

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

  • Художественный рисунок, музыкальная композиция и механическое САПР
  • Приложения финансового моделирования
  • Приложения для моделирования земной системы
  • Системы поддержки принятия решений
  • Воспроизведение и создание мультимедиа
  • Фреймворк Ajax / фреймворк JavaScript
  • Веб-фреймворк
  • Промежуточное ПО
  • Cactus Framework - высокопроизводительные научные вычисления.
  • Платформа приложения - Общие приложения с графическим интерфейсом.
  • Структура архитектуры предприятия
  • Среда разработки приложений Oracle
  • Laravel (PHP-фреймворк)

Фреймворк программной системы

Это каркас программной системы (или подсистемы). Может включать: вспомогательные программы, библиотеки кода, язык сценариев и другое ПО, облегчающее разработку и объединение разных компонентов большого программного проекта. Обычно объединение происходит за счет использования единого API.

Примеры: веб-фреймворки, как PHP-фреймворки Zend Framework и Symfony, или Django, написанный на Python.

Фреймворк приложения

Одно из главных преимуществ при использовании «каркасных» приложений — «стандартность» структуры приложения. «Каркасы» стали популярны с появлением графических интерфейсов пользователя, которые имели тенденцию к реализации стандартной структуры для приложений. С их использованием стало гораздо проще создавать средства для автоматического создания графических интерфейсов, так как структура внутренней реализации кода приложения стала известна заранее. Для обеспечения каркаса, обычно используются техники объектно-ориентированного программирования (например, части приложения могут наследоваться от базовых классов фреймворка).

Одним из первых коммерческих фреймворков приложения был MacApp[en], написанный Apple для «Macintosh». Первоначально созданный с помощью расширенной (объектно-ориентированной) версии языка «Object Pascal», впоследствии он был переписан на «С++». Другие популярные каркасы для «Macintosh» включали:

  • Metrowerks PowerPlant[en] и MacZoop[en] (все основаны на Carbon);
  • WebObjects[en] от NeXT.

В различной степени фреймворки приложения представляют собой «Cocoa» для Mac OS X, а также свободные фреймворки, существующие как часть проектов Mozilla, OpenOffice.org, GNOME и KDE.

Microsoft создала похожий продукт для «Windows», который называется Microsoft Foundation Classes (MFC). На данный момент основным продуктом Microsoft для разработки ПО предлагается «.NET Framework».

Кроссплатформенными каркасами приложений (для операционных систем «Linux», «Macintosh» и «Windows») являются, например, widget toolkit[en], wxWidgets, Qt, MyCoRe[de] или FOX toolkit.

Фреймворк концептуальной модели

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

Реализация фреймворка

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

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

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

Виды фремворков

HTML/CSS-фреймворки: их главные особенности

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

Bootstrap стал столь популярным из-за огромного количества достоинств, в нем практически отсутствуют недостатки. Это не только HTML/CSS-фреймворк, в Bootstrap также включены плагины и готовые стили JS/Jquery. Знание Bootstrap часто является одним из обязательных требований работодателей.
Официальная страница getbootstrap.com

Semantic UI - используется для создания переносимых интерфейсов. Данный фреймворк можно назвать достаточно молодым, однако стоит отметить его постоянное развитие. В нем можно найти огромное количество кнопок и других элементов, необходимых для работы — изображения, иконки, надписи.
Официальная страница semantic-ui.com

Foundation - данный фреймворк является одним из популярных в сегменте front-end-фреймворков. Последние версии отличаются улучшенным функционалом для современных мобильных устройств. Благодаря семантическому подходу, есть возможность использования SCSS, написания более чистого кода в HTML. Данный фреймворк является идеальным для ситуации, когда нужно быстрое прототипирование.
Официальная страница foundation.zurb.com

Pure by Yahoo! - в данном фреймворке есть несколько небольших CSS-модулей, которые хорошо подойдут для любого современного проекта. Название фреймворка, характеризует его основную особенность - ничего лишнего, только необходимый, ничем не утяжеленный программный каркас, который прекрасно подойдет для создания сайта.
Официальная страница purecss.io

Uikit - фреймворк отличается модульной, легкой структурой. Есть несколько особенностей, которые позволяют ему выделяться на фоне современных фреймворков. Это markdown - возможность предварительно просмотреть страницу сайта в режиме реального времени. Также можно отметить синтаксическую подсветку для HTML.
Официальная страница getuikit.com

PHP-фреймворки: основные особенности

Yii - достаточно "возрастной" фреймворк, который продолжает обновляться в наши дни. Отличается удобным функционалом - кэширование, высокая производительность, полная обработка ошибок, возможность переноса (миграции) существующих баз данных, использование jQuery и другое. Фреймворк Yii отличается своей простотой, можно быстро освоить его основы, нет никаких сложностей в работе и использовании основного функционала. Данный PHP-фреймворк часто советуют людям, которые делают первые шаги в понимании PHP-программирования.
Официальная страница yiiframework.com

CodeIgniter - еще один "возрастной" фреймворк, появившийся в начале 2006 года. Именно тогда состоялся его публичный релиз. Среди основных преимуществ этого фреймворка:
- Хорошая документация;
- Небольшой вес и быстрая установка;
- Простота использования.
Многие используют CodeIgniter в качестве базы для обучения - его простота действительно считается наиболее значимым преимуществом. Постоянно появляются новые версии, каждая из которых отличается большим количеством нововведений, исправленных багов.
Официальная страница codeigniter.com

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

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

Phalcon PHP - отличается открытым кодом (языки программирования C, C++, PHP), поддержкой практически всех современных ОС. Производительность этого фреймворка находится на высоком уровне - это подтверждено множеством специализированных тестирований, и, как следствие, его популярностью. Есть возможность использования на собственном сервере.
Официальная страница phalconphp.com

Python-фреймворки: главные особенности

Flask - отличается минимальным количеством базового функционала, но является расширяемым. В любой момент можно добавить необходимый функционал, учитывая особенности конкретного проекта. Благодаря большому количеству расширений, у вас не возникнет проблем с реализацией собственной задумки. Подходит для начинающих программистов в качестве первого знакомства с phyton-фреймворками.
Официальная страница flask.pocoo.org

Web2py - его основой является концепция RAD(rapid application development) – быстрая разработка приложений. Это позволяет программистам оперативно создавать качественные продукты, при этом не придется затрачивать слишком много сил или времени. Разработчики постарались сделать фреймворк максимально простым и эффективным. Полностью открытый код позволяет создавать любые динамические сайты на языке Python. Фреймворк отличается масштабным функционалом и производительностью.
Официальная страница web2py.com

Django - фреймворк является очень популярным в целом, он лидирует в своем сегменте благодаря простоте и функциональности. Во-первых, для старта не нужны глубокие знания языка программирования Python. А благодаря DRY (Don`t repeat yourself)-принципу написание кода упрощается - вам не придется повторно вписывать строки, которые уже использовались, фреймворк самостоятельно это сделает, при этом код будет лаконичным и эффективным. Наследование шаблонов, а также стандартная структура - основные преимущества этого python-фреймворка. Имеется также система администрирования – CMS Django.
Официальная страница djangoproject.com

TurboGears - "долгожитель" своего сегмента, структура этого фреймворка оставлена из WSGI — компонентов (например, Pylons, CherryPy), позволяющих создавать любые современные проекты. Фреймворк является действительно мощным, отличается приличным функционалом. Есть поддержка разных баз данных, возможность масштабирования, недостатков практически нет.
Официальная страница turbogears.org

Tornado - у него есть главная особенность, которая сказывается на популярности - решение проблемы 10 000 соединений. Благодаря особенностям сервера, этот фрейворк может прекрасно справляться с тысячами одновременных подключений.
Официальная страница tornadoweb.org/en/stable

Вау!! 😲 Ты еще не читал? Это зря!

Исследование, описанное в статье про фреймворк, подчеркивает ее значимость в современном мире. Надеюсь, что теперь ты понял что такое фреймворк, классификация фреймворков, виды фреймворков, framework и для чего все это нужно, а если не понял, или есть замечания, то не стесняйся, пиши или спрашивай в комментариях, с удовольствием отвечу. Для того чтобы глубже понять настоятельно рекомендую изучить всю информацию из категории Фреймворки. Famworks ( программная платформа)

создано: 2020-10-11
обновлено: 2021-04-05
132265



Рейтиг 9 of 10. count vote: 2
Вы довольны ?:


Поделиться:

Найди готовое или заработай

С нашими удобными сервисами без комиссии*

Как это работает? | Узнать цену?

Найти исполнителя
$0 / весь год.
  • У вас есть задание, но нет времени его делать
  • Вы хотите найти профессионала для выплнения задания
  • Возможно примерение функции гаранта на сделку
  • Приорететная поддержка
  • идеально подходит для студентов, у которых нет времени для решения заданий
Готовое решение
$0 / весь год.
  • Вы можите продать(исполнителем) или купить(заказчиком) готовое решение
  • Вам предоставят готовое решение
  • Будет предоставлено в минимальные сроки т.к. задание уже готовое
  • Вы получите базовую гарантию 8 дней
  • Вы можете заработать на материалах
  • подходит как для студентов так и для преподавателей
Я исполнитель
$0 / весь год.
  • Вы профессионал своего дела
  • У вас есть опыт и желание зарабатывать
  • Вы хотите помочь в решении задач или написании работ
  • Возможно примерение функции гаранта на сделку
  • подходит для опытных студентов так и для преподавателей



Комментарии


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

Фреймворки. Famworks ( программная платформа)

Термины: Фреймворки. Famworks ( программная платформа)