.net remoting для запуска рабочего процесса Speech Server в нелокальном домене приложения - PullRequest
0 голосов
/ 07 января 2009

Я использую приложение Microsoft Speech Server, основанное на Windows Workflow Foundation. Приложение управляет другими вспомогательными приложениями - пользователи вызывают, а менеджер загружает сборку, содержащую правильное приложение, и вызывает рабочий процесс.

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

Невозможно вручную выгрузить одну конкретную сборку - сборки выгружаются только при выгрузке домена родительского приложения.

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

Это код типа, который я пытаюсь создать. Именно в сборке я пытаюсь загрузить:

public class typeContainer : MarshalByRefObject
{
    public static Type workflowType = typeof(mainWorkflow);
}

А вот код в менеджере:

AppDomain newDomain = AppDomain.CreateDomain("newdomain");
System.Runtime.Remoting.ObjectHandle oh = newDomain.CreateInstanceFrom(
                @"FullPathToAssembly",
                "namespace.typeContainer");
object unwrapped = oh.Unwrap();

Итак, вопрос в том, как я могу получить доступ к typeContainer.workflowType в менеджере? oh.Unwrap () возвращает тип _TransparentProxy.

1 Ответ

0 голосов
/ 20 января 2009

Проще говоря, то, что я пытаюсь сделать выше, невозможно. Короче говоря, отправка Type через AppDomains приводит к внедрению сборки в текущий домен. Для альтернативного решения см. этот пост .

...