动态修改客户端激活的.Net Remoting地址

本文介绍了一种通过泛型方法GetMarshalByRefObject<T>动态修改.NET Remoting客户端激活地址的技术,旨在避免代码修改并简化配置。同时提供了测试.NET Remoting可用性的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

维护一个老软件,其中用到许多.net remoting技术,最近客户要求能够实现动态修改某个客户端激活的.net remoting的地址,为了尽可能避免修改代码,实现了一个新的泛型方法GetMarshalByRefObject<T>来代替New创建远程对象——如果你用了工厂模式,那么就很容易修改了偷笑,该方法实现如下:

public static T GetMarshalByRefObject<T>(string url) where T : MarshalByRefObject
        {
            System.Runtime.Remoting.Activation.UrlAttribute attribute = new System.Runtime.Remoting.Activation.UrlAttribute(url);
            object[] activationAttributes = new object[] { attribute };
            return (T)Activator.CreateInstance(typeof(T), null, activationAttributes);
        }
其中T就是远程对象的类型,参数url是用户动态选择的地址。同时需要把客户端配置文件进行修改,移除相应的<activator/>。

注意采用客户端激活后就只能使用Activator.CreateInstance()而不能用Activator.GetObject()来创建远程对象了。


另如果需要测试某个.net remoting是否可用,可以使用如下的代码

try
            {
                tc = new TcpClient();
                IPAddress IP = IPAddress;
                int Port = port;
                
                //test connecte status                    
                tc.Connect(Ip, Port); // if not connected , will throw a error
                
                tc.Close();
            }
            catch (Exception ee)
            {
                //……
            }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值