将应用程序开发为Windows服务有什么好处?

时间:2009-01-14 08:18:41

标签: windows-services

我将开发一个处理在线数据的应用程序(通过套接字传递),它不需要任何用户交互。

我正在考虑一个简单的控制台应用程序,但是Windows服务会提供额外的好处吗? (我知道Windows服务不需要用户登录来运行服务,但我要求额外的好处)

4 个答案:

答案 0 :(得分:19)

在我的头顶:

  • 您可以控制启动流程的用户(以及与此用户帐户关联的权限)
  • 自动启动过程意味着桌面需要打开,而不是用户登录才能运行服务
  • 可以定义失败策略(如果失败,尝试重启n次运行特定程序)
  • 可以定义依赖关系(如果依赖于其他服务)
  • 您可以将您的资料包裹在invisible windows
  • 您可以轻松启动/停止/重启脚本(net start <scriptname>

答案 1 :(得分:7)

我无法在VonC的列表中添加任何内容,但我想补充一点,如果您使用的是常用的微软工具(VS&amp; .net),那么两者都很容易。

我创建了一个包含所有应用程序逻辑的类库和一个包含.Start()和.Stop()方法的MyServer类。然后,您可以创建一个控制台应用程序和winservice应用程序,两者都引用它。例如。控制台App实例化一个新的MyServer,调用Start,等待按键并调用Stop。

我在开发期间使用控制台应用程序,使用Windows服务进行部署。

答案 2 :(得分:4)

  1. 您可以从其他计算机管理服务(启动/停止)
  2. 当服务写入事件日志时,您还可以从另一台计算机监视该服务(尽管没有什么能阻止您从常规应用程序执行此操作)
  3. 无需登录即可运行
  4. 服务

答案 3 :(得分:2)

事实上,我认为这实际上取决于您的应用程序的使用情况。

例如,如果您只需要在特定时间运行处理,则命令行的使用就足够了。

如果您的进程需要连续运行并且无声地运行(无用户交互),那么Windows服务将非常有趣。

您还可以考虑Windows中的任务计划。基本上,它将在指定的时间运行您的应用程序(例如通过.bat文件)。如果您的应用程序需要每天在02:00运行,例如... 在“控制面板”中,您有一个选项“计划任务”。然后,单击“添加计划任务”,然后按照向导...