2009-06-03 2 views
0

У меня есть основные рамки задач, где такие задачи, как:Развертывание и запуск сборок .NET на рабочем компьютере

  • делает некоторую обработку контента
  • генерации отчетов
  • журнал ошибок Watcher
  • почтовик
  • т.д.

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

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

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

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

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

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

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

ответ

1

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

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

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

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

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

+0

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

1

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

Вы можете использовать тот же шаблон, используя только ITask, а затем вызвать ITask.RunTask() или аналогичный.

+0

Похоже, что eulerfx уже имеет эту часть. То, о чем он спрашивает, - это физическое развертывание. – Cheeso

Смежные вопросы