100165793.htm

来自「C#高级编程(第三版),顶死你们。。 。up」· HTM 代码 · 共 162 行

HTM
162
字号


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
	
        32.2.1  服务程序
</title></head>
<body>
    <div class="area">

        

        <div class="col1">
            <div class="lineBlue">
            </div>
            <!-- title -->
            <div class="arcTitle">
                <h1>
                    <a href="../16">
                        C#高级编程(第3版)【全文连载】
                    </a>
                </h1>
                <div style="text-align: center; font-size: 15px">
                    <a href="100165793.htm">
                        32.2.1  服务程序
                    </a>
                </div>
                <div style="text-align: center; font-size: 15px">
                    <a class="url" href="../../default.htm">http://book.csdn.net/</a>
                    2006-10-13 14:41:00
                </div>
                <div style="margin: 0px auto; width: 700px; border: solid 1px #0b5f98;">
                    <div style="float: left; width: 16px; background-color: #0b5f98; color: White; padding: 1px;">
                        图书导读
                    </div>
                    <div style="float: right; width: 670px; text-align: left; line-height: 16pt; padding-left: 2px">
                        <!--导读-->
                        <h1 id="divCurrentNode" style="color: #b83507; width: 100%; text-align: left; font-size: 12px; padding-left: 2px">当前章节:<a href='100165793.htm'><font color='red'>32.2.1  服务程序</font></a></h1>
                        <div id="divRelateNode" style="padding-left: 2px">
                        <div style='float:left;width:49%'>·<a href='100165790.htm'>31.6  小结</a></div><div style='float:right;width:49%'>·<a href='100165791.htm'>32.1  Windows服务</a></div><div style='float:left;width:49%'>·<a href='100165792.htm'>32.2  Windows服务的体系结构</a></div><div style='float:right;width:49%'>·<a href='100165794.htm'>32.2.2  服务控制程序</a></div><div style='float:left;width:49%'>·<a href='100165795.htm'>32.2.3  服务配置程序</a></div><div style='float:right;width:49%'>·<a href='100165796.htm'>32.3  System.ServiceProcess命名空间</a></div></div>
                    </div>
                </div>
                </div>
            <!-- main -->
            <div id="main">
                <div id="text"> <link href="css.css" rel="stylesheet" type="text/css" /><h3 style='margin-top:8.15pt;margin-right:0cm;FTEL:8.15pt;margin-left:
0cm'><a FTEL="_Toc507815573"><span lang=EN-US>32.2.1&nbsp; </span></a><span
style='font-family:黑体'>服务程序</span></h3>

<p class=MsoNormal><span style='font-family:宋体;color:black'>在讨论服务的</span><span
lang=EN-US style='color:black'>.NET</span><span style='font-family:宋体;
color:black'>实现方式之前,首先讨论服务的</span><span lang=EN-US style='color:black'>Windows</span><span
style='font-family:宋体;color:black'>体系和服务的内部功能。</span></p>

<p class=MsoNormal><span style='font-family:宋体;color:black'>服务程序实现服务的功能。一般来说,服务程序需要</span><span
lang=EN-US style='color:black'>3</span><span style='font-family:宋体;color:black'>个部分:</span></p>

<p class=1 style='margin-left:37.55pt;FTEL:-16.1pt'><span lang=EN-US>●<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
style='font-family:宋体'>主函数</span></p>

<p class=1 style='margin-left:37.55pt;FTEL:-16.1pt'><span lang=EN-US>●<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
lang=EN-US>service-main</span><span style='font-family:宋体'>函数</span></p>

<p class=1 style='margin-left:37.55pt;FTEL:-16.1pt'><span lang=EN-US>●<span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span
style='font-family:宋体'>处理程序</span></p>

<p class=MsoNormal><span style='font-family:宋体'>在讨论这些部分前,首先需要介绍</span><span
lang=EN-US>Service Control Manager (SCM)</span><span style='font-family:宋体'>。对于服务来说,</span><span
lang=EN-US> SCM</span><span style='font-family:宋体'>的作用非常重要,它可以把启动服务或停止服务的请求发送给服务。</span></p>

<h4 style='FTEL:21.45pt'><span lang=EN-US>1. Service Control Manager
(SCM)</span></h4>

<p class=MsoNormal><span lang=EN-US>Service Control Manager (SCM)</span><span
style='font-family:宋体'>是操作系统的一个组成部分,它的作用是与服务进行通信。图</span><span lang=EN-US>32-2</span><span
style='font-family:宋体'>阐明了这种通信处理</span><span lang=EN-US>UML</span><span
style='font-family:宋体'>序列的方式。</span></p>

<p align=center><span lang=EN-US><img width=272 height=257
src="32/image002.gif"></span></p>

<p align=center style='FTEL:8.15pt'><span style='font-family:宋体;color:black'>图</span><span
lang=EN-US style='color:black'>&nbsp; 32-2</span></p>

<p class=a3 style='margin-top:8.15pt;FTEL:21.45pt'><span
style='font-family:黑体'>提示:</span></p>

<p class=a1 style='FTEL:8.15pt;FTEL:21.45pt'><span
style='font-family:楷体_GB2312'>如果将服务设置为自动启动,则在系统启动时,将启动该服务的进程,进而调用该进程的主函数。服务负责为它的每一个服务都注册一个</span><span
lang=EN-US>service-main</span><span style='font-family:楷体_GB2312'>函数。主函数是服务程序的入口,在这里,</span><span
lang=EN-US>service-main</span><span style='font-family:楷体_GB2312'>函数的入口则必须用</span><span
lang=EN-US>SCM</span><span style='font-family:楷体_GB2312'>注册。</span></p>

<h4 style='FTEL:21.45pt'><span lang=EN-US>2. </span><span
style='font-family:黑体'>主函数、</span><span lang=EN-US>service-main</span><span
style='font-family:黑体'>和处理程序</span></h4>

<p class=MsoNormal><span style='font-family:宋体;color:black'>服务的主函数可以注册多个</span><span
lang=EN-US style='color:black'>service-main</span><span style='font-family:
宋体;color:black'>函数,它必须为所提供的每个服务注册一个</span><span lang=EN-US style='color:black'>service-main</span><span
style='font-family:宋体;color:black'>函数。服务程序可以在一个程序中提供许多服务,例如</span><span
lang=EN-US>&lt;windows&gt;\system32\ services.exe</span><span style='font-family:
宋体'>这个服务程序就包括</span><span lang=EN-US>Alerter</span><span style='font-family:
宋体'>、</span><span lang=EN-US> Application Management</span><span
style='font-family:宋体'>、</span><span lang=EN-US>Computer Browser</span><span
style='font-family:宋体'>和</span><span lang=EN-US>DHCP Client</span><span
style='font-family:宋体'>等服务。</span></p>

<p class=MsoNormal><span lang=EN-US style='color:black'>SCM</span><span
style='font-family:宋体;color:black'>现在为每一个应该启动的服务调用</span><span lang=EN-US
style='color:black'>service-main</span><span style='font-family:宋体;color:black'>函数。</span><span
lang=EN-US style='color:black'>Service-main</span><span style='font-family:
宋体;color:black'>函数包含服务的功能。</span><span lang=EN-US style='color:black'>service-main</span><span
style='font-family:宋体;color:black'>函数的一个重要任务是用</span><span lang=EN-US
style='color:black'>SCM</span><span style='font-family:宋体;color:black'>注册处理程序。</span></p>

<p class=MsoNormal><span style='font-family:宋体;color:black'>处理程序函数是服务程序的第三部分,处理程序必须对来自</span><span
lang=EN-US style='color:black'>SCM</span><span style='font-family:宋体;
color:black'>的事件作出响应。服务可以停止、暂停或重新开始,处理程序必须对这些事件做出响应。</span></p>

<p class=MsoNormal><span style='font-family:宋体;color:black'>一旦使用</span><span
lang=EN-US style='color:black'>SCM</span><span style='font-family:宋体;
color:black'>注册了处理程序,服务控制程序可以把停止、暂停和继续服务的请求发送给</span><span lang=EN-US
style='color:black'>SCM</span><span style='font-family:宋体;color:black'>。服务控制程序独立于</span><span
lang=EN-US style='color:black'>SCM</span><span style='font-family:宋体;
color:black'>和服务本身。在操作系统中有许多服务控制程序,以前介绍的</span><span lang=EN-US
style='color:black'>MMC Services</span><span style='font-family:宋体;color:black'>管理单元就是其中的一个。也可以编写自己的服务控制程序。一个比较好的服务控制程序是</span><span
lang=EN-US style='color:black'>SQL Server Service Manager</span><span
style='font-family:宋体;color:black'>,如图</span><span lang=EN-US style='color:
black'>32-3</span><span style='font-family:宋体;color:black'>所示。</span></p>

<p align=center><span lang=EN-US><img width=200 height=176
src="32/image003.jpg"></span></p>

<p align=center style='FTEL:8.15pt'><span style='font-family:宋体;color:black'>图</span><span
lang=EN-US style='color:black'>&nbsp; 32-3</span></p>

</div>
                <!-- page -->
                <div class="page" style="text-align: center">
                    <a href="100165792.htm">上一页</a>&nbsp;&nbsp;&nbsp;<a href="index.html">首页</a>&nbsp;&nbsp;&nbsp;<a href="100165794.htm">下一页</a>
                </div>
                <div style="margin: 0px auto; width: 700px; border: solid 1px #0b5f98;">
                    <div style="float: left; width: 16px; background-color: #0b5f98; color: White; padding: 1px;">
                        图书导读
                    </div>
                    <div style="float: right; width: 670px; text-align: left; line-height: 16pt; padding-left: 2px">
                        <!--导读-->
                        <h1 id="divCurrentNode2" style="color: #b83507; width: 100%; text-align: left; font-size: 12px; padding-left: 2px">当前章节:<a href='100165793.htm'><font color='red'>32.2.1  服务程序</font></a></h1>
                        <div id="divRealteNod2" style="padding-left: 2px">
                        <div style='float:left;width:49%'>·<a href='100165790.htm'>31.6  小结</a></div><div style='float:right;width:49%'>·<a href='100165791.htm'>32.1  Windows服务</a></div><div style='float:left;width:49%'>·<a href='100165792.htm'>32.2  Windows服务的体系结构</a></div><div style='float:right;width:49%'>·<a href='100165794.htm'>32.2.2  服务控制程序</a></div><div style='float:left;width:49%'>·<a href='100165795.htm'>32.2.3  服务配置程序</a></div><div style='float:right;width:49%'>·<a href='100165796.htm'>32.3  System.ServiceProcess命名空间</a></div></div>
                    </div>
                </div>
                </div>
        </div>
</body>
</html>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?