Windows服务和常规应用程序有什么区别?

Svi*_*ish 5 c# windows comparison windows-services

我只创建了常规的Windows应用程序(主要是C#).Windows服务与常规Windows应用程序的区别是什么?是什么让他们不同?应用程序无法提供哪些服务?从开发人员的角度看有哪些不同之处?你是如何创造一个的?它只是创建一个常规应用程序(可能是控制台应用程序,因为没有gui?)并以特殊方式运行或安装它,还是需要做更多的事情?

Jar*_*Par 9

有一些事情立即向我跳出来.

  • 从Vista开始,它们在完全不同的控制台中运行
  • 由于在不同的控制台中运行,服务无法与桌面交互.所以基本上没有直接的UI支持.您通常必须编写一个兄弟UI应用程序,该应用程序作为普通程序运行,并使用某种机制(例如命名管道)与服务进行通信.
  • 通常,在任何给定时间只能运行一个服务实例.
  • 进程是每个用户,服务是每个工作站,因此通常为多个用户提供服务.


Shu*_*oUk 6

这个MSDN页面提供了更多关于创建它们的文档,而不是你可以动摇一下.这个页面可能是对它们的更好的介绍.

作为应用程序运行的进程与作为服务运行的进程之间的关键区别在于,服务可以完全在与用户和会话的正常关联之外运行.因此,服务可以运行,以便它们在任何用户登录之前启动,并且可以在用户注销后继续运行.因此,服务用于实现操作系统的大量实际功能.

服务也不依赖于与进程的1:1映射运行.许多服务可以存在于一个进程中,通常通过使用svchost(使用进程资源管理器查看这些服务,以指示这通常如何工作).这减少了启动时的工作量,因为相对轻量级的服务不需要多个进程.

在c#中实现服务非常简单,此页面指示了如何非常容易地遵循术语.

请注意,实际上,Windows中的服务仅仅是HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services下的注册表中的脚手架,它定义了那些被视为服务的"图像路径"(在大多数情况下只是可执行文件和要使用的参数).然后,哪个用户运行,他们依赖哪些其他服务,以及他们是在启动/启动后启动还是根据需要启动.