Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: XLIV Международной научно-практической конференции «Вопросы технических и физико-математических наук в свете современных исследований» (Россия, г. Новосибирск, 20 октября 2021 г.)

Наука: Информационные технологии

Секция: Системный анализ, управление и обработка информации

Скачать книгу(-и): Сборник статей конференции

Библиографическое описание:
Никифоров А.В. ИСПОЛЬЗОВАНИЕ ДИНАМИЧЕСКИ ЗАГРУЖАЕМЫХ БИБЛИОТЕК В ПРИЛОЖЕНИЯХ С КОНВЕЙЕРНОЙ АРХИТЕКТУРОЙ // Вопросы технических и физико-математических наук в свете современных исследований: сб. ст. по матер. XLIV междунар. науч.-практ. конф. № 10(36). – Новосибирск: СибАК, 2021. – С. 11-15.
Проголосовать за статью
Дипломы участников
У данной статьи нет
дипломов

ИСПОЛЬЗОВАНИЕ ДИНАМИЧЕСКИ ЗАГРУЖАЕМЫХ БИБЛИОТЕК В ПРИЛОЖЕНИЯХ С КОНВЕЙЕРНОЙ АРХИТЕКТУРОЙ

Никифоров Антон Владимирович

преподаватель, Сургутский государственный университет,

РФ, г. Сургут

USING DYNAMICALLY LOADED LIBRARIES IN APPLICATIONS WITH PIPELINE ARCHITECTURE

 

Anton Nikiforov

lecturer, Surgut State University,

Russia, Surgut

 

АННОТАЦИЯ

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

ABSTRACT

The article is devoted to the use of dynamically loaded libraries in applications with pipeline architecture. The use of dynamically loaded libraries in the classic pipeline architecture allows the developed application to be flexible and scalable. Flexibility and scalability in this case is ensured not only during the development process, but also during the operation of the finished application. The implementation of such an approach is possible using any programming language that supports dynamic loading of libraries. The approach described in this article of using dynamically loaded libraries in applications with pipeline architecture can be applied to any of the existing types of applications, which opens up new opportunities not only for developers, but also for end users.

 

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

Keywords: architecture, pipeline, plugins, dynamic libraries, inversion of control, dependency injection.

 

Введение

Существуют множество видов архитектур, применяемых при разработке программного обеспечения. Конвейерная архитектура является одним из таких видов. Обычно конвейерная архитектура применяется при разработке веб-приложений. Такой выбор обуславливается тем, что данная архитектура позволяет обрабатывать входящие запросы к серверу при помощи цепочки специальных обработчиков (Handlers). Каждый обработчик выполняет набор строго определенных действий над поступившим запросом и после завершения работы передает запрос дальше по конвейеру. Обработка запроса завершиться только тогда, когда будет достигнута конечная точка конвейера. На рис. 1 показана классическая схема такого конвейера.

 

Рисунок 1. Классическая конвейерная архитектура приложения

 

Из рис. 1 видно, что конвейер может быть, как однонаправленным, так и двунаправленным. Обычно веб-приложения используют двунаправленный конвейер, чтобы иметь возможность обрабатывать не только входящие запросы, но исходящие ответы. Например, сервера разработанные на платформе ASP NET Core от компании Microsoft работают именно по описанному выше принципу [1].

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

 

Рисунок 2. Расширенная конвейерная архитектура приложения

 

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

Конвейерная архитектура приложения на основе плагинов

На рис. 3 представлена схема конвейерной архитектуры приложения на основе динамически загружаемых обработчиков, которые расположены во внешних библиотеках. Далее кратко будем называть библиотеки, содержащие внутри динамически загружаемые обработчики плагинами (Plugins) [2].

 

Рисунок 3. Конвейерная архитектура приложения на основе плагинов

 

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

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

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

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

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

Заключение

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

 

Список литературы:

  1. Документация по ASP.NET Core [Электронный ресурс]. – Режим доступа: https://docs.microsoft.com/ru-ru/aspnet/core/fundamentals/middleware/?view=aspnetcore-5.0 (дата обращения: 18.10.21)
  2. Создание приложения .NET Core с подключаемыми модулями [Электронный ресурс]. – Режим доступа: https://docs.microsoft.com/ru-ru/dotnet/core/tutorials/creating-app-with-plugin-support (дата обращения: 18.10.21)
  3. Уваров А.Н. Инверсия управления и внедрение зависимостей // Символ науки. – 2019. – № 10-1 (22). – С. 28-32.
Проголосовать за статью
Дипломы участников
У данной статьи нет
дипломов

Оставить комментарий

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