2010-07-09 82 views
2

我一直在通过.NET Remoting Overview在http://msdn.microsoft.com/en-us/library/kwdt6w2k(v=VS.71).aspx上工作,我不明白几件事情,希望有人能在这里说明一些事情。不明白远程处理激活

在构建基本.NET远程处理远程处理应用程序部分中,三个组件被描述:

  1. 一个远程的类型,生活在一个类库.DLL
  2. 主机的应用程序,与所述基准 远程的型类库
  3. 一个客户端应用程序

    客户端应用程序包含像(C#这里)

    一个线

    RemotableType remotableObj = new RemotableType();

为了编译该行,客户端应用程序必须具有对远程类型类库的引用......对吧?而且,如果它具有对该类型定义的此引用,那么为什么不是该实例化RemotableType进程中的内容呢?我不明白如何在主机应用程序的应用程序域中加载RemotableType实例。

请指教(或直接我更入门参考?)

+3

远程处理是遗留选项,并已被WCF所取代 - 如果您正在构建新的应用程序,最好使用WCF。 – Oded 2010-07-09 15:41:23

+0

还要注意您正在查看.NET 1.1文档。除非使用.NET 1.1,否则应该使用http://msdn.microsoft.com/en-us/library/kwdt6w2k.aspx。 – 2010-07-09 16:14:45

+0

是的,我坚持使用.NET 1.1,但感谢提示。 – 2010-07-13 14:30:37

回答

1

是,客户端必须包含远程类的类型信息的程序集的引用。这里的标准做法是创建一个单独的程序集,其中只包含远程类的接口。客户端和服务器都引用程序集。服务器包含远程类的实现,但客户端只能看到该接口。

客户端在服务器上实例化远程对象的原因是由于app.config文件中包含的条目。

<configuration> 
    <system.runtime.remoting> 
     <application> 
     <client 
      url = "http://www.cpandl.com" 
      displayName="MyApplication" 
     > 
      <activated 
       type = "myClientActivatedType,myAssembly" 
      /> 
     </client> 
     </application> 
    </system.runtime.remoting> 
</configuration> 

这里的关键信息是<activated>标签。有关更多信息,请参阅此article