Распределенные вычисления: технология Microsoft RPC. Часть1. Фертиков В.В. - 15 стр.

UptoLike

Составители: 

15
void __RPC_USER midl_user_free(void __RPC_FAR * ptr)
{ free(ptr);
}
Вызов функций клиентского API
RPC поддерживает два типа связывания : автоматическое и программно-
управляемое. При использовании автоматического связывания, Вы не должны
определять дескриптор связывания, а также делать какие- либо вызовы клиент-
ских функций времени выполнения для объявления (регистрации) дескриптора.
Если же управляет дескриптором приложение, оно само должно делать эти оп-
ределения и вызовы . В данном примере соединением с сервером управляет
клиент. Чтобы связаться с сервером , клиент должен вызвать функции времени
выполнения перед вызовом удаленной процедуры и должен отсоединиться по
завершении всех удаленных вызовов. Структура программы клиента, которая
управляет собственным соединением с сервером , описана в следующем фраг -
менте кода. Удаленные вызовы процедуры помещаются между вызовами этих
функций клиентской библиотеки времени выполнения:
/* файл: helloc.c (фрагмент) */
#include "hello.h" // заголовок, сгенерированный
// компилятором MIDL
void main(void)
{
RpcStringBindingCompose(...);
RpcBindingFromStringBinding(...);
HelloProc(pszString); // удаленный вызов
RpcStringFree(...);
RpcBindingFree(...);
}
Первые два вызова API времени выполнения устанавливают имеющий си -
лу дескриптор для сервера. Этот дескриптор затем используется, чтобы сделать
удаленный вызов процедуры . Заключительные два вызова API времени выпол -
нения освобождают его .
Функции Microsoft RPC используют структуры данных, которые представ-
ляют связывание, интерфейс , последовательность протоколов и пункт на-
значения (endpoint). Связывание это соединение между клиентом и сервером ;
интерфейс совокупность типов данных и процедур, реализованных сервером ;
последовательность протоколов спецификация базового сетевого транспорта,
который нужно использовать для передачи данных по сети; пункт назначения
сетевое имя, которое является специфическим для последовательности прото -
колов. Данный пример использует именованные каналы (named pipe) в качестве
                                    15

void __RPC_USER midl_user_free(void __RPC_FAR * ptr)
{   free(ptr);
}


     Вызов функций клиентского API
     RPC поддерживает два типа связывания: автоматическое и программно-
управляемое. При использовании автоматического связывания, Вы не должны
определять дескриптор связывания, а также делать какие-либо вызовы клиент-
ских функций времени выполнения для объявления (регистрации) дескриптора.
Если же управляет дескриптором приложение, оно само должно делать эти оп-
ределения и вызовы. В данном примере соединением с сервером управляет
клиент. Чтобы связаться с сервером, клиент должен вызвать функции времени
выполнения перед вызовом удаленной процедуры и должен отсоединиться по
завершении всех удаленных вызовов. Структура программы клиента, которая
управляет собственным соединением с сервером, описана в следующем фраг-
менте кода. Удаленные вызовы процедуры помещаются между вызовами этих
функций клиентской библиотеки времени выполнения:

/* файл: helloc.c (фрагмент) */

#include "hello.h" // заголовок, сгенерированный
                  // компилятором MIDL
void main(void)
{
    RpcStringBindingCompose(...);
    RpcBindingFromStringBinding(...);

    HelloProc(pszString);          // удаленный вызов

    RpcStringFree(...);
    RpcBindingFree(...);
}

     Первые два вызова API времени выполнения устанавливают имеющий си-
лу дескриптор для сервера. Этот дескриптор затем используется, чтобы сделать
удаленный вызов процедуры. Заключительные два вызова API времени выпол-
нения освобождают его.
     Функции Microsoft RPC используют структуры данных, которые представ-
ляют связывание, интерфейс, последовательность протоколов и пункт на-
значения (endpoint). Связывание – это соединение между клиентом и сервером;
интерфейс – совокупность типов данных и процедур, реализованных сервером;
последовательность протоколов – спецификация базового сетевого транспорта,
который нужно использовать для передачи данных по сети; пункт назначения –
сетевое имя, которое является специфическим для последовательности прото-
колов. Данный пример использует именованные каналы (named pipe) в качестве