.Net Remoting: Сериализация объекта и реализация - PullRequest
2 голосов
/ 27 марта 2010

В моем сценарии есть клиентская сборка, которая содержит класс (Task). Этот класс реализует интерфейс (ITask), который известен на сервере. Я пытаюсь отправить объект Task с клиента на сервер без копирования сборки клиента вручную на сервер.

Если я просто сериализую объект задачи, сервер, очевидно, жалуется на отсутствующую сборку. Затем я попытался сериализовать typeof (Task). Assembly, но не смог выполнить его сериализацию на сервере. Затем я попытался File.ReadAllBytes (typeof (Task) .Assembly.Location) и сохранил его во временный файл на сервере, что вызвало исключение для Assembly.LoadFrom (@ ". \ Временная.dll");

Почему я это делаю? Java RMI имеет удобную функцию для запроса реализации объекта, который получен посредством удаленного взаимодействия, но все еще "неизвестен" (эта JVM не имеет файла * .class). Это может быть использовано для вычислительного сервера, который просто знает интерфейс «задачи», содержащей метод run (), и загружает реализацию этого метода по требованию. Таким образом, сервер не нужно менять для новых задач. Я пытаюсь добиться чего-то подобного в .Net.

1 Ответ

1 голос
/ 03 мая 2010

Не берите в голову, я нашел способ, который работает для меня, используя событие AssemblyResolve и загружая сборку прямо из байтового массива с помощью

AppDomain.CurrentDomain.Load(assemblyData);

На всякий случай, если у кого-то такая же проблема.

...