.Net Remoting配置文件的用法

原创 2007年09月21日 08:40:00
 

How to use .Net Remoting Configuration files

 

 

.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

 

1. Ingo Rammer, Advanced .Net Remoting.

2. MSDN

 



Reference:

Net Remoting配置文件的用法.doc

  • 2009年04月25日 20:16
  • 427KB
  • 下载

使用.NET Remoting开发分布式应用——配置文件篇

http://www.csharpwin.com/csharpspace/3005.shtml
  • sage425
  • sage425
  • 2011年03月31日 18:22
  • 521

asp .net配置文件

  • 2013年09月02日 11:16
  • 274KB
  • 下载

ASP.NET配置文件Web.config详细解释

Web.config是asp.net应用程序中一个很重要的配置文件。本文从四个方面介绍了Web.config文件,一起来看。 AD: Web.config文件是一个...
  • zhanzkw
  • zhanzkw
  • 2011年08月22日 14:05
  • 444

ASP.NET配置文件Web.config 详解

  • 2010年05月27日 10:20
  • 74KB
  • 下载

asp.net web.config配置文件详解

web.config是一个XML文件,用来储存Asp.net Web应用程序的配置信息,包括数据库连接字符、身份安全验证等,可以出现在Asp.net Web应用程序服务器上的任何目录中,每个Web.c...
  • eric16
  • eric16
  • 2012年12月11日 14:51
  • 476
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:.Net Remoting配置文件的用法
举报原因:
原因补充:

(最多只允许输入30个字)