MEF и WCF — проблемы с AppDomain

В настоящее время я запускаю последнюю предварительную версию (# 8) и работаю со службами WCF. Я использую MEF для чтения в библиотеках службы WCF. Я заметил, что всякий раз, когда я выполняю какую-либо операцию с одной из библиотек из приложения, которое читает в библиотеках, эти библиотеки WCF имеют AppDomain 1, но всякий раз, когда служба WCF получает уведомление, она имеет AppDomain 2? Есть ли способ убедиться, что служба WCF, которая получает уведомление, совпадает (или находится в том же домене приложения), что и та, которая была прочитана через MEF?

В основном мне нужно прочитать данные конфигурации в моей службе WCF и убедиться, что данные всегда хранятся в памяти, поэтому, когда приходит какое-либо уведомление, я использую данные в памяти, чтобы помочь проанализировать то, что было отправлено.


person Travyguy9    schedule 15.12.2009    source источник


Ответы (1)


Я понял. Мне просто нужно, чтобы мое приложение читало библиотеки DLL через MEF, чтобы сообщить 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);
}
person Travyguy9    schedule 16.12.2009