进程一有类,class1 ,进程二有class2,class2定义如下:
class2
{
    static void Main()
    {
         class1 a = new class2();
    }
}
那么在进程2下创建的class1的对象,是在进程1的托管堆中还是在进程2的托管堆中?但是如果class1如下定义,采用类似工厂方法的模式,有一个工厂方法来返回一个class1的实例,(工厂类当然与class1处于同一进程下)而客户端进程2只是调用了这个工厂方法来返回一个class1的实例,那么这样的对象是在进程1种创建并管理的吗?
同时,看到有些关于服务器端对象管理的问题,在.net中使用的一个叫对象租赁期的模型来解决客户端对象的问题。不知道各位对我的这个问题有什么看法?

解决方案 »

  1.   

    使用跨进程对象两种常用方法:Remoting、WebService。“而客户端进程2只是调用了这个工厂方法来返回一个class1的实例”这句话是错的。进程2只能得到class1的实例的一个客户端代理(即使是在同一台服务器上),而不是class1类型的实例。异步使用Remoting有很多激活模式,“租赁期”是强迫性的、惩罚错误编程的客户端的,而不是用来解决正常设计逻辑的。
      

  2.   

    如果Remoting使用http协议(为了方便穿越防火墙、SSL加密等),根据msdn上所说,其实很慢,而WebService其实要快很多。