我只创建了常规的Windows应用程序(主要是C#)。 Windows服务与常规Windows应用程序的区别是什么?是什么让他们不同?应用程序无法提供哪些服务?从开发人员的角度看有哪些不同之处?你是如何创造一个的?它只是创建一个常规应用程序(可能是控制台应用程序,因为没有gui?)并以特殊方式运行或安装它,还是需要做更多的事情?
答案 0 :(得分:9)
有一些事情立刻向我发出。
答案 1 :(得分:6)
This MSDN page会产生更多关于创建它们的文档,而不是你可以动摇一下。 This page或许可以更好地介绍它们。
作为应用程序运行的进程与作为服务运行的进程之间的主要区别在于服务可以完全在与用户和会话的正常关联之外运行。因此,服务可以运行,以便它们在任何用户登录之前启动,并且可以在用户注销后继续运行。因此,服务用于实现操作系统的大量实际功能。
服务也不依赖于与进程的1:1映射运行。许多服务可以存在于一个进程中,通常通过使用svchost(使用进程资源管理器查看这些服务,以指示这通常如何工作)。这减少了启动时的工作量,因为相对轻量级的服务不需要多个进程。
在c#中实现服务非常简单,page表示如何非常容易理解。
请注意,实际上,Windows中的服务仅仅是HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Services下的注册表中的脚手架,它定义了那些被视为“图像路径”(在大多数情况下只是可执行文件和要使用的参数)服务以及随后运行的用户,以及他们依赖的其他服务以及他们是在启动/启动后启动还是根据需要启动。
答案 2 :(得分:2)
如果你熟悉Unix,Windows服务就像一个Unix守护进程。它与任何特定用户无关,并且始终在后台运行。
答案 3 :(得分:0)
主要区别在于,您希望将Windows服务作为后台服务运行,而不需要UI。一个示例是一个索引驱动器上的文件以进行搜索的服务。
另一个好处是,您可以在用户登录时自动启动服务。
还可以覆盖在启动/停止服务时调用的方法(即从“控制面板”|“管理工具”|“服务”)。
在Visual Studio中,您可以使用一种特殊的项目类型来创建它。请参阅以下网站获取示例:http://www.dotheweb.net/articles/dotnet/services.aspx