zoukankan      html  css  js  c++  java
  • 关于MarshalByRefObject的解释

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

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

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

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

    当一个对象需要长途跋涉到另一个环境中时,需要将其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协议。 

  • 相关阅读:
    第二次作业循环语句
    c语言01次作业分支,顺序结构
    PAT 1027. Colors in Mars
    PAT 1026 Table Tennis
    PAT 1035 Password
    PAT 1038. Recover the Smallest Number
    PAT 1028 List Sorting (25)
    PAT 1041 Be Unique (20)
    PAT 1025 PAT Ranking
    1037. Magic Coupon
  • 原文地址:https://www.cnblogs.com/Freedom0619/p/4155215.html
Copyright © 2011-2022 走看看