使用Windows服务或控制台应用程序好吗?

7

我在数据库中有一个任务表。我想从这个表中读取数据并运行任务。是将其设置为Windows服务还是运行控制台应用程序更好呢?这将在不关闭的服务器上运行。

6个回答

8
您最好使用 Windows 服务。
好处如下:
  • 您可以控制启动进程的用户(以及与此用户帐户相关联的权限)
  • 自动启动的进程意味着桌面不需要开启,也不需要用户登录才能运行服务
  • 可以定义失败策略(尝试重启n次,如果失败则运行特定程序)
  • 可以定义依赖项(如果您依赖其他服务)
  • 您可以在无形窗口中包装脚本
  • 您可以轻松地启动/停止/重新启动脚本 (net start <scriptname>)
摘自此处: What is the benefit of developing the application as a windows service?

2
非常好的答案。我想补充一点,对于高级场景,您可以在服务内直接托管一个小型Web应用程序。这将使您能够远程控制或监视服务(只需注意安全性问题)。其中一个例子是Rabbitmq管理服务。一个小的嵌入式Web服务器允许管理员远程监视服务。 - Steve B

4

作为其他人已经提到的,运行中的控制台应用程序不是一个选项。

如果您只想每x分钟运行一次任务,最简单的选择是使用控制台应用程序的计划任务

Windows服务有其优点,但实现和部署稍微复杂一些。但是,如果您的应用程序需要“始终处于”状态(例如需要对外部触发器做出反应,听取消息队列等),则Windows服务是唯一的选择。正如其他人所说,服务基础架构还提供了更多的管理功能,内置与事件日志的集成,重启和故障转移选项...


谢谢Jeroenh!! 是的,那正是我的需求。我应该能够在每x分钟触发任务。你能告诉我使用服务有多复杂吗? - Juni
http://www.pedautreppe.com/post/How-to-create-(and-deploy)-a-windows-service-in-C-.aspx - jeroenh
但正如我在答案中所述,如果你只需要任务每隔 x 分钟运行一次,则计划任务更容易,并且具有许多相同的优点(可以无人值守运行,易于部署,与事件日志集成等)。 - jeroenh

0

Windows服务,因为它不需要已登录的用户。


0

我会说:Windows服务。

在这种情况下(除其他事项外),您不需要用户登录,可以配置它以自动重新启动,如果出现某些原因导致其关闭,并且您(可能)拥有系统中的广泛权限。


0

通常情况下,Windows服务可以自动启动,而控制台应用程序需要在服务器重新启动时手动重新启动。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接