.Net Remoting配置文件的用法

How to use .Net Remoting Configuration files<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

 

.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设定许多参数,如ChannelSAO服务端激活对象类型(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 FormWindows Services下时(上面的配置文件channel需要设置port属性),相应Server端声明Remote Objects的代码可以简化为:

string filename = "server.exe.config";

RemotingConfiguration.Configure(filename);

 

2)如果Remote Objects部署在IIS时,根本就不需要任何代码声明。但是需要将上述配置文件命名为:web.config,并且将Remote ObjectsDLL文件安置在web applicationBIN文件夹。

 

一般在实际应用中,基本上将Remote Objects部署在IIS环境中,好处是(I)不需要编写额外的代码;(II)只要启动机器,远程对象就启动了。不需要你半夜三更跑到公司去登录,然后启动发生故障的远程服务;(III)容易与IIS认证服务进行集成;(IV)可能还有更多优点,我现在没有想到。

 

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(如InterfaceAbstract Class),这里<assembly>则为上述assembly的名称。

如果是通过SoapSuds产生Source code,则<assembly>Client应用程序名(无exe后缀)。

 

同时,Clientapplication调用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.

NoteWhen 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元素

1Client Side

<channel ref="http">

    <clientProviders>

          <formatter ref="binary" /> 

    </clientProviders>

</channel>

其中,formatter ref=”binary” or “soap”formatter ref指要在通道上发送的消息格式,在此示例中为二进制,以增强性能。

 

2Server Side

<channel ref="http">

    <serverProviders>

          <provider ref="wsdl" />

          <formatter ref="binary" typeFileterLevel="Full" />

          <formatter ref="soap" typeFileterLevel="Full" />

    </serverProviders>

</channels>  

typeFilterLevel表示当前自动反序列化级别,支持的值包括 Low(默认值)和 Full



Reference:

1. Ingo Rammer, Advanced .Net Remoting.

2. MSDN

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值