首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AppDomains之间的通信

AppDomains之间的通信
EN

Stack Overflow用户
提问于 2012-01-23 13:26:49
回答 1查看 5.8K关注 0票数 4

我们正在构建一个应用程序(WinForms,.NET 3.5),将“插件”DLL加载到二级AppDomain中。辅助AppDomain需要偶尔与第一个AppDomain通信(更具体地说,从主AppDomain中创建的对象调用或获取数据)。

我读过大部分关于AppDomains和他们之间沟通的材料。

到目前为止,我看到的唯一简单的解决方案是从MarshalByRefObject继承并将一个TransparentProxy传递到第二个AppDomain中,在代理上调用方法。

这种方法有其缺点(在框架类型(例如,或者已经继承了另一个类、静态字段/类等)的情况下,不总是能够从MBRO继承)。

由于当前的通信点是相当恒定的(只有2-3种需要通信的场景),所以我考虑使用以下属性创建一个简单的Mediator类:

  1. 将在第1 (Main) AppDomain中创建。
  2. 将只作为在主AppDomain中创建的“真实”对象的“消息传递者”。
  3. 将继承MBRO,并将对其的代理引用发送给第二AppDomain。

将调用这个代理对象上的方法,然后调用第一个AppDomain中“真实”对象上的方法。

我的问题--

  1. 这看上去像是一种逻辑设计吗?
  2. 更重要的是,WCF或任何其他通信框架中是否已经存在中介/消息传递类?这似乎是一个通用的概念,我想知道是否有类似的东西。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-23 13:42:10

除非您出于某些原因特别希望避免WCF,否则我建议您考虑一下。具体来说,可以使用NetNamedPipeBinding,它提供了使用命名管道在同一台计算机上进行通信的功能。您可以在这里找到更多信息:http://msdn.microsoft.com/en-us/library/system.servicemodel.netnamedpipebinding.aspx

此外,这里还有一个相当简洁的博客文章展示了它的用途 (从WMP插件到第三方应用程序)。

根据对应用程序的描述,可以在第一个AppDomain中建立WCF服务,然后从第二个AppDomain调用该服务。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8972352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档