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

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


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

Прошу подсказать с решением данной проблемы и поделиться называнием такого вида архитектуры. Или предложить альтернативный вариант решения данной задачи. Чтобы не надо было без конца ре-деплоить приложение, а заменять .dll-ки для каждого клиента при надобности.
  • Вопрос задан
  • 1156 просмотров
Решения вопроса 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.
Ответ написан
Ваш ответ на вопрос

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

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