Как управляется объектная переменная, когда она отправляется ByRef в службу для обработки? - PullRequest
1 голос
/ 14 октября 2011

Сервер в расположении A

У меня есть служба, которая будет получать массив процессов (ByRef) .

Клиентский компьютерв местоположении B

У меня есть метод в приложении, который будет принимать строки от пользователя, добавлять его к объекту массива и вызывать ServiceMethod для обработки массива (который передается ByRef), затемя покажу вам результат на экране.

Что я понимаю

Когда какая-либо вещь передается по ссылке, то место в памяти передается, следовательно,любое действие, предпринятое над «вещью», выполняется в месте нахождения «вещи».

Вопрос

Для "вещь ", чтобы быть на том же компьютере / памяти, все в порядке.но

Что происходит, когда «вещь» находится на другом ПК?Что делает Приемник?Получает ли он доступ к памяти по крупицам отправителя, находящегося за тысячи миль?

1 Ответ

0 голосов
/ 14 октября 2011

Это действительно зависит от очень точного сценария. Обычный WCF обычно интерпретирует ref как «сериализовать эти данные в сервис, позволить сервису поиграть с ними, а затем сериализовать данные обратно клиенту» - так что семантическая из ref тогда похож, но реализация очень отличается. Во время использования сервер общается только с локальной копией данных, поэтому нет большой проблемы с производительностью - однако , если вы отправите огромный byte[], а затем получите доступ только к 2 байтам из него, все равно приходится отправлять все эти данные дважды (в обе стороны).

...