2009-06-03 56 views
0

我有一个基本的任务框架,其中的任务,例如:部署和运行.NET程序集

  • 做一些内容处理
  • 报告生成
  • 错误日志守望
  • 邮件

被封装在一个ITask接口,其中有一个Run方法和其他状态相关的成员。

这些任务要么按计划持续运行,要么按需运行。它们可以作为Windows服务托管,也可以作为工作机器上的控制台应用程序托管。

主机应用程序运行在使用TaskRunner类一组任务,它可以使用时间表,穿线等

我希望能够以更自动化的方式部署到员工的机器任务比执行发布和做更新。

基本上,我希望能够发送一个ITask接口(或其他子组件)的进程和实现,以便按某个时间表或某些设置运行。

我知道我可以动态加载程序集,而且我也看到:MEF

什么是最好的方式去做这件事?我应该构建一个实现并将这些DLL发布到工作进程可以读取它们的已知目录中吗?我应该将DLL作为二进制发布到数据库,供工作人员阅读吗?

回答

1

无论哪种方式将工作。在我看来,你喜欢的将取决于你的操作要求。

如果您已经安装好了数据库,并且您希望任务能够被严格管理和查询,并且如果您有许多其他属性需要与某个任务相关联,则可以使用数据库它能够执行严格的模式和查询/更新功能将是事情。

如果您的环境比较松散,那么您没有安装db服务器,而您只是希望能够将任务推出,共享文件系统或只是文件放置会更有意义。

如果您没有看到强烈的偏好,并且您希望在模型中具有灵活性,请封装发布和加载内容,以便您可以轻松配置文件系统或数据库,或者一些其他提供者。

在任何一种情况下,动态加载程序集并调用它都很容易。

+0

你知道任何好的方法,或有关部署程序集到数据库的文章?我很好奇现有的最佳实践,如果有的话,关于构建程序集的过程,为它生成二进制文件,将其保存到数据库,然后从数据库加载它。也许一个MSBuild任务? – eulerfx 2009-06-04 18:08:42

1

我的建议是查看Codeplex上的WPF CAB项目。在该项目中,它具有将新dll注册为实现接口IModule的模块的概念。

您可以遵循相同的模式只使用ITask,然后调用ITask.RunTask()或等效。

+0

听起来好像eulerfx已经放弃了那部分。他问的是物理部署。 – Cheeso 2009-06-03 16:17:57

相关问题