C# Remoting是.NET Framework提供的一种技术,用于在不同的应用程序域(AppDomain)之间进行通信,甚至跨越网络。它允许对象在不同的进程或机器上透明地互相调用方法,仿佛它们是在同一环境中。Remoting提供了多种通信模式和协议,使得分布式系统开发变得更加简单。 在IIS负载下的服务器配置中,我们通常会在IIS建立一个虚拟目录,比如`remotingtest`,指向实际的程序文件路径,如`d:\Test`。在这个目录下创建一个`bin`子目录,并将相关的DLL文件和配置文件(如`Web.config`)放入相应位置。配置文件中,`<system.runtime.remoting>`元素是定义Remoting行为的关键部分。 1. 服务器激活配置: - `<wellknown>`元素用于声明服务器上公开的远程对象。`mode`属性可以设置为`Singleton`(单例模式)或`SingleCall`(一次性调用),分别表示对象被创建一次并为所有客户端共享,或者每次调用都创建新对象。 - `objectUri`属性定义了对象的URI,客户端通过这个URI来访问服务。 - `type`属性指定了类型全名,包括命名空间、类名以及程序集名称。 例如: ```xml <wellknown mode="SingleCall" objectUri="RemotingTestSrv.rem" type="RemotingTestSrv.RemotingTestSrv, RemotingTestSrv" /> ``` 这里创建了一个SingleCall模式的对象,可以通过`RemotingTestSrv.rem` URI访问。 2. 客户端激活配置: - `<activated>`元素用于声明客户端需要激活的远程对象类型。客户端会根据配置自动创建这些类型的对象实例。 例如: ```xml <activated type="RemotingTestSrv.RemotingTestSrv, RemotingTestSrv" /> ``` 这表示客户端会激活`RemotingTestSrv`命名空间下的`RemotingTestSrv`类。 3. 渠道(Channels)配置: - `<channel>`元素定义了数据传输使用的通道,如HTTP或TCP。`ref`属性指定通道类型,`port`属性指定端口号。 例如: ```xml <channel port="9000" ref="http" /> <channel port="4242" ref="tcp" /> ``` 这设置了两个通道,一个用于HTTP(端口9000),另一个用于TCP(端口4242)。 4. 客户端配置: - `<client>`元素下的`<wellknown>`子元素用于指定客户端连接的远程对象,`url`属性定义了服务器的位置。 例如: ```xml <wellknown type="RemotingTestSrv.RemotingTestSrv, RemotingTestSrv" url="http://localhost/RemotingTest/RemotingTestSrv.rem" /> ``` 这表示客户端将连接到本地主机的`RemotingTestSrv.rem`服务。 C# Remoting的优点包括: - 支持多种通信协议和传输机制。 - 允许对象跨进程和网络透明通信。 - 提供丰富的配置选项和灵活性。 然而,随着.NET Framework的发展,Remoting逐渐被WCF(Windows Communication Foundation)取代,因为WCF提供了更统一、更安全、更高效的通信模型。尽管如此,在某些特定场景下,C# Remoting仍然是一个有效的选择,特别是在处理遗留系统或对性能有特殊需求的项目中。
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助