使用.NET Remoting开发分布式应用——配置文件篇
2005-11-17 10:09
363 查看
使用.NET Remoting开发分布式应用——配置文件篇
作者:Terrylee
我们已经知道可以通过编码的方式配置服务器通道和远程客户机,除此之外,还可以使用配置文件对服务器通道和远程客户机进行配置。使用远程客户机和服务器对象的配置文件的优点在于,用户无需修改任何一行代码,也无需进行重新编译,便可以配置通道和远程对象。
.NET提供了Remoting配置文件的标准,基于XML格式。
一.配置文件
1.服务器配置文件:
先来看一个服务器配置文件的实例,然后我再具体解释一下其中的内容:
1<?xml version="1.0" encoding="utf-8" ?>
2<configuration>
3 <system.runtime.remoting>
4 <application>
5 <service>
6 <wellknown
7 mode="Singleton"
8 type="RemotingConfigDemo.HelloServer, General"
9 objectUri="SayHello" />
10 </service>
11 <channels>
12 <channel port="8086" ref="http"/>
13 </channels>
14 </application>
15 </system.runtime.remoting>
16</configuration>
17
在服务器配置文件中,最外层的元素是<configuration>,这是所有配置文件的共性(包括Web.config配置文件)。
所有的远程配置项必须作为子元素添加到<system.runtime.remoting>下面。
<application>元素使用name属性指定了服务器的名称,该应用程序提供了服务,并请求了服务的通道配置。
应用程序所提供的服务必须作为<service>的子元素列出,这就是远程对象本身,可以使用<wellknown>元素来指定远程对象,mode属性可以指定为SingleCall或Singleton,在后面我们会说到。同时用type属性来指定已经定义了类型的对象,只需要指定程序集的名称即可,不需要扩展名DLL。
在<channels>元素中,我们定义了服务器要使用的通道,用ref属性可以引用一个预先定义好的通道,同时必须使用port属性为通道分配端口,因为服务器必须有一个客户机所熟知的端口号,以便客户机可以利用该端口号。这些通道在机器配置文件中已经定义预先定义了6个,我们可以打开Machine.config文件看一下,默认的路径为%SystemRoot%\Microsoft.NET\Framework\<vx.x.x>\CONFIG。
2.客户机配置文件:
典型的客户机配置文件如下所示:
1<?xml version="1.0" encoding="utf-8" ?>
2<configuration>
3 <system.runtime.remoting>
4 <application>
5 <client>
6 <wellknown type="RemotingConfigDemo.HelloServer, General" url="http://localhost:8086/SayHello" />
7 </client>
8 <channels>
9 <channel ref="http" port="0"></channel>
10 </channels>
11 </application>
12 </system.runtime.remoting>
13</configuration>
14
同服务器配置文件的元素一样,不同的是这次是客户机通道,所以它不需要指定端口号,我们可以暂时指定为0号。其他的保持不变。
二.示例程序
1.远程对象代码:
1using System;
2using System.Text;
3using System.Runtime.Remoting.Lifetime;
4
5namespace RemotingConfigDemo
6<?xml version="1.0" encoding="utf-8" ?>
2<configuration>
3 <system.runtime.remoting>
4 <application>
5 <service>
6 <wellknown
7 mode="Singleton"
8 type="RemotingConfigDemo.HelloServer, General"
9 objectUri="SayHello" />
10 </service>
11 <channels>
12 <channel port="8086" ref="http"/>
13 </channels>
14 </application>
15 </system.runtime.remoting>
16</configuration>
17
服务器代码:
1using System;
2using System.Runtime.Remoting;
3using System.Runtime.Remoting.Channels;
4using System.Runtime.Remoting.Channels.Tcp;
5using System.Runtime.Remoting.Channels.Http;
6
7namespace RemotingConfigDemo
8
3.客户机
配置文件:
1<?xml version="1.0" encoding="utf-8" ?>
2<configuration>
3 <system.runtime.remoting>
4 <application>
5 <client>
6 <wellknown type="RemotingConfigDemo.HelloServer, General" url="http://localhost:8086/SayHello" />
7 </client>
8 <channels>
9 <channel ref="http" port="0"></channel>
10 </channels>
11 </application>
12 </system.runtime.remoting>
13</configuration>
14
客户机代码:
1using System;
2using System.Runtime.Remoting;
3using System.Runtime.Remoting.Channels;
4using System.Runtime.Remoting.Channels.Tcp;
5using System.Runtime.Remoting.Channels.Http;
6using System.IO;
7
8namespace RemotingConfigDemo
9
三.需要注意的几点
1.程序集的名称常常会和存储程序集的文件的名称相混淆。程序集的名称是HelloServer,而程序集文件的名称是HelloServer.dll。使用方法调用时,需要将程序集的名称作为参数,而不需要使用文件的扩展名。
2.必须将远程对象类的程序集复制到服务程序的可执行文件的目录中,或是通过添加DLL引用。因为通过读取配置文件,将实例化远程框架中的这个远程对象类,程序集必须位于能够被找到的位置。
3.一般来说,我们可以让应用程序的配置文件名和可执行文件的文件名相同,其后跟有文件扩展名.config。
4.如果用App.config作为服务器或客户机配置文件,要注意App.config文件在运行后自动变为[应用程序名].exe.config。
5.为了防止配置文件找不到,我们可以在项目的属性中设置,在生成后事件里面填写拷贝目录语句:
copy "$(ProjectDir)\*.config" "$(TargetDir)"
如图:
AppDomain.CurrentDomain.SetupInformation.ConfigurationFile
7.最后一点,也是最重要的一点,推荐在项目中使用配置文件!
作者:Terrylee
我们已经知道可以通过编码的方式配置服务器通道和远程客户机,除此之外,还可以使用配置文件对服务器通道和远程客户机进行配置。使用远程客户机和服务器对象的配置文件的优点在于,用户无需修改任何一行代码,也无需进行重新编译,便可以配置通道和远程对象。
.NET提供了Remoting配置文件的标准,基于XML格式。
一.配置文件
1.服务器配置文件:
先来看一个服务器配置文件的实例,然后我再具体解释一下其中的内容:
1<?xml version="1.0" encoding="utf-8" ?>
2<configuration>
3 <system.runtime.remoting>
4 <application>
5 <service>
6 <wellknown
7 mode="Singleton"
8 type="RemotingConfigDemo.HelloServer, General"
9 objectUri="SayHello" />
10 </service>
11 <channels>
12 <channel port="8086" ref="http"/>
13 </channels>
14 </application>
15 </system.runtime.remoting>
16</configuration>
17
在服务器配置文件中,最外层的元素是<configuration>,这是所有配置文件的共性(包括Web.config配置文件)。
所有的远程配置项必须作为子元素添加到<system.runtime.remoting>下面。
<application>元素使用name属性指定了服务器的名称,该应用程序提供了服务,并请求了服务的通道配置。
应用程序所提供的服务必须作为<service>的子元素列出,这就是远程对象本身,可以使用<wellknown>元素来指定远程对象,mode属性可以指定为SingleCall或Singleton,在后面我们会说到。同时用type属性来指定已经定义了类型的对象,只需要指定程序集的名称即可,不需要扩展名DLL。
在<channels>元素中,我们定义了服务器要使用的通道,用ref属性可以引用一个预先定义好的通道,同时必须使用port属性为通道分配端口,因为服务器必须有一个客户机所熟知的端口号,以便客户机可以利用该端口号。这些通道在机器配置文件中已经定义预先定义了6个,我们可以打开Machine.config文件看一下,默认的路径为%SystemRoot%\Microsoft.NET\Framework\<vx.x.x>\CONFIG。
2.客户机配置文件:
典型的客户机配置文件如下所示:
1<?xml version="1.0" encoding="utf-8" ?>
2<configuration>
3 <system.runtime.remoting>
4 <application>
5 <client>
6 <wellknown type="RemotingConfigDemo.HelloServer, General" url="http://localhost:8086/SayHello" />
7 </client>
8 <channels>
9 <channel ref="http" port="0"></channel>
10 </channels>
11 </application>
12 </system.runtime.remoting>
13</configuration>
14
同服务器配置文件的元素一样,不同的是这次是客户机通道,所以它不需要指定端口号,我们可以暂时指定为0号。其他的保持不变。
二.示例程序
1.远程对象代码:
1using System;
2using System.Text;
3using System.Runtime.Remoting.Lifetime;
4
5namespace RemotingConfigDemo
6<?xml version="1.0" encoding="utf-8" ?>
2<configuration>
3 <system.runtime.remoting>
4 <application>
5 <service>
6 <wellknown
7 mode="Singleton"
8 type="RemotingConfigDemo.HelloServer, General"
9 objectUri="SayHello" />
10 </service>
11 <channels>
12 <channel port="8086" ref="http"/>
13 </channels>
14 </application>
15 </system.runtime.remoting>
16</configuration>
17
服务器代码:
1using System;
2using System.Runtime.Remoting;
3using System.Runtime.Remoting.Channels;
4using System.Runtime.Remoting.Channels.Tcp;
5using System.Runtime.Remoting.Channels.Http;
6
7namespace RemotingConfigDemo
8
3.客户机
配置文件:
1<?xml version="1.0" encoding="utf-8" ?>
2<configuration>
3 <system.runtime.remoting>
4 <application>
5 <client>
6 <wellknown type="RemotingConfigDemo.HelloServer, General" url="http://localhost:8086/SayHello" />
7 </client>
8 <channels>
9 <channel ref="http" port="0"></channel>
10 </channels>
11 </application>
12 </system.runtime.remoting>
13</configuration>
14
客户机代码:
1using System;
2using System.Runtime.Remoting;
3using System.Runtime.Remoting.Channels;
4using System.Runtime.Remoting.Channels.Tcp;
5using System.Runtime.Remoting.Channels.Http;
6using System.IO;
7
8namespace RemotingConfigDemo
9
三.需要注意的几点
1.程序集的名称常常会和存储程序集的文件的名称相混淆。程序集的名称是HelloServer,而程序集文件的名称是HelloServer.dll。使用方法调用时,需要将程序集的名称作为参数,而不需要使用文件的扩展名。
2.必须将远程对象类的程序集复制到服务程序的可执行文件的目录中,或是通过添加DLL引用。因为通过读取配置文件,将实例化远程框架中的这个远程对象类,程序集必须位于能够被找到的位置。
3.一般来说,我们可以让应用程序的配置文件名和可执行文件的文件名相同,其后跟有文件扩展名.config。
4.如果用App.config作为服务器或客户机配置文件,要注意App.config文件在运行后自动变为[应用程序名].exe.config。
5.为了防止配置文件找不到,我们可以在项目的属性中设置,在生成后事件里面填写拷贝目录语句:
copy "$(ProjectDir)\*.config" "$(TargetDir)"
如图:
AppDomain.CurrentDomain.SetupInformation.ConfigurationFile
7.最后一点,也是最重要的一点,推荐在项目中使用配置文件!
相关文章推荐
- 使用.NET Remoting开发分布式应用——配置文件篇
- .NET开发使用Winform的配置文件App.config
- 使用.NET Remoting开发分布式应用——基于租约的生存期
- 使用.NET Remoting开发分布式应用——基于租约的生存期
- 使用.NET Remoting开发分布式应用——基于租约的生存期(转载)
- eclipse + JBoss 5 + EJB3开发指南(5):使用配置文件发布Session Be
- Remoting技术使用配置文件示例
- eclipse + JBoss 5 + EJB3开发指南(5):使用配置文件发布Session Bean
- Log4j 2.0在开发中的高级使用详解—配置简单的文件输出(四)
- CodeProject - 使用.NET配置文件appSettings元素的File属性
- iOS开发:给项目工程里面添加Podfile配置文件,以及CocoaPods的简单使用
- 使用.NET读取XML文件,.net开发,.net,ASP.NET
- 【转】如何使用.NET配置文件by沐枫小筑
- 配置java开发环境,使用cmd编译java文件
- Java Web开发使用配置文件链接数据库
- .NET 2.0中,使用ConfigureManager读写配置文件
- .NET 配置文件简单使用
- 使用websphere开发J2EE项目时,在服务器配置文件->“环境”->“类路径”中添加的ORACLE的JDBC文件classes12.zip文件是否有效呢?
- iOS开发证书与配置文件的使用
- .net remoting 配置文件