100165481.htm

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

HTM
99
字号


<!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>
	
        16.6.2  驻留应用程序
</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="100165481.htm">
                        16.6.2  驻留应用程序
                    </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='100165481.htm'><font color='red'>16.6.2  驻留应用程序</font></a></h1>
                        <div id="divRelateNode" style="padding-left: 2px">
                        <div style='float:left;width:49%'>·<a href='100165478.htm'>16.6  .NET Remoting的其他特性</a></div><div style='float:right;width:49%'>·<a href='100165479.htm'>16.6.1  配置文件(1)</a></div><div style='float:left;width:49%'>·<a href='100165480.htm'>16.6.1  配置文件(2)</a></div><div style='float:right;width:49%'>·<a href='100165482.htm'>16.6.3  类、接口和Soapsuds</a></div><div style='float:left;width:49%'>·<a href='100165483.htm'>16.6.4  异步远程调用</a></div><div style='float:right;width:49%'>·<a href='100165484.htm'>16.6.5  远程调用和事件</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-LEFT: 0cm; MARGIN-RIGHT: 0cm; FTEL: 8.15pt"><a ftel="_Toc507815563"><span lang="EN-US">16.6.2 &nbsp;</span></a><span style="FONT-FAMILY: 黑体">驻留应用程序</span></h3>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">迄今为止,所有的服务器示例都是运行在自驻留</span><span lang="EN-US">(self-hosted)</span><span style="FONT-FAMILY: 宋体">的</span><span lang="EN-US">.NET</span><span style="FONT-FAMILY: 宋体">服务器上。自驻留的服务器必须手动启动。</span><span lang="EN-US">.NET Remoting</span><span style="FONT-FAMILY: 宋体">服务器也可以在许多其他的应用程序类型中启动。在</span><span lang="EN-US">Windows</span><span style="FONT-FAMILY: 宋体">服务中,服务器可以在系统启动时自动启动,此外,进程可以与系统账户的证书一起运行。关于</span><span lang="EN-US">Windows</span><span style="FONT-FAMILY: 宋体">服务的内容,可以参阅第</span><span lang="EN-US">32</span><span style="FONT-FAMILY: 宋体">章。</span></p>
<h4 style="FTEL: 21.45pt"><span style="FONT-FAMILY: 黑体">利用</span><span lang="EN-US">ASP.NET</span><span style="FONT-FAMILY: 黑体">驻留远程服务器</span></h4>
<p class="MsoNormal"><span lang="EN-US">ASP.NET</span><span style="FONT-FAMILY: 宋体">对</span><span lang="EN-US">.NET Remoting</span><span style="FONT-FAMILY: 宋体">服务器有一种特殊支持。</span><span lang="EN-US">ASP.NET</span><span style="FONT-FAMILY: 宋体">可以自动启动远程服务器。与可执行的驻留应用程序相反,</span><span lang="EN-US">ASP.NET Remoting</span><span style="FONT-FAMILY: 宋体">在配置时使用不同的文件,但语法相同。</span></p>
<p class="MsoNormal"><span style="COLOR: black; FONT-FAMILY: 宋体">为了使用</span><span lang="EN-US" style="COLOR: black">Internet Information Server</span><span style="COLOR: black; FONT-FAMILY: 宋体">和</span><span lang="EN-US" style="COLOR: black">ASP.NET</span><span style="COLOR: black; FONT-FAMILY: 宋体">中的基础体系结构,必须创建一个从</span><span lang="EN-US" style="COLOR: black">System.MarshalByRefObject</span><span style="COLOR: black; FONT-FAMILY: 宋体">类派生出来的类,该类具有默认的构造函数。以前为服务器创建和注册信道所使用的代码就不需要了;这些代码所做的工作可以由</span><span lang="EN-US" style="COLOR: black">ASP.NET</span><span style="COLOR: black; FONT-FAMILY: 宋体">运行环境完成。此外,也必须在</span><span lang="EN-US" style="COLOR: black">Web</span><span style="COLOR: black; FONT-FAMILY: 宋体">服务器上创建一个虚拟目录,该目录映射到保存配置文件</span><span lang="EN-US" style="COLOR: black">web.config</span><span style="COLOR: black; FONT-FAMILY: 宋体">的目录上。远程类的程序集必须驻留在子目录</span><span lang="EN-US" style="COLOR: black">bin</span><span style="COLOR: black; FONT-FAMILY: 宋体">中。</span></p>
<p class="MsoNormal"><span style="COLOR: black; FONT-FAMILY: 宋体">可以使用</span><span lang="EN-US" style="COLOR: black">Internet Information Services MMC</span><span style="COLOR: black; FONT-FAMILY: 宋体">配置</span><span lang="EN-US" style="COLOR: black">Web</span><span style="COLOR: black; FONT-FAMILY: 宋体">服务器上的虚拟目录。选择</span><span lang="EN-US" style="COLOR: black">Default Web Site</span><span style="COLOR: black; FONT-FAMILY: 宋体">并打开</span><span lang="EN-US" style="COLOR: black">Action</span><span style="COLOR: black; FONT-FAMILY: 宋体">菜单,就可以创建一个新的虚拟目录。</span></p>
<p class="MsoNormal"><span lang="EN-US" style="COLOR: black">Web</span><span style="COLOR: black; FONT-FAMILY: 宋体">服务器上的配置文件</span><span lang="EN-US" style="COLOR: black">web.config</span><span style="COLOR: black; FONT-FAMILY: 宋体">必须放在虚拟</span><span lang="EN-US" style="COLOR: black">Web</span><span style="COLOR: black; FONT-FAMILY: 宋体">站点的主目录中。使用默认的</span><span lang="EN-US" style="COLOR: black">IIS</span><span style="COLOR: black; FONT-FAMILY: 宋体">配置,将被使用的信道会监听端口</span><span lang="EN-US" style="COLOR: black">80</span><span style="COLOR: black; FONT-FAMILY: 宋体">:</span></p>
<p class="2" style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">&lt;configuration&gt;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; &lt;system.runtime.remoting&gt;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;application&gt;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;service&gt;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;wellknown mode=&quot;SingleCall&quot; </span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; type=&quot;Wrox.ProCSharp.Remoting.Hello, RemoteHello&quot; </span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; objectUri=&quot;HelloService.soap&quot; /&gt;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/service&gt;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/application&gt;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; &lt;/system.runtime.remoting&gt;</span></p>
<p class="2" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">&lt;/configuration&gt;</span></p>
<p class="a3" style="MARGIN-TOP: 8.15pt; FTEL: 21.45pt"><span style="FONT-FAMILY: 黑体">提示:</span></p>
<p class="a1" style="FTEL: 21.45pt"><span style="FONT-FAMILY: 楷体_GB2312">如果远程对象驻留在</span><span lang="EN-US">IIS</span><span style="FONT-FAMILY: 楷体_GB2312">中,远程对象的名称就必须根据所使用的格式标识符类型</span><span lang="EN-US">(SOAP</span><span style="FONT-FAMILY: 楷体_GB2312">或二进制</span><span lang="EN-US">)</span><span style="FONT-FAMILY: 楷体_GB2312">以</span><span lang="EN-US">.soap</span><span style="FONT-FAMILY: 楷体_GB2312">或</span><span lang="EN-US">.bin</span><span style="FONT-FAMILY: 楷体_GB2312">结尾。</span></p>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">现在,客户使用下面的配置文件就可以连接远程对象。在这里必须指定远程对象的</span><span lang="EN-US">URL</span><span style="FONT-FAMILY: 宋体">,这个</span><span lang="EN-US">URL</span><span style="FONT-FAMILY: 宋体">包括</span><span lang="EN-US">Web</span><span style="FONT-FAMILY: 宋体">服务器</span><span lang="EN-US">localhost</span><span style="FONT-FAMILY: 宋体">、</span><span lang="EN-US">Web</span><span style="FONT-FAMILY: 宋体">应用程序的名称</span><span lang="EN-US">RemoteHello(</span><span style="FONT-FAMILY: 宋体">该名称是在创建虚拟</span><span lang="EN-US">Web</span><span style="FONT-FAMILY: 宋体">站点时指定的</span><span lang="EN-US">)</span><span style="FONT-FAMILY: 宋体">、远程对象</span><span lang="EN-US">HelloService.soap(</span><span style="FONT-FAMILY: 宋体">在文件</span><span lang="EN-US">web.config </span><span style="FONT-FAMILY: 宋体">中定义</span><span lang="EN-US">)</span><span style="FONT-FAMILY: 宋体">的</span><span lang="EN-US">URI</span><span style="FONT-FAMILY: 宋体">。因为端口号</span><span lang="EN-US">80</span><span style="FONT-FAMILY: 宋体">是</span><span lang="EN-US">HTTP</span><span style="FONT-FAMILY: 宋体">协议的默认端口,所以不必指定它,不指定</span><span lang="EN-US">&lt;channels&gt;</span><span style="FONT-FAMILY: 宋体">表示使用配置文件</span><span lang="EN-US">machine.config</span><span style="FONT-FAMILY: 宋体">中延迟加载的</span><span lang="EN-US">HTTP</span><span style="FONT-FAMILY: 宋体">信道:</span></p>
<p class="2" style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">&lt;configuration&gt;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; &lt;system.runtime.remoting&gt;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;application&gt;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;client url=&quot;http:/localhost/RemoteHello&quot;&gt;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;wellknown type=&quot;Wrox.ProCSharp.Remoting.Hello, RemoteHello&quot; </span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; url=&quot;http://localhost/RemoteHello/HelloService.soap&quot; /&gt;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/client&gt;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/application&gt;</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">&nbsp;&nbsp; &lt;/system.runtime.remoting&gt;</span></p>
<p class="2" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">&lt;/configuration&gt;</span></p>
<p class="a6" style="MARGIN-LEFT: 0cm; FTEL: 21.25pt"><span style="FONT-SIZE: 10.5pt; COLOR: black; FONT-FAMILY: 黑体">提示:</span></p>
<p class="a1" style="FTEL: 21.45pt"><span style="FONT-FAMILY: 楷体_GB2312">用</span><span lang="EN-US">ASP.NET</span><span style="FONT-FAMILY: 楷体_GB2312">驻留远程对象只支持已知对象</span><span lang="EN-US">!</span></p></div>
                <!-- page -->
                <div class="page" style="text-align: center">
                    <a href="100165480.htm">上一页</a>&nbsp;&nbsp;&nbsp;<a href="index.html">首页</a>&nbsp;&nbsp;&nbsp;<a href="100165482.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='100165481.htm'><font color='red'>16.6.2  驻留应用程序</font></a></h1>
                        <div id="divRealteNod2" style="padding-left: 2px">
                        <div style='float:left;width:49%'>·<a href='100165478.htm'>16.6  .NET Remoting的其他特性</a></div><div style='float:right;width:49%'>·<a href='100165479.htm'>16.6.1  配置文件(1)</a></div><div style='float:left;width:49%'>·<a href='100165480.htm'>16.6.1  配置文件(2)</a></div><div style='float:right;width:49%'>·<a href='100165482.htm'>16.6.3  类、接口和Soapsuds</a></div><div style='float:left;width:49%'>·<a href='100165483.htm'>16.6.4  异步远程调用</a></div><div style='float:right;width:49%'>·<a href='100165484.htm'>16.6.5  远程调用和事件</a></div></div>
                    </div>
                </div>
                </div>
        </div>
</body>
</html>

⌨️ 快捷键说明

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