我一直在http://msdn.microsoft.com/en-us/library/kwdt6w2k(v=VS.71).aspx处理.NET Remoting概述,我不了解一些事情,希望这里的某些人可以解释一下。
在构建基本.NET远程处理远程处理应用程序部分中,描述了三个程序集:
客户端应用
客户端应用程序包含一行(C#here)
RemotableType remotableObj = new RemotableType()
;
为了编译该行,客户端应用程序必须引用远程类型类库...对吗?并且,如果它具有对该类型定义的引用,为什么该行只是实例化进程中的RemotableType,就像它一样?我不明白RemotableType实例是如何在主机应用程序的应用程序域中加载的。
请指教(或指导我更多介绍性参考?)
答案 0 :(得分: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。