Каковы преимущества и недостатки основанной на плагине архитектуры?

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

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

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

Также это должно поддерживать легкое расширение и настройку функций. Я считал, что основанная на плагине архитектура поддерживает обоих.

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

Заранее спасибо:)

23
задан RP. 12 May 2010 в 11:43
поделиться

4 ответа

Преимуществами подключаемой системы являются

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

Но некоторые из этих сильных сторон также являются слабыми:

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

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

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

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

45
ответ дан 29 November 2019 в 01:25
поделиться

Вы можете найти преимущества и небольшой фреймворк плагина, который можно использовать, на текст ссылки

1
ответ дан 29 November 2019 в 01:25
поделиться

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

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

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

5
ответ дан 29 November 2019 в 01:25
поделиться

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

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

Когда вы хотите интегрировать различные сторонние приложения, как вы упомянули, будет лучше разрабатывать их как плагины ИЛИ как компоненты/сервисы. (Я не хочу вас запутать, но SOA может быть интересен.) Чтобы вы могли включать/выключать сервис/плагин, когда он не нужен. Даже вы можете получить выгоду от этого, когда вы хотите сделать SAAS (Software As A Service) модель, где вы получаете доход за каждую отдельную услугу/функцию :).

Для справки, вы можете посмотреть следующие JAVA-фреймворки. Существует множество ESB, которые обеспечивают архитектуру plug-n-play на основе компонентов/сервисов.

Надеюсь, это поможет.

спасибо.

3
ответ дан 29 November 2019 в 01:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: