[Remoting专题系列] 十二:配置文件

本文介绍如何通过配置文件来优化 .NET Remoting 的设置,提高应用灵活性。文中提供了 Server 和 Client 端的配置示例,并展示了如何利用 XML 配置文件替代硬编码参数。
None.gif使用配置文件替代硬编码可使应用程序拥有更高的灵活性,尤其是对分布式系统而言,意味着我们可以非常方便地调整分布对象的配置。Remoting 的配置文件比较简单,详细信息可以参考 MSDN。 
None.gif
None.gifms
-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.NETDEVFX.v20.chs/dv_fxgenref/html/52ebd450-de87-4a87-8bb9-6b13426fbc63.htm
None.gif

None.gif下面是个简单的例子,包含了 SAO 
/ CAO 的配置样例。
None.gif
None.gifServer.cs
None.gifBinaryClientFormatterSinkProvider cbin 
= new BinaryClientFormatterSinkProvider();
None.gifBinaryServerFormatterSinkProvider sbin 
= new BinaryServerFormatterSinkProvider();
None.gifsbin.TypeFilterLevel 
= TypeFilterLevel.Full;
None.gif
None.gifHashtable properties 
= new Hashtable();
None.gifproperties[
"port"= 801;
None.gif
None.gifTcpChannel channel 
= new TcpChannel(properties, cbin, sbin);
None.gifChannelServices.RegisterChannel(channel, 
false);
None.gif
None.gifRemotingConfiguration.RegisterWellKnownServiceType(
typeof(Data), "data", WellKnownObjectMode.Singleton);
None.gifRemotingConfiguration.ApplicationName 
= "test";
None.gifRemotingConfiguration.RegisterActivatedServiceType(
typeof(Data2));
None.gif
None.gifClient.cs
None.gifTcpChannel channel 
= new TcpChannel();
None.gifChannelServices.RegisterChannel(channel, 
false);
None.gifRemotingConfiguration.RegisterWellKnownClientType(
typeof(Data), "tcp://localhost:801/data");
None.gifRemotingConfiguration.RegisterActivatedClientType(
typeof(Data2), "tcp://localhost:801/test");
None.gif
None.gifData data 
= new Data();
None.gifdata.Test();
None.gif
None.gifData2 data2 
= new Data2();
None.gifdata2.Test();
None.gif
None.gif改成对应的配置文件,就是下面这个样子。
None.gif
None.gifServer.config
None.gif
<?xml version="1.0" encoding="utf-8" ?>
None.gif
<configuration>
None.gif  
<system.runtime.remoting>
None.gif    
<application name="test">
None.gif      
<channels>
None.gif        
<channel ref="tcp" port="801">
None.gif          
<clientProviders>
None.gif            
<formatter ref="binary"/>
None.gif          
</clientProviders>
None.gif          
<serverProviders>
None.gif            
<formatter ref="binary" typeFilterLevel="Full" />
None.gif          
</serverProviders>
None.gif        
</channel>
None.gif      
</channels>
None.gif      
<service>
None.gif        
<wellknown mode="Singleton" type="Learn.Library.Remoting.Data, Learn.Library" objectUri="data" />
None.gif        
<activated type="Learn.Library.Remoting.Data2, Learn.Library" />
None.gif      
</service>
None.gif    
</application>
None.gif  
</system.runtime.remoting>
None.gif
</configuration>
None.gif
None.gifClient.config
None.gif
<?xml version="1.0" encoding="utf-8" ?>
None.gif
<configuration>
None.gif  
<system.runtime.remoting>
None.gif    
<application>
None.gif      
<channels>
None.gif        
<channel ref="tcp">
None.gif          
<clientProviders>
None.gif            
<formatter ref="binary"/>
None.gif          
</clientProviders>
None.gif        
</channel>
None.gif      
</channels>
None.gif      
<client url="tcp://localhost:801/test">
None.gif        
<wellknown type="Learn.Library.Remoting.Data, Learn.Library" url="tcp://localhost:801/data" />
None.gif        
<activated type="Learn.Library.Remoting.Data2, Learn.Library" />
None.gif      
</client>
None.gif    
</application>
None.gif  
</system.runtime.remoting>
None.gif
</configuration>
None.gif
None.gifServer.cs
None.gifRemotingConfiguration.Configure(
"server.config"false);
None.gif
None.gifClient.cs
None.gifRemotingConfiguration.Configure(
"client.config"false);
None.gif
None.gifData data 
= new Data();
None.gifdata.Test();
None.gif
None.gifData2 data2 
= new Data2();
None.gifdata2.Test();
None.gif[最后修改由 yuhen

转载于:https://www.cnblogs.com/nbwzy/archive/2007/06/05/771529.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值