Сериализуются ли параметры вызова метода объекта с прокси (marshallbyref)? - PullRequest
0 голосов
/ 11 февраля 2012

Я пытаюсь обернуть голову вокруг этого, чтобы принять правильные дизайнерские решения.

Скажем, я создаю новый домен приложения B, создаю экземпляр объекта O внутри него и затем передаю ссылку на этот объект обратно в домен приложения A, чтобы A мог совершать вызовы, подобные:

O.SomeMethod(parameter)

Код в SomeMethod будет запускаться в домене приложений B, чего я и ожидаю. Мне интересно, что происходит с параметром и возвращаемым значением . Они сериализуются с использованием бинарного форматирования и передаются по значению, или это ссылка на эти данные, только что переданные между доменами приложений?

Я надеюсь, что это последнее, что означает, что O.SomeMethod () может возвращать большие объемы данных без штрафов за сериализацию.

Спасибо!

1 Ответ

0 голосов
/ 12 февраля 2012

Аргументы, которые передаются в функцию, должны пройти границу домена приложения перед вызовом метода.Возвращаемое значение также должно проходить границу (в другом направлении).

Каждый раз, когда объект должен проходить границу, он:

  1. маршалируется по ссылке, если он наследуется от MarshalByRefObject;или
  2. , сериализованные на одной стороне, переданные через границу, а затем десериализованные.Это происходит, если он не наследуется от MBRO.

Чтобы ответить на ваш вопрос, да, аргументы сериализуются, а затем десериализуются, если они не наследуются от MBRO.

...