技术开发 频道

.Net Remoting配置文件的用法

【IT168技术文档】

  .NET Remoting configuration files allow you to specify parameters for most aspects of the remoting framework. These files can define tasks as simple as registering a channel and specifying a Type as a server-activated object, or can be as complex as defining a whole chain of IMessageSinks with custom properties.
 
  通过.Net Remoting配置文件可以为Remote Objects设定许多参数,如Channel、SAO服务端激活对象类型(Singleton/SingleCall)等等,方便以后在不用修改代码或重新编译的情况下,改变Remote Objects的行为。

1,如下是Server端典型的Remoting配置文件:

<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.runtime.remoting> <application> <channels> <channel ref="http"/> </channels> <service> <wellknown mode="Singleton" type="ComponentHost.CustomerManager, ComponentHost" objectUri="CustomerManager.soap" /> </service> </application> </system.runtime.remoting> </configuration>
  (1)当Remote Objects部署在Console/Windows Form、Windows Services下时(上面的配置文件channel需要设置port属性),相应Server端声明Remote Objects的代码可以简化为:
string filename = "server.exe.config"; RemotingConfiguration.Configure(filename);
  (2)如果Remote Objects部署在IIS时,根本就不需要任何代码声明。但是需要将上述配置文件命名为:web.config,并且将Remote Objects的DLL文件安置在web application的BIN文件夹。
 
  一般在实际应用中,基本上将Remote Objects部署在IIS环境中,好处是:
  (I)不需要编写额外的代码;
  (II)只要启动机器,远程对象就启动了。不需要你半夜三更跑到公司去登录,然后启动发生故障的远程服务;
  (III)容易与IIS认证服务进行集成。

  (3)如果需要声明多个远程对象,只需要在<service>与</service>之间添加相应的Remote Objects配置信息即可。
 
  (4)另外需要注意type属性为:<namespace>.<class>, <assembly>
 
2,如下是Client端典型的配置文件:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.runtime.remoting> <application> <client> <wellknown type="ComponentHost.CustomerManager,RemotingTest" url="http://localhost/ComponentHost/CustomerManager.soap"/> </client> </application> </system.runtime.remoting> </configuration>
  要注意type属性的设定:<namespace>.<class>, <assembly>
 
  如果Client通过SoapSuds产生Remote Objects的元数据assembly,或者是Shared Assembly(如Interface或Abstract Class),这里<assembly>则为上述assembly的名称。
 
  如果是通过SoapSuds产生Source code,则<assembly>为Client应用程序名(无exe后缀)。
 
  同时,Client端application调用Remote Objects时,可以省掉:注册通道、Activator.GetObject()/RemotingConfiguration.RegisterActivatedServiceType()等代码,取而代之的代码为:
string filename = "clientApplication.exe.config"; RemotingConfiguration.Configure(filename);
  下面通过new来创建Remote Object实例。

3,标准的.Net Remoting Configuration配置文件

  MSDN中有.Net Remoting Configuration file中全部元素/属性的完整的详细说明,需要的时候再查阅了。一般情况下,知道下面这些属性就够用了。
 
<configuration>
   <system.runtime.remoting>
      <application>
        <lifetime /> ―― 配置Remote Objects生存期的信息
        <channels /> ―― 配置与远程对象进行通信的信道
        <service />
        <client />
      </application>
   </system.runtime.remoting>
</configuration>
 
简单说明:
 
(1)<service> ―― 仅在Server端配置
 
      <service>
          <wellknown /> ―― 配置要发布的SAO(已知)对象的信息
          <activated /> ―― 配置要发布的CAO客户端激活对象的信息
      </service>
 
(2)<client> ―― 仅在Client端配置,与Server端<service>对应
 
         <client>
            <wellknown />
            <activated />
        </client>
 
  When using CAOs, the <client> property has to specify the URI to the server for all underlying <activated> entries.
 
  Note:When using CAOs from more than one server, you have to create several <client> properties in your configuration file.

  当调用CAO远程对象时,必须设定<client>的url属性。如果CAO来自不同的Server,则需要在配置文件中定义多个<client>。如下所示:

<client url="http://localhost/MyServer> <activated type="Server.MyRemote, Client" /> </client>
4,定制Client/Server Channel元素
 
(1)Client Side
<channel ref="http"> <clientProviders> <formatter ref="binary" /> </clientProviders> </channel>
  其中,formatter ref=binary or soap。formatter ref指要在通道上发送的消息格式,在此示例中为二进制,以增强性能。
 
(2)Server Side
<channel ref="http"> <serverProviders> <provider ref="wsdl" /> <formatter ref="binary" typeFileterLevel="Full" /> <formatter ref="soap" typeFileterLevel="Full" /> </serverProviders> </channels>
  typeFilterLevel表示当前自动反序列化级别,支持的值包括 Low(默认值)和 Full。

0
相关文章