Architecture Net



         

Пример программы, реализующей удаленный доступ


В примере Remoting клиент обращается к активизированному сервером объекту. Сервер— это класс TcpServerChannel, использующий двоичный формат с протоколом управления передачей TCP. Канал будет использовать порт 8085. Сервер регистрирует удаленный тип, имя конечной точки для ссылки на этот объект и тип активизации. Потом сервер переходит в состояние ожидания клиентских запросов.

TcpServerChannel *chan = new TcpServerChannel(8085);
ChannelServices::RegisterChannel(chan); // канал
RemotingConfiguration::RegisterWellKnownServiceType(
_typeof(Customers), // Клиенты
"AcmeCustomer",
WellKnownObjectMode::Singleton); // Единичный предмет

Сервер должен быть запущен прежде, чем клиентская программа обратится к объекту. Клиент устанавливает объект TcpClientChannel и затем присоединяется к нему. . Он определяет требуемый тип объекта и конечную точку, в которой сервер будет ожидать запросы объекта. Если нужно выполнить клиент и сервер на отдельных машинах, необходимо указать имя машины сервера для локального узла в конечной точке. В отличие от прозрачности определения места расположения в модели компонентных объектов Microsoft (СОМ), клиент должен сам определить конкретную конечную точку. Здесь нет переадресации с помощью скрытой записи в системном реестре.

TcpClientChannel *chan = new TcpClientChannel;
ChannelServices::RegisterChannel(chan); // канал
Customers *obj = dynamic_cast<Customers *>( // Клиенты


Activator::GetObject( // Активатор
_typeof(Customers), // Клиенты
"tcp://localhost:8085/AcmeCustomer"));
if (obj == 0) // если (obj == 0)
Console::WriteLine("Could not locate server");
// ("He могу определить местонахождение сервера");


else
{

Потом клиент использует заместитель, чтобы вызвать объект так, как будто это локальный экземпляр.

bool bRet = // логический (булев)
RemotingServices::IsTransparentProxy(obj);
ArrayList *ar;
ar = obj->GetCustomer(-1);
ShowCustomerArray(ar);

Чтобы выполнить программу, нужно сначала запустить сервер с одной консоли, а затем запустить клиент в другом консольном окне.




Содержание  Назад  Вперед