MEF和WCF - AppDomain的问题

时间:2009-12-15 20:23:19

标签: c# wcf mef

我目前正在运行最新预览(#8),我正在使用WCF服务。我使用MEF读取WCF服务库。我注意到,每当我对从库中读取的应用程序中的某个库执行任何操作时,这些WCF库的AppDomain为1,但是每当WCF服务收到通知时,它的AppDomain为2?有没有办法确保获得通知的WCF服务与通过MEF读取的WCF服务相同(或在相同的AppDomain中)?

我基本上需要读取我的WCF服务上的配置数据,并确保数据始终存储在内存中,以便在收到任何通知时,我使用内存中的数据来帮助分析发送的内容。

1 个答案:

答案 0 :(得分:0)

我明白了。我只需要让我的应用程序通过MEF读取DLL,告诉DLL是服务主机。唯一的缺点是DLL必须告诉应用程序使用所有绑定和端点,以便应用程序可以设置正确的服务主机。

以下是我所做的一些示例(只是为了使它工作,它没有代码来询问DLL的设置):

foreach (MYINTERFACE mod in this.Modules) 
{
    ServiceHost serviceHost = new ServiceHost(
        mod, new Uri[] { new Uri("BINDING URL") });
    var binding = new NetTcpBinding();
    binding.Security.Mode = SecurityMode.None;
    var serviceEndpoint = serviceHost.AddServiceEndpoint(
        typeof(ENDPOINT TYPE), binding, "");
    serviceHost.Open();
    this.ServiceHosts = new List<ServiceHost>();
    this.ServiceHosts.Add(serviceHost);
}