Как вынести логику работы в отдельные .dll? И как такое называется?

Дано: веб-сервис рассылки данных на WebAPI с базой клиентов. Каждый клиент принимает рассылку по своему требованию (протокол, поля данных, иногда даже требуется отправлять файлом (.xls, .mdf, ...)).
Надо:
  1. Вынести бизнес-логику генерации запроса-отчёта для каждого клиента в отдельную .dll
  2. Так как, веб-сервис отправляет рассылку каждые 2 минуты, нужно прикрутить сканнер .dll-ок для определённого клиента. Чтобы изменять их было легко, без перезапуска или остановки приложения.


Вариант с дополнительными полями/таблицами, описывающих требования клиентов, и написание отдельной функции не подходит. Потому что там придётся учитывать всё. Может быть такое, что клиент новый появится и скажет, вот я хочу принимать данные в .xls/.mdf/.dba через POST/proxy и тд. Поэтому нужна такая гибкая архитектура, где не придётся учитывать всё. А всё добавляется как отдельная функция в .dll для основного веб-приложения при необходимости, то есть, когда такой клиент с определёнными требованиями появляется. Не за чем сейчас писать логику генерации отчёта по всем протоколам, файлам и иными требованиями.

Прошу подсказать с решением данной проблемы и поделиться называнием такого вида архитектуры. Или предложить альтернативный вариант решения данной задачи. Чтобы не надо было без конца ре-деплоить приложение, а заменять .dll-ки для каждого клиента при надобности.
  • Вопрос задан
  • 1149 просмотров
Решения вопроса 2
petermzg
@petermzg
Самый лучший программист
Для .NET по обновлению dll есть только один вариант, это AppDomain.
В вашем случае создаете новые для каждого уникального сценария, и в случае изменения dll, выгружаете целиком домен и создаете новый.

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

7c056f1079b8439dbdcf334eed9c9d55.PNG
Ответ написан
EreminD
@EreminD
Кое-что умею
New Project -> Templates -> Windows -> Class library
на выходе получаете dll

А вот тут про подхват dll'ек на ходу: https://stackoverflow.com/questions/18362368/loadi...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Ogoun
@Ogoun
Programmer
Специально для этих целей в стандартные библиотеки входи MEF
Это намного проще чем писать свои host приложения на основе AppDomain.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы