博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于MarshalByRefObject的解释
阅读量:6506 次
发布时间:2019-06-24

本文共 842 字,大约阅读时间需要 2 分钟。

http://www.cnblogs.com/webfpc/archive/2010/03/10/1667101.html

 

首先了解一下不同应用程序域中的对象的通信方式有两种:

一种是跨应用程序域边界传输对象副本

一种是使用代理交换消息。

 

简单来讲,继承此类的对象可以跨越应用程序域边界被引用,甚至被远程引用.

当一个对象需要长途跋涉到另一个环境中时,需要将其marshal成一个可以传输的形态(比如在.NET Remoting中对象将被打包成一个serializable的ObjRef实例——这个ByRef就是指ObjRef这种形态);同理,当打包以后传输到目标地点,还要执行unmarshal的操作将其还原为内存中的对象

你实际上只拥有对这个对象的一个远程引用,虽然你可以调用它的方法,但实际上这些操作都是发生在远程的(就是前面讲过的过程)

 

别外解释一下WebService,

Web services 使用 XML 来编解码数据,并使用 SOAP(通信协议)来传输数据。大家可以发现WebService代理类的MarshalByRefObject对象的。

 

remoting 是MarshByReference的,可以传变量的引用,直接对服务器对象操作。速度快,适合intranet(企业内部互联网)。

 webservice 是MarshByValue的,必须传对象的值。速度慢,可以过FIREWALL,配置比较简单,适合internet(因特网)。

 

 

概括的说Remoting与Web Services的区别是:

(1)既支持TCP信道又支持HTTP信道,传输速度快
(2)即可传输XML的SOAP包又可传输二进制流,效率高
(3)Remoteing主要用于C/S结构项目
(4)不一定要依赖IIS服务器

一般来说,remoting是和平台相关的,需要客户和服务器都是.NET,但可配置特性比较好,可以自定义协议。web service可以做到跨平台通信,但必须采用SOAP协议。 

你可能感兴趣的文章
微软宣布Azure DNS全面通用
查看>>
“迁移策略+新容器运行时”应对有状态应用的冷热迁移挑战
查看>>
TensorFlow Serving 1.0的技术细节在Google I/O大会上公布
查看>>
使用Swoole加速Laravel(正式环境中)
查看>>
腾讯音乐赴美IPO仅11亿美元,疑受科技股抛售和中美贸易战影响
查看>>
mockjs让前端开发独立于后端
查看>>
延迟脚本的方式
查看>>
mysql外键的使用
查看>>
观察者模式实现非直接耦合
查看>>
[译]如何构建服务器端web组件,为何要构建?
查看>>
vue中实现单选
查看>>
mysql 5.6 原生Online DDL解析
查看>>
基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
查看>>
通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
查看>>
Swift 中的尾递归和蹦床
查看>>
关于Android中设置闹钟的相对比较完善的解决方案
查看>>
我有几个粽子,和一个故事
查看>>
回顾 Swift 多平台移植进度 #2
查看>>
JS创建对象模式及其对象原型链探究(一):Object模式
查看>>
原生js练习题---第五课
查看>>