高手们请进,关于MarshalByRefObject的疑惑 那为什么还要求[Serializable]序列化? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 “直接”操纵远端的那个object其实是远端序列化这个对象后发给你,你在本地反序列化后操作,操作完了再发给远端,和java的rmi一样,和你aspx页面的传送也是一样的道理,只不过它的序列化和反序列化由dotnet平台替你做了 是的,这个序列化可以建立一个服务器的对象的一个deep copy。 那么如果像我的例子那样有hashtable,并且里面加入了很多其他对象,那么这整个一串对象都会在客户端序列化么? 比如RemoteObject类含有一个方法 public HashTable FuncA(),当我们调用它时,是不是在客户端的内存中建立一个 HashTable 实例,与服务器创建的 HashTable 完全一样的(此Hashtable包含的对象实例同时也在客户机上创建)? Remoting的实现是在服务器端,在客户端只是有一个代理也就是说在客户端调用时,客户端只是做一个简单的转发,把该调用转发给服务器服务器处理完后返回序列化的概念是把一个对象保存成可存储的数据,在需要的时候根据这些数据就可以重构一个类似的对象 public HashTable FuncA(),HashTable是可以序列化的,客户端可以建立,但是这个序列化过程有没有把HashTable里面的内容也序列化了呢?如果序列化了,但是其中有无法序列化的对象的话,那这个对象也是不可序列化的 有点明白了,MarshalByRefObject的对象会在客户端建立一个代理,负责转发消息,这个类可以不必序列化;而转发的消息,也就是方法的参数或者方法的返回值,是必须序列化的。也就是说,如果上例方法中有一个hashtable参数或返回值,那么hashtable中加入的所有对象也都必须是序列化的。不知这样理解对不对? 对的,不过方法的参数或者方法的返回值也可以是MarshalByRefObject的对象 当方法的参数或者方法的返回值是MarshalByRefObject的对象时,传递的是对象的引用,即并没有在客户端创建一个copy实例,而是直接操纵服务器的对象。那么如果这个对象同时也是可序列化的呢? 是啊,如果这个类既按值封送,又按引用封送,会怎么样呢[Serializable]class RemoteObject: MarshalByRefObject [C#][Serializable]public abstract class MarshalByRefObject这个本来就是可以序列化的,不过它Marshal的是接口以及通讯的一些参数(用于建立代理用) 项目设想求助:想做一个血液透析的透析病人排班软件,如何让排班更快捷,求助 状态工作流Workflows Foundation出错,高手进来帮帮忙。 C#,循环的问题 VS2008下打包的项目 C#代码如何编译为dll文件 用C#知识怎么做?急。。。。 请大侠帮忙推荐一本经典的用c#三层结构做网站的书!谢谢! c# datagridview 使用SqlCommandBuilder更新数据 怎么不能更新到数据库中去 怎么解决 请问在C#中如何将价格显示在超市收银机的显示屏上??? C#低手求教简单的问题? 5个裤叉了,散点分! 如何在运行时获得程序集 如 System.dll 的路径?在线等待.
RemoteObject类含有一个方法 public HashTable FuncA(),当我们调用它时,是不是在客户端的内存中建立一个 HashTable 实例,与服务器创建的 HashTable 完全一样的(此Hashtable包含的对象实例同时也在客户机上创建)?
重构一个类似的对象 public HashTable FuncA(),HashTable是可以序列化的,客户端可以建立,但是这个
序列化过程有没有把HashTable里面的内容也序列化了呢?如果序列化了,但是其中
有无法序列化的对象的话,那这个对象也是不可序列化的
[Serializable]
class RemoteObject: MarshalByRefObject
[Serializable]
public abstract class MarshalByRefObject这个本来就是可以序列化的,不过它Marshal的是接口以及通讯的一些参数(用于建立
代理用)