.NET Remoting - проблема с прокси - PullRequest
0 голосов
/ 16 декабря 2010

У меня есть класс RemoteRamdom на сервере:

SERVER:

public class RemoteRandom : MarshalByRefObject
{
    Random r = new Random();

    public Random GetRandomObject()
    {
        return r;
    }
}

КЛИЕНТ:

        RemoteRandom remoteRandom = (RemoteRandom)Activator.GetObject(typeof(RemoteRandom), "tcp://localhost:1000/UzakNesne");
        Random r = remoteRandom.GetRandomObject();

        while (true)
        {
            Console.WriteLine(r.Next());
        }

Проблема: Клиент можетвызовите метод GetRandomObject успешно.Однако, когда я вызываю методы экземпляра r, он запускается локально.Я имею в виду, что r.Next () продолжает работать, даже когда я закрываю серверное приложение.

Как работает r на сервере?

Ответы [ 2 ]

0 голосов
/ 18 сентября 2013

Возвращенный объект r будет сериализован и воссоздан локально, поскольку класс Random помечен как сериализуемый и не наследуется от MarshalByRefObject.

Вы можете создать r на сервере так же, как вы создаете remoteRandom,хотя вы сможете получить к нему доступ только с клиента.

0 голосов
/ 16 декабря 2010

Вы УВЕРЕНЫ, что это удаленный объект?

Ваш код в основном не показывает конфигурацию, которая перенаправляет Активатор на фактическую ссылку на класс с сервера. Без настройки активатор с радостью создаст ЛОКАЛЬНЫЙ КЛАСС.

...