如何使用传输对象副本的方法跨应用程序域

kinghawk 2007-01-16 01:12:55
不同应用程序域中的对象的通信方式有两种:一种是跨应用程序域边界传输对象副本,一种是使用代理交换消息。
问题是:第一种方法对象副本应该怎么做?最好可以给出简单的示例。
谢谢了……
...全文
194 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
viena 2007-01-16
  • 打赏
  • 举报
回复
@_@
北京的雾霾天 2007-01-16
  • 打赏
  • 举报
回复
我觉得楼可以参考MSDN的文档:
可远程处理的对象
可远程处理的对象可以使用代理在其应用程序域或上下文之外进行访问,也可以复制它们并且可以将这些副本传递到它们的应用程序域或上下文外;也就是说,某些可远程处理的对象通过引用传递,而另一些通过值传递。

可远程处理的对象是能在大范围的分布式环境中正常运行的对象。有两种主要的可远程处理的对象:

*值封送对象,它们被复制并从应用程序域传递。

*引用封送对象,将为其创建代理,而该代理由客户端用于远程访问对象。

值封送对象
值封送 (MBV) 对象声明它们的序列化规则(通过实现 ISerializable 来实现其自身的序列化,或者通过用 SerializableAttribute 修饰,该属性通知系统自动序列化该对象),但是不扩展 MarshalByRefObject。远程处理系统创建这些对象的完整副本并将副本传递到进行调用的应用程序域。一旦副本到达调用方的应用程序域内,对该副本的调用就是对该副本的直接调用。此外,作为参数传递的 MBV 对象也会通过值传递。除了声明 SerializableAttribute 属性或实现 ISerializable 之外,您不需要执行其他任何操作即可将类的实例跨越应用程序或上下文边界通过值进行传递.....

引用封送对象
引用封送 (MBR) 对象是至少扩展 System.MarshalByRefObject 的可远程处理的对象。根据已声明的激活类型,当客户端在它自己的应用程序域中创建 MBR 对象的实例时,.NET 远程处理基础结构在调用方的应用程序域中创建表示该 MBR 对象的代理对象,并向调用方返回对此代理的引用。然后,客户端将在此代理上进行调用。远程处理将封送这些调用,将其发送回起始应用程序域,并引发对实际对象的调用....
北京的雾霾天 2007-01-16
  • 打赏
  • 举报
回复
你上面说的副本应是指可以序列化的对象的反序列化后的内容.
如果是这样请参见:Serializable序列化或SerializableAttribute 类

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧