Развертывание и запуск сборок .NET на рабочем компьютере - PullRequest
0 голосов
/ 03 июня 2009

У меня есть базовая структура задач, где такие задачи, как:

  • выполняет некоторую обработку контента
  • генерация отчетов
  • наблюдатель журнала ошибок
  • 1010 * почтовик *
  • и т.д.

инкапсулированы в интерфейсе ITask, который имеет метод Run и другие члены, связанные со статусом.

Эти задачи выполняются либо по расписанию, либо по запросу. Они размещаются либо как служба Windows, либо как консольное приложение на рабочем компьютере.

Хост-приложение выполняет набор задач с классом TaskRunner, который может использовать расписание, потоки и т. Д.

Я хотел бы иметь возможность развертывать задачу на рабочей машине более автоматизированным способом, чем выполнение выпуска и обновление.

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

Я знаю, что могу динамически загружать сборки, и я также видел: MEF .

Как лучше всего это сделать? Должен ли я создать реализацию и опубликовать библиотеки DLL в известном каталоге, где рабочий процесс может их прочитать? Должен ли я опубликовать DLL в виде двоичного файла в базе данных, чтобы рабочий мог ее прочитать?

Ответы [ 2 ]

1 голос
/ 03 июня 2009

Рекомендую посмотреть на проект WPF CAB на Codeplex. В рамках проекта реализована концепция регистрации новых библиотек в качестве модулей, которые реализуют интерфейс IModule.

Вы можете следовать той же схеме, только используя ITask, а затем вызвать ITask.RunTask () или эквивалентный.

1 голос
/ 03 июня 2009

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

Если у вас уже установлена ​​хорошая база данных, и вы хотите, чтобы задачи были жестко управляемыми и доступными для запросов, и если у вас есть ряд других атрибутов, которые вы хотели бы связать с задачей, то база данных с ее возможность применять строгую схему и возможность запроса / обновления.

Если вместо этого у вас более свободная среда, у вас нет установленного сервера БД, и вы просто хотите иметь возможность выдвигать задачи, общая файловая система или просто удаление файла будет иметь больше смысла.

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

В любом случае загрузка сборки динамически и вызов в нее будет простым.

...