.NET远程处理-客户端上的多通道注册
本文关键字:客户端 多通道 注册 程处理 处理 NET | 更新日期: 2023-09-27 18:29:14
我的应用程序有一个工作的HttpChannel,我可以调用远程服务器上的方法。
现在,在应用程序中,我需要注册另一个HttpChannel,它调用另一台服务器上的另一个方法。
但是,如果我不注销第一个通道,应用程序就会失败。
如何使这两个远程操作都成功地调用远程方法?
我们也遇到过类似的情况,决定只在需要时注册一个通道,然后在完成后立即注销它,类似于ADO.NET的断开连接模型,在该模型中,您可以连接、获取数据,然后断开连接。
根据文件:
- 频道是在每个应用程序域的基础上注册的。单个进程可以包含多个应用程序域。当过程结束时,它注册的所有频道都会自动销毁
- 通道名称在应用程序域中必须是唯一的。例如因为默认通道有名称,所以要注册两个HttpChannel对象的名称,则必须更改频道,然后再进行注册。下面的C#代码示例证明了这一点
IDictionary prop = new Hashtable();
prop["name"] = "http1";
prop["port"] = "9001";
ChannelServices.RegisterChannel(new HttpChannel(prop, null, null));
- 您不能再注册在特定端口上侦听的通道不止一次。即使频道在基于每个应用程序域同一台机器不能注册在同一台上侦听的同一频道端口
- 如果不确定端口是否可用,请使用0(零)在配置通道的端口和远程处理系统时将为您选择一个可用的端口
- 客户端可以与使用任何注册通道的远程对象。远程处理系统确保远程对象在以下情况下连接到正确的通道客户端尝试连接到该对象。客户负责用于在尝试之前调用ChannelServices.RegisterChannel与远程对象通信。如果它期望回调函数,客户端必须注册一个通道和一个端口
因此,Channel的名称在您的应用程序域中必须是唯一的,并且根据设计,一次只有一个http通道可以有一个端口。在同一个端口上不能有两个不同的通道。