Подтвердить что ты не робот

Шаблон проектирования для реализации плагинов в вашем приложении?

Каков стандартный способ разрешения и внедрения плагиновой системы для вашего приложения?

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

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

Каков "правильный" способ создания плагиновой системы? Вы просто создаете интерфейс для плагинов? Если вы периодически вызываете конкретный метод во всех плагинах? Есть ли более сложный способ?


EDIT:

Спасибо Мэтту Хэмилтону за ссылку на пространство имен System.Addin. Скорее всего, это будет способ реализации моих плагинов. Тем не менее, мне все еще интересно узнать о архитектуре плагинов в целом и не буду возражать против того, чтобы они наилучшим образом разрабатывались, имплантировались.. как вы должны называть их после загрузки и т.д.

4b9b3361

Ответ 1

Просмотрите пространство имен System.AddIn как этот ответ по аналогичному вопросу.

Ответ 3

Гленн Блок и Брэд Абрамс в Microsoft недавно выпустили Managed Extensibility Framework, который обеспечивает основу для решения именно того, о чем вы говорите.

Документация и загрузка доступны здесь.

Glenn's и Блог Брэда также хорош ресурсы для MEF.

Ответ 4

С точки зрения строгого дизайна вы можете взглянуть на OSGi (это сильно ориентировано на Java, но считается очень, очень хорошей системой плагинов/модулей). Может быть, слишком много для того, чего вы пытаетесь достичь, но там очень много хороших вещей о том, как обрабатывать модули загрузки и выгрузки динамически в середине прогона и т.д.