2012-01-22 63 views
12

任何人都可以告诉我是否有任何其他Windows服务?我的问题的原因是,我发现Windows服务很难测试,因为它需要先安装。C#Windows服务替代

谢谢。

+1

您的声明:“我的问题的原因是我发现windows服务很难测试,因为它需要先安装。”我想就此说,您可以通过首先编写它的整体来测试窗口服务代码按钮在表单中单击。当您对表单的代码感到满意后,可以将该代码复制并粘贴到Service.cs文件中。 –

+0

我必须同意这一点上的OP,服务很难排除故障,特别是在生产环境中。但是,是的,有办法来缓解这个问题,通过编写代码首先作为控制台/赢取窗体运行。对于安装问题和特权,尽管 –

回答

5

这只是要求正确组织和分解代码,所以它不需要需要从服务方法中调用。 IE,你有一个函数调用来运行一切 - 可以从服务中调用,或者通过Main方法调用 - 或者由NUnit等调用。

否则,如果你仍然想要一个替代方案, Main方法,然后运行您的程序作为Windows计划任务的一部分。

+3

是最好的选择,但它不是那么简单。您将会遇到特定于Windows服务的时间错误,如安装问题,日志记录,访问冲突等,这些都很难测试。您可以将调试程序附加到进程中,但仍然不是查找错误的理想方法。 –

0

您可以考虑使用Windows Azure Worker角色。您将获得一个正在运行的服务,例如也托管在云中的环境。

3

您最佳的Windows服务替代方案是Windows Server AppFabric。关于使用它,这里有很好的blog entry

但是,我认为这不一定更容易测试。测试的最佳选择是从控制台运行Windows服务。这可以通过实例化服务对象并公开一个方法来启动它来完成。

13

查看Topshelf project。简单的控制台应用程序,但可以安装为Windows服务。