Могу ли я обмениваться библиотеками DLL между доменами приложений на моем веб-сайте, управляемом IIS?

У нас есть веб-сервис, написанный на C #, размещенный под IIS. Мы используем AppDomains для разделения вызовов задачи - каждый вызов выполняется в отдельном домене. Код делает что-то вроде следующего:

public class Simplified
{
    public void Run()
    {
        AppDomain workDomain = AppDomain.CreateDomain(...);
        var workUnit = (IWorkUnit)workDomain.CreateInstanceAndUnwrap(...);
        workUnit.Execute(...);
        //Done - but keep the workUnit around in case we need it again
    }
}

Однако каждый AppDomain загружает отдельные копии наших dll, что составляет большую часть времени обработки. Я понимаю, что вы можете каким-то образом сделать сборки, загружающие домен, нейтральными, чтобы они были общими для всех доменов приложений. Как мне сделать это для нашей веб-службы IIS?


person Rob    schedule 01.11.2013    source источник
comment
Сборки, нейтральные к домену, - это то, что вы ищете   -  person Ondra    schedule 01.11.2013


Ответы (1)


Оказывается, это так же просто, как настроить

setup.LoaderOptimization = LoaderOptimization.MultiDomain;

в объекте AppDomainSetup, используемом для создания домена. Это отлично работает под IIS

person Rob    schedule 25.11.2013