MarshalByRefObject的主要用途是什么?

use*_*949 89 .net c#

MarshalByRefObject的目的是什么?

Mar*_*ell 101

远程处理; 它意味着在AppDomains或机器之间,而不是序列化和传输对象,对象停留在一端,而另一端创建代理.拦截对代理的所有方法调用,并且调用作为RPC wiki,msdn传输,导致该方法在另一台机器上执行(通常序列化参数和返回值).

注意:这可能会导致意外的"聊天"界面.对象/代理/ RPC方法现在不如具有明确服务边界的方法更可取; Microsoft现在推荐使用WCF wiki,msdn而不是远程处理.

  • @pavel - 它相当复杂,但至少我们清楚昂贵的电话在哪里.如果你的意思是*带宽*,有一些方法可以减轻这种情况. (5认同)

Dea*_*alk 28

另一个重要用途MarshalByRefObject是通过远程接收器链实现AOP.

如果您有从获得的对象ContextBoundObject(其本身派生MarshalByRefObject),你可以初始化它在同一的AppDomain内的单独的上下文,并有对象之间的通信自动通过远程处理代理系统-让你插入自定义接收到远程处理sink-链.

这最终允许您"装饰"对象的方法调用并实现跨领域服务,例如日志记录和安全性等.


Tal*_*ner 9

它的基本用途是支持两个应用程序域之间的对象访问,这些应用程序域可以通过远程处理在同一台计算机上或不同的计算机上.

看这里


小智 5

调用者应用程序的应用程序域之外的任何对象都应视为远程对象。应该从MarshalByRefObject类派生的远程对象。任何对象都可以通过从MarshalByRefObject. 没有继承自的对象MarshalByRefObject称为非远程对象。