Remoting配置文件的用法

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认证服务进行集成;(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(如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。

本文转载:http://www.cnblogs.com/rickie/archive/2004/10/10/50392.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏逸鹏说道

C#进阶系列——WebApi接口测试工具:WebApiTestClient

前言:这两天在整WebApi的服务,由于调用方是Android客户端,Android开发人员也不懂C#语法,API里面的接口也不能直接给他们看,没办法,只有整个...

37070
来自专栏偏前端工程师的驿站

让VIM支持Python2 by update-alternatives

前言  Ubuntu 16+中$ sudo apt install vim所安装的vim只支持Python3,但很多插件如YCM和powerline均需要Pyt...

28280
来自专栏从零开始学自动化测试

python测试开发django-4.获取url参数和name的作用

如打开博客园按时间分类标签页【https://www.cnblogs.com/yoyoketang/archive/2018/10.html】,里面是时间参数是...

7910
来自专栏linux、Python学习

案例+解读,来自有道大神的17个常用Linux命令深度解析

命令后带(Mac)标记的,表示该命令在Mac OSX下测试,其它的在Debian下测试。

16560
来自专栏ascii0x03的安全笔记

SEED缓冲区溢出实验笔记

缓冲区溢出实验(Linux 32位) 参考教程与材料:http://www.cis.syr.edu/~wedu/seed/Labs_12.04/Software...

46050
来自专栏用户2442861的专栏

修改npm全局安装模式的路径

刚学nodeJS不久,很纳闷为什么全局安装的模块在 'node安装目录/node_modules‘ 中没找到!后来仔细看了下安装成功后的信息,才发现原来是自动安...

10620
来自专栏施炯的IoT开发专栏

《101 Windows Phone 7 Apps》读书笔记-NOTEPAD

课程内容 Ø 读写文件     Notepad提供了快速、高效的记录手段,它具有以下的特点: Ø 自动保存,使得速记变得快速而简单。 Ø 提供每条笔记的快...

199100
来自专栏Golang语言社区

《GO IN ACTION》读后记录:GO的并发与并行

一、使用goroutine来运行程序 1. Go的并发与并行 Go的并发能力,是指让某个函数独立于其他函数运行的能力。当为一个函数创建goroutine时,该函...

46570
来自专栏逆向技术

32位汇编第六讲,OllyDbg逆向植物大战僵尸,快速定位阳光基址

      32位汇编第六讲,OllyDbg逆向植物大战僵尸,快速定位阳光基址 一丶基址,随机基址的理解 首先,全局变量的地址,我们都知道是固定的,是在PE文件...

38170
来自专栏Java后端技术

关闭Eclipse的控制台console自动跳出

  在eclipse中进行开发,尤其是在后台有项目运行的时候,当有log或者错误需要打印到console中时,控制台就会被自动弹出,恰好这时候你又在编写代码,就...

9720

扫码关注云+社区

领取腾讯云代金券