2012-05-14 4 views
0

Мне нужно создать несколько AppDomains на моем COM-сервере COM в .NET (это расширение пространства имен Windows Explorer).Применение LoaderOptimization для обрабатываемых COM-серверов

В моем тестовом консольном приложении я могу создать 10 доменов + окна WPF за 40 секунд, что неприемлемо. Добавление LoaderOptimization.MultiDomainHost ускоряет это до 2-5 секунд, что нормально.

Тем не менее, нет никакого способа Main в COM-сервер, и задание LoaderOptimization в AppDomainSetup влияет только на нагрузку 2 или более дополнительных доменов (то есть первый дополнительный AppDomain начинается 3-4 секунды, другие в 0,1-0,3 сек)

Итак, Могу ли я указать LoaderOptimization для COM-сервера в процессе, и если да, то как?

+0

Я не уверен, что писать расширение пространства имен в управляемом коде - это путь. Все может измениться, но это сообщение кажется актуальным: http://blogs.msdn.com/b/oldnewthing/archive/2006/12/18/1317290.aspx –

+0

Это [расширение .NET 4] (http: // blogs. msdn.com/b/codefx/archive/2011/01/04/is-it-officially-supported-to-write-windows-shell-extension-using-net-4-today.aspx), и он собирается работайте в контролируемой среде (возможно, даже не CLR 1.1/2.0/3.5 на машине вообще) – wizzard0

ответ

0

Вы не можете установить этот параметр, пока вы пишете свой код на C#. Вам нужно будет разместить CLR самостоятельно, чтобы вы могли настроить приложение, и для этого требуется код на C++. Основная статья библиотеки MSDN установлена ​​starts here.

Попытка выяснить, почему это так долго, должно дать некоторые результаты. Это, конечно, не похоже на проблему с холодным запуском, связанную со стоимостью поиска сборок на диске в первый раз. Этот перфомант применим только к первому appdomain, позже они должны быть быстрыми, так как они найдут сборки в кеше файловой системы.

Из-за проблемы с теплым стартом, связанным с компиляцией IL-кода в определенный момент времени. Быстрое исправление для этого - запуск ngen.exe на вашей сборке.

+0

Да, это горячая проблема с запуском - и если я укажу MultiDomainHost для новых доменов, то сборки будут загружаться ровно 2 раза для всего приложения , Ранее я писал хост CLR, но не знаю, с чего начать, когда он также должен действовать как COM-сервер (потому что мой опыт работы на C++ COM близок к нулю) – wizzard0

 Смежные вопросы

  • Нет связанных вопросов^_^