.net框架下MashalByRefObject类的简单使用

“.net framework下的marshalByRefObject类允许在支持远程处理的应用程序中跨应用程序域边界访问对象”——MSDN。说简单点,通过继承marshalByRefObject类能够实现远程调用。

 

  继承MarshalByRefObject的类能够被远程调用。例如定义了如下的类:

 

public class AgentObj : MarshalByRefObject

    ...

    public static event RunEventHandler RunEvent;

    public static event StopEventHandler StopEvent;

    public void run()

    {

        ...

        RunEvent();

    }

    public void stop()

    {

        ...  

        StopEvent();

    }

 }

 

 注册通道和注册远程对象都通过配置文件完成。在服务器端需要设置事件句柄的值。

 

AgentObj.RunEvent += new AgentObj.RunEventHandler (OnRun) ;

AgentObj.StopEvent += new AgentObj.StopEventHandler (OnStop) ;

 

onRun 和 OnStop是两个服务器端的私有方法。此方法将会被客户端调用。注意:remoting调用的不是方法而是对方法的引用。

 

  在客户端通过ConfigurationManager.AppSettings["ServiceURL"] 获得key为ServiceURL的value。ServiceURL保存的是远程URL。

AgentObj app = (AgentObj)Activator.GetObject(typeof(AgentObj), uri.Replace("@machine",ip)) 激活在服务器端的对象。此时在客户端就可以调用AgentObj对象的方法来开始远程调用了。

 

app.run();

 

小结:.net 框架提供的MashalByRefObject类实现远程调用非常方便,在使用过程中还需考虑通道的注册方法:分为tcpChannel和httpChannel两种,对象注册方法,激活模式等。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值