lys*_*cid 4 .net c# wcf appdomain marshalling
我们正在构建一个应用程序(WinForms,.NET 3.5),它将"插件"DLL加载到辅助AppDomain中.辅助AppDomain需要偶尔与第一个AppDomain通信(更具体地说,从主AppDomain中创建的对象调用或获取数据).
我已经阅读了有关AppDomains的大部分内容以及它们之间的通信.
到目前为止,我见过的唯一简单的解决方案是继承MarshalByRefObject并将TransparentProxy传递到第二个AppDomain,在Proxy上调用方法.
此方法有其缺点(例如,在框架类型的情况下,或者从已经从其他类继承的类型,静态字段/类等等,并不总是可以从MBRO继承).
由于当前的通信点非常不变(只有2-3个需要通信的场景),我考虑创建一个具有以下属性的简单Mediator类:
将调用此代理对象上的方法,然后调用第一个AppDomain中"真实"对象上的方法.
我的问题 -
小智 5
除非你因某种原因特意想避免使用WCF,否则我建议你去看看它.具体来说,您可以使用NetNamedPipeBinding,它使用命名管道在同一台计算机上进行通信.您可以在此处找到更多信息:http: //msdn.microsoft.com/en-us/library/system.servicemodel.netnamedpipebinding.aspx
同样,这里有一个相当简洁的博客文章,展示了它的用途(从WMP插件到第三方应用程序).
根据您对应用程序的描述,您可以在第一个AppDomain中建立WCF服务,然后从第二个AppDomain调用该服务.