这是一个坏主意/实践,我会遇到什么问题

时间:2011-05-21 00:09:11

标签: c#

我有一个需要进入服务的流程。这个过程现在自动运行,所以不用担心用户交互我只需要将它“转”成服务。我开始考虑它并决定我可以创建一个启动该过程的服务,这将给我带来外部控制过程的额外好处。我可以看到它意外退出并重新启动它。我还可以观察它的内存使用情况并在它失控时将其杀死。我不认为我已经看到许多其他应用程序这样做,我认为必须有一个原因,所以......

3 个答案:

答案 0 :(得分:2)

这将增加复杂性。

现在,您需要制作第二个可执行文件来“启动并监控”此过程,而不仅仅是让流程存在。这增加了开销(服务和流程都在运行),增加了复杂性,并使整个生活变得更加困难。

话虽这么说,如果你有一个.NET控制台应用程序,把它变成一个服务是非常微不足道的。你的Main例程基本上只是被移入一个方法,并在一个线程中启动。一旦你这样做,服务应用程序就会有效地完成 - 它只是配置服务(可以在设计人员中完成)并覆盖OnStart来启动一个线程并调用你的例程。

答案 1 :(得分:1)

这是一个好主意,但你已经重新发明了轮子。您所考虑的主要是服务器监控。有几个高质量的开源实现你想要的。

答案 2 :(得分:0)

通过将应用程序逻辑放在服务中,您可以通过这种方式做任何事情,只需要降低复杂性。更不用说您可以直接在服务中免费获得Service Recovery。