.net remoting中的一点收获

作了将近半年的项目,几乎都是复制粘贴,今天突然要配置一下.net remoting 中的设置,试了半天也老出错,最后找到这边文章,才稍微明白了一点。

Internet 信息服务 (IIS) 承载服务器激活的或客户端激活的对象时,通常在 Web.config 文件中注册这些对象;或者当直接承载这些对象时,在应用程序配置文件中注册它们。将应用程序承载的所有对象放置到 <service> 元素内。

当发布服务器激活的 (<wellknown>) 对象时,必须指示该对象是 SingleCall 对象还是 Singleton 对象、该对象的类型以及可以访问该对象的终结点。当发布客户端激活的 (<activated>) 对象时,必须只指示该对象的类型。以下示例说明如何为宿主应用程序域注册服务器端激活的对象和客户端激活的对象。

<configuration>
   <system.runtime.remoting>
      <application>
         <service>
           <wellknown
             mode = "SingleCall" 
             type = "myType,myAssembly"
             objectUri = "myType.soap"
           />
           <activated
             type="MyActivatedType, TypeAssembly"
           />
         </service>
      </application>
   </system.runtime.remoting>
</configuration>

<activated> 标记中的 type 属性指示该对象的完整类型名和程序集名称,与其在 <wellknown> 标记中出现一样。

用 IIS 配置服务器激活的类型

如果您想要在 Internet 信息服务中承载远程服务以利用 IIS 所提供的利益,则必须对配置文件稍作更改。您可以使用 Web.config 文件配置 IIS 以自动处理您的类型请求;或者可以通过使用 RemotingConfiguration.Configure 并传递配置文件的名称,在 Global.asax 文件中使用 Application_Start 处理程序加载您的配置文件。在这两种情况中:

  • 不使用 <application> 标记的 name 属性指定应用程序名称。您为承载可远程处理类型而创建的虚拟目录将是到您的类型的客户端的应用程序名称。
  • 不在 <application> 标记内使用 <channel> 标记的 port 属性指定一个端口。如果 IIS 创建新线程来为数目增加的请求提供服务,则可以创建新信道,但将引发一个异常,因为该端口已由原始信道使用。而是应在 Internet 服务管理器中指定要使用的端口。.NET 远程处理服务将在该端口上为您的可远程处理的类型处理任何请求。
  • 实例

  <system.runtime.remoting>   
  <application>
   <service>
   <wellknown mode="SingleCall" type="MITSUKOSHI.GC.MM.GCMMSOR00.Facade.GCMMSOR00Facade, GCMMSOR00Facade" objectUri="GCMMSOR00F.rem" />
   </service>
   <service>
    <wellknown mode="SingleCall"
         type="MITSUKOSHI.GC.MM.GCMMSOR00.Facade.GCMMSOR01Facade, GCMMSOR00Facade"
         objectUri="GCMMSOR01.rem" />
   </service>
   <service>
    <wellknown mode="SingleCall"
         type="MITSUKOSHI.GC.MM.GCMMMCOMM.UI.GCMMMCOMMFacade.MMFacade, MMFacade"
         objectUri="MM.rem" />
   </service>
   <channels>
    <channel ref="http server">
     <serverProviders>
      <formatter ref="soap" typeFilterLevel="Full"/>
      <formatter ref="binary" typeFilterLevel="Full"/>
     </serverProviders>
    </channel>
   </channels>
  </application>
 </system.runtime.remoting>

 

  <openMeisterEnterprise.invocation>
  <!-- OmInvoker タイプの登録 -->
  <invoker name="Remote" type="NECST.OME.AFW.Invocation.OmWellKnownServiceInvoker, OmAfwCore" base="http://Localhost/BusinessServer/" />
  <invoker name="Local"  type="NECST.OME.AFW.Invocation.OmLocalInvoker, OmAfwCore"/>

  <facade name="GCMMSOR00Facade" invoker="Remote" path="GCMMSOR00F.rem" />
  <facade name="GCMMSOR01Facade" invoker="Remote" path="GCMMSOR01.rem" />
  <facade name="MMFacade" invoker="Remote" path="MM.rem" /> 

 </openMeisterEnterprise.invocation>

web.config 中蓝色代表类型,也就是类名红色代表Assembly名称,就是在一个工程的属性里面那个Assembly的名字,如果两个类在同一个工程下,那么他们的assembly部分是相同的,不同的在于他们的类名。

app.config中用到的是他们的类名

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值