Дизайн плагинов для приложения .NET - PullRequest
4 голосов
/ 05 сентября 2008

Я планирую переписать часть нашего приложения на C # (в настоящее время устаревший код VB6). Модуль, с которого я начинаю, отвечает за импорт данных из различных систем в нашу базу данных. Приблизительно 5-6 раз в год новый клиент просит нас написать новый импорт для системы, которую они используют. В настоящее время это требует от нас выпуска новой версии нашего программного обеспечения для каждой новой опции импорта, которую мы добавляем в приложение.

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

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

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

Ответы [ 3 ]

3 голосов
/ 05 сентября 2008

Я бы порекомендовал вам взглянуть на Managed Add-In Framework, который поставляется с .NET 3.5. Команда Add-In также опубликовала несколько примеров и инструментов на сайте CodePlex .

1 голос
/ 05 сентября 2008

.Net 3.5 имеет system.Addin namespace.

Эта ветка также содержит полезную информацию для более старых версий фреймворка:
ч TTP: //forums.devshed.com/net-development-87/system-plugin-532149.html

0 голосов
/ 05 сентября 2008

для теории взгляните на шаблон плагина в мартин Фаулерсе Шаблоны архитектуры корпоративных приложений

для интересного примера взгляните на этот урок: Плагин Архитектура с использованием C #

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...