.NET2.0 Remoting - Почему необходима регистрация ClientChannel? - PullRequest
0 голосов
/ 04 декабря 2008

У меня есть клиент-серверное приложение, которое должно использовать .NET Remoting (не WCF, потому что проект использует Framework 2).

Работает следующий код (сильно скопированный с MSDN):

                _clientChannel = new IpcClientChannel();

                ChannelServices.RegisterChannel(_clientChannel, false);

                IMyObject myObject= (IMyObject)
                        Activator.GetObject(typeof(IMyObject),
                        "ipc://MyServer/Address");

                if ( myObject.Equals(null) )
                    Console.WriteLine("Error: unable to locate server.");
                else
                    returnString = myObject.SomeMethod();

                ChannelServices.UnregisterChannel(_clientChannel);

Но что делают эти три строки?

                    _clientChannel = new IpcClientChannel();

                    ChannelServices.RegisterChannel(_clientChannel, false);

                    ...

                    ChannelServices.UnregisterChannel(_clientChannel);

_clientChannel впоследствии нигде не используется в рабочем коде. Рабочий код также, кажется, работает без этих трех строк. Можно ли от них избавиться без потери функциональности?

1 Ответ

1 голос
/ 27 мая 2009

Канал используется для связи. Объект, который вы получаете через Активатор, является только прокси-объектом, который скрывает реальную реализацию и использует канал для связи.

См. MSDN для получения дополнительной информации о удаленном взаимодействии

...