跨AppDomains的通信

时间:2011-12-07 16:19:24

标签: .net appdomain

有没有办法在AppDomain边界共享一个界面?也就是说,我可以使用共享接口在我的进程中的另一个AppDomain中引用实例吗?我知道可以使用带有命名管道的WCF,但我想知道是否有更直接(和更简单)的方式以面向对象的方式进行通信。

1 个答案:

答案 0 :(得分:2)

您可以创建第二个AppDomain并在AppDomain边界传递MarshalByRef对象(可能是继承您的接口)。这里有一个简单的例子:

http://msdn.microsoft.com/en-us/library/3c4f1xde.aspx

所以在示例中:

    AppDomain ad = AppDomain.CreateDomain("New domain");
    Worker remoteWorker = (Worker) ad.CreateInstanceAndUnwrap(
        Assembly.GetExecutingAssembly().FullName,
        "Worker");        

remoteWorker实际上是“新域”。调用域中的变量remoteWorker实际上是一个TransparentProxy,它将调用封送到另一个应用程序域中的实例。