[Я читал предыдущие сообщения о MEF против MAF против DI и т. Д., Они не помогают мне с моей конкретной проблемой]
Я ищу написать приложение .Net (возможно, консоль или сервис Windoes), которое будет расширяемым. Это приложение на ночь / расписание, которое извлекает данные из базы данных, что-то с ними делает, а затем выводит (или передает в другую систему).
Я не уверен, что лучший способ определить этот процесс для плагинов. Компоненты:
- Задача - определение фактической задачи, содержащей определения плагинов и флаг, основанный на событиях, когда запускать (EOD, EOW, EOM)
- Источник - источник данных (задача может иметь от одного до многих источников), это может быть запрос SQL / хранимый процесс, веб-служба или, возможно, файл. Я вижу это вывод данных.
- PostProcess - обработка, необходимая для выполнения на выходе источника (у задачи не будет ни одного из множества шагов после обработки), это может быть агрегатор или какая-то особая обработка). Это получит набор данных (содержащий таблицу данных из предыдущего шага). Они должны работать в определенном порядке из-за зависимостей.
- Target - конечный результат (также один ко многим), это может быть инструкция SQL / сохраненный процесс, загрузка данных, электронная почта, файл вывода или веб-служба
Чтобы упростить его, я бы предпочел, чтобы плагины могли читать из файла конфигурации, это означало бы, что мне не нужно знать, какие строки соединения (и другие подробности) передавать в плагины.
Я смотрел на MEF, MAF, DI или просто определял свою собственную структуру. На этом этапе я склоняюсь к развитию своей собственной, просто интересно, пропустил ли я что-нибудь?
Я на самом деле хотел бы использовать MEF, однако, поскольку мне нужно определить мою задачу (т. Е. Ссылки на задачи, на какие источники ссылаются, на какие ссылки PostProcess, на какую цель), а также на отсутствие доступа к конфигурации. Я видел, как примитивы MEF и каталоги типов помогают мне в этом, но, похоже, не помогают в цепочке плагинов. MEF - правильный выбор?