0
点赞
收藏
分享

微信扫一扫

C#GJBC-3.2.1服务程序


 


32.2.1  服务程序


在讨论服务的 .NET 实现方式之前,首先讨论服务的 Windows 体系和服务的内部功能。


服务程序实现服务的功能。一般来说,服务程序需要 3 个部分:


       主函数


       service-main函数


       处理程序


在讨论这些部分前,首先需要介绍Service Control Manager (SCM)。对于服务来说, SCM的作用非常重要,它可以把启动服务或停止服务的请求发送给服务。


1. Service Control Manager (SCM)


Service Control Manager (SCM)是操作系统的一个组成部分,它的作用是与服务进行通信。图32-2阐明了这种通信处理UML序列的方式。




图   32-2


提示:


如果将服务设置为自动启动,则在系统启动时,将启动该服务的进程,进而调用该进程的主函数。服务负责为它的每一个服务都注册一个service-main函数。主函数是服务程序的入口,在这里,service-main函数的入口则必须用SCM注册。


2. 主函数、service-main和处理程序


服务的主函数可以注册多个 service-main 函数,它必须为所提供的每个服务注册一个 service-main 函数。服务程序可以在一个程序中提供许多服务,例如<windows>/system32/ services.exe这个服务程序就包括Alerter、 Application Management、Computer Browser和DHCP Client等服务。


SCM 现在为每一个应该启动的服务调用 service-main 函数。 Service-main 函数包含服务的功能。 service-main 函数的一个重要任务是用 SCM 注册处理程序。


处理程序函数是服务程序的第三部分,处理程序必须对来自 SCM 的事件作出响应。服务可以停止、暂停或重新开始,处理程序必须对这些事件做出响应。


一旦使用 SCM 注册了处理程序,服务控制程序可以把停止、暂停和继续服务的请求发送给 SCM 。服务控制程序独立于 SCM 和服务本身。在操作系统中有许多服务控制程序,以前介绍的 MMC Services 管理单元就是其中的一个。也可以编写自己的服务控制程序。一个比较好的服务控制程序是 SQL Server Service Manager ,如图 32-3 所示。




图   32-3

举报

相关推荐

0 条评论