100165480.htm
来自「C#高级编程(第三版),顶死你们。。 。up」· HTM 代码 · 共 260 行 · 第 1/4 页
HTM
260 行
<h4 style="FTEL: 21.45pt"><span lang="EN-US">3. </span><span style="FONT-FAMILY: 黑体">已知对象的客户机配置</span></h4>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">对于已知对象而言,必须在客户机配置文件</span><span lang="EN-US">wellknown_Client.config</span><span style="FONT-FAMILY: 宋体">中指定程序集和信道。远程对象的类型可以在程序集</span><span lang="EN-US">RemoteHello.dll</span><span style="FONT-FAMILY: 宋体">中找到,</span><span lang="EN-US">Hi</span><span style="FONT-FAMILY: 宋体">是信道中对象的名称,远程类型</span><span lang="EN-US">Wrox.ProfessionalCSharp.Hello</span><span style="FONT-FAMILY: 宋体">的</span><span lang="EN-US">URI</span><span style="FONT-FAMILY: 宋体">是</span><span lang="EN-US">tcp://localhost:6791/Hi</span><span style="FONT-FAMILY: 宋体">。在客户机中,也使用</span><span lang="EN-US">TCP</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"><configuration></span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <system.runtime.remoting></span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <application FTEL="Client"></span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <client displayFTEL="Hello client for well-known objects"></span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <wellknown type = "Wrox.ProCSharp.Remoting.Hello, RemoteHello" </span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> url="tcp://localhost:6791/Hello/Hi" /></span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </client></span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <channels></span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <channel ref="tcp" displayFTEL="TCP Channel (HelloClient)" /></span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </channels></span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </application></span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </system.runtime.remoting></span></p>
<p class="2" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US"></configuration></span></p>
<p class="MsoNormal"><span style="COLOR: black; FONT-FAMILY: 宋体">配置文件中的一个小小改动是使用了</span><span lang="EN-US" style="COLOR: black">HTTP</span><span style="COLOR: black; FONT-FAMILY: 宋体">信道</span><span lang="EN-US" style="COLOR: black">(</span><span style="COLOR: black; FONT-FAMILY: 宋体">如</span><span lang="EN-US" style="COLOR: black">WellknownHttp_Client.config</span><span style="COLOR: black; FONT-FAMILY: 宋体">所示</span><span lang="EN-US" style="COLOR: black">)</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"> <client></span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <wellknown type="Wrox.ProCSharp.Remoting.Hello, RemoteHello" </span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> url="http://localhost:6792/Hello/Hi" /></span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </client></span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <channels></span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <channel ref="http" displayFTEL="HTTP Channel (HelloClient)" /></span></p>
<p class="2" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US"> </channels></span></p>
<h4 style="FTEL: 21.45pt"><span lang="EN-US">4. </span><span style="FONT-FAMILY: 黑体">客户激活的对象的服务器配置</span></h4>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">只需改变配置文件</span><span lang="EN-US">(</span><span style="FONT-FAMILY: 宋体">它可以在</span><span lang="EN-US">clientactivated_Server.config</span><span style="FONT-FAMILY: 宋体">中找到</span><span lang="EN-US">)</span><span style="FONT-FAMILY: 宋体">,就可以把服务器配置从服务器激活的对象改为客户激活的对象。在这里指定的是元素</span><span lang="EN-US"><service></span><span style="FONT-FAMILY: 宋体">的子元素</span><span lang="EN-US"><activated></span><span style="FONT-FAMILY: 宋体">。使用</span><span lang="EN-US"><activated></span><span style="FONT-FAMILY: 宋体">元素对服务器进行配置时,必须指定</span><span lang="EN-US">type</span><span style="FONT-FAMILY: 宋体">特性。元素</span><span lang="EN-US">application</span><span style="FONT-FAMILY: 宋体">的</span><span lang="EN-US">name</span><span style="FONT-FAMILY: 宋体">特性用于定义</span><span lang="EN-US">URI</span><span style="FONT-FAMILY: 宋体">:</span></p>
<p class="a6" style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US"><configuration></span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <system.runtime.remoting></span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <application FTEL="HelloServer"></span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <service></span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <activated type="Wrox.ProCSharp.Remoting.Hello, RemoteHello" /></span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </service></span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <channels></span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <channel ref="http" port="6788" </span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> displayFTEL="HTTP Channel (HelloServer)" /></span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <channel ref="tcp" port="6789" </span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> displayFTEL="TCP Channel (HelloServer)" /></span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </channels></span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </application></span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </system.runtime.remoting></span></p>
<p class="a6" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US"></configuration></span></p>
<h4 style="FTEL: 21.45pt"><span lang="EN-US">5. </span><span style="FONT-FAMILY: 黑体">客户激活的对象的客户端配置</span></h4>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">配置文件</span><span lang="EN-US">clientactivated_Client.config</span><span style="FONT-FAMILY: 宋体">使用</span><span lang="EN-US"><client></span><span style="FONT-FAMILY: 宋体">元素的</span><span lang="EN-US">url</span><span style="FONT-FAMILY: 宋体">特性和</span><span lang="EN-US"><activated></span><span style="FONT-FAMILY: 宋体">元素的</span><span lang="EN-US">type</span><span style="FONT-FAMILY: 宋体">特性定义客户激活的远程对象:</span></p>
<p class="a6" style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US"><configuration></span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <system.runtime.remoting></span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <application></span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <client url="http://localhost:6788/HelloServer" </span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> displayFTEL="Hello client for client-activated objects"></span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <activated type="Wrox.ProCSharp.Remoting.Hello, RemoteHello" /></span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </client></span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <channels></span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <channel ref="http" displayFTEL="HTTP Channel (HelloClient)" /></span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> <channel ref="tcp" displayFTEL="TCP Channel (HelloClient)" /></span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </channels></span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </application></span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> </system.runtime.remoting></span></p>
<p class="a6" style="MARGIN-TOP: 0cm; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US"></configuration></span></p>
<h4 style="FTEL: 21.45pt"><span lang="EN-US">6. </span><span style="FONT-FAMILY: 黑体">使用配置文件的服务器代码</span></h4>
<p class="MsoNormal"><span style="FONT-FAMILY: 宋体">在服务器代码中,必须使用</span><span lang="EN-US">RemotingConfiguration</span><span style="FONT-FAMILY: 宋体">类的静态方法</span><span lang="EN-US">Configure()</span><span style="FONT-FAMILY: 宋体">配置远程服务。这里定义的所有信道都已建立和实例化。如果要从服务器应用程序中了解信道配置的信息,则可以创建静态方法</span><span lang="EN-US">ShowActivatedServiceTypes()</span><span style="FONT-FAMILY: 宋体">和</span><span lang="EN-US">ShowWellKnownService Types()</span><span style="FONT-FAMILY: 宋体">,它们在载入和启动远程配置之后调用:</span></p>
<p class="a6" style="MARGIN-TOP: 8.15pt; MARGIN-LEFT: 21.45pt; MARGIN-RIGHT: 0cm; FTEL: 18.45pt"><span lang="EN-US">public static void Main(string[] args)</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US">{</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> RemotingConfiguration.Configure("HelloServer.exe.config");</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> Console.WriteLine("Application: " + RemotingConfiguration.ApplicationName);</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> ShowActivatedServiceTypes();</span></p>
<p class="2" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> ShowWellKnownServiceTypes();</span></p>
<p class="a6" style="MARGIN-LEFT: 21.45pt; FTEL: 18.45pt"><span lang="EN-US"> System.Console.WriteLine("press return to exit");</span></p>
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?