首页 新闻 会员 周边

急!remoting 创建复杂远程对象问题! 对象内嵌套若干集合类

1
悬赏园豆:100 [已解决问题] 解决于 2010-11-15 12:04

在网上找到许多关于remoting创建简单对象的帖子,但是不是我想要的。

想要的是当远程对象中有若干个集合类相互嵌套之后这样的远程对象要怎么创建。

我想要的情景之一:

public class TestRemoteObject:MarshalByRefObject
{

  private string _name;

  private double _age;

  private Hashtable _table;

  private IList _list;

  private TestPerson _person;

  /*get() set() ToString() 略。。。 构造略。。。*/

}

[Serializable]

class TestPerson{

  private Hashtable _table;

  private IList _list;

  private Queue _queue;

    /*

    get() set() ToString() 构造 略。。。。

    */

}

服务器端采用RegisterActivatedServiceType()方式。 在客户端创建此远程对象时如果将TestPerson类中的各个集合类实例化并赋值之后,远程对象无法创建。

各位大神,如有创建远程复杂对象的资料链接也可。非常感谢。。。

问题补充: 郁闷了,不知道是不是我给的分不够,还是我问的问题太白痴,怎么会没人回答呢。。。 听了网友推荐说是博客园的氛围很好的,怎么我这里一个路过的人也没有呢? 杯具
lovejava.li的主页 lovejava.li | 初学一级 | 园豆:100
提问于:2010-11-07 10:36
< >
分享
最佳答案
0

你把业务对象作为远程对象非常不智,假设你的TestRemoteObject 下有1w个TestPerson,那么服务器端和客户端都会创建相同TestRemoteObject,如果假设Actived方式是客户端释放,如果客户端不释放该对象,服务器这个对象也会一直存在,如果有N个客户端,服务器就很容易挂。

 

一般的RemotingObject都应该是Factory,如PersonalFactory,里面提供GetTestPersonal(searchcondition), 然后返回 TestPersonal列表对象,那么服务器只有Factory的对象,而TestPersonal只是作为数据传输到客户端。这样服务器压力就会小很多,因为TestPersonal对象只是暂时出现在服务器,传输完毕就释放掉。因此代码要变为

[Serializable]

public class TestRemoteObject  //沿用你的类名,

然后

public class TestRemoteObjectFactory:MarshalByRefObject

里面提供一个方法

TestRemoteObject GetTestRemoteObject()

收获园豆:100
沉默的糕点 | 小虾三级 |园豆:1786 | 2010-11-11 15:44
问题已经解决, 不过还是感谢您。 分全给你了。 谢谢您提出的这个问题, 回去改正。
lovejava.li | 园豆:100 (初学一级) | 2010-11-15 12:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册