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

UptoLike

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

21
ского стаба сформировано из имени IDL файла (без расширения) и символов
_C.C. Если имя (без расширения) имеет длину более шести символов, некото -
рые файловые системы могут не принимать полученное имя файла стаба. В
этом случае файлы стаба не должны использовать заданные по умолчанию
имена. Имя клиентского стаба можно изменить, воспользовавшись ключом
/cstub компилятора MIDL:
midl hello.idl -cstub mystub.c
Если в командной строке компилятора MIDL определены ваши собствен-
ные имена файлов, необходимо использовать эти имена и в последующих ко-
мандах компиляции и компоновки.
Программа сервера
Серверная сторона распределенного приложения сообщает системе, что
сервисы являются доступными, после чего переходит в состояние ожидания за-
просов клиента. В зависимости от размера приложения и привычек кодирова-
ния , можно выбирать, реализовывать ли удаленные процедуры в одном или в
большем количестве отдельных файлов. В данном примере основная подпро-
грамма помещена в исходный файл HELLOS.C, а удаленная процедура реали-
зуется в отдельном файле, именованном HELLOP.C. Польза от такой организа-
ции удаленных процедур в отдельных файлах заключается в том , что процеду-
ры могут быть скомпонованы с автономной программой для отладки кода,
прежде чем она будет преобразована в распределенное приложение. После то -
го , как программа заработает автономно, те же самые исходные файлы могут
компилироваться и компоноваться с серверным приложением . Подобно исход -
ному файлу клиентской прикладной программы, исходный файл программы
сервера должен включить заголовочный файл HELLO.H, чтобы получить опре-
деления данных и функций RPC, а также специфических для интерфейса дан -
ных и функций .
Вызов функций серверного API
В следующем примере сервер вызывает функции
RpcServerUseProtseqEp и RpcServerRegisterIf, чтобы сделать инфор-
мацию связывания доступной клиенту . Затем сервер сообщает о своей готовно-
сти принимать запросы клиента, вызвав функцию RpcServerListen:
/* файл: hellos.c (фрагмент) */
#include "hello.h" // заголовок, сгенерированный
// компилятором MIDL
                                    21
ского стаба сформировано из имени IDL файла (без расширения) и символов
_C.C . Если имя (без расширения) имеет длину более шести символов, некото-
рые файловые системы могут не принимать полученное имя файла стаба. В
этом случае файлы стаба не должны использовать заданные по умолчанию
имена. Имя клиентского стаба можно изменить, воспользовавшись ключом
/cstub компилятора MIDL:

midl hello.idl -cstub mystub.c

    Если в командной строке компилятора MIDL определены ваши собствен-
ные имена файлов, необходимо использовать эти имена и в последующих ко-
мандах компиляции и компоновки.

     Программа сервера
     Серверная сторона распределенного приложения сообщает системе, что
сервисы являются доступными, после чего переходит в состояние ожидания за-
просов клиента. В зависимости от размера приложения и привычек кодирова-
ния, можно выбирать, реализовывать ли удаленные процедуры в одном или в
большем количестве отдельных файлов. В данном примере основная подпро-
грамма помещена в исходный файл HELLOS.C, а удаленная процедура реали-
зуется в отдельном файле, именованном HELLOP.C. Польза от такой организа-
ции удаленных процедур в отдельных файлах заключается в том, что процеду-
ры могут быть скомпонованы с автономной программой для отладки кода,
прежде чем она будет преобразована в распределенное приложение. После то-
го, как программа заработает автономно, те же самые исходные файлы могут
компилироваться и компоноваться с серверным приложением. Подобно исход-
ному файлу клиентской прикладной программы, исходный файл программы
сервера должен включить заголовочный файл HELLO.H, чтобы получить опре-
деления данных и функций RPC, а также специфических для интерфейса дан-
ных и функций.

     Вызов функций серверного API
     В     следующем       примере       сервер     вызывает      функции
RpcServerUseProtseqEp и RpcServerRegisterIf , чтобы сделать инфор-
мацию связывания доступной клиенту. Затем сервер сообщает о своей готовно-
сти принимать запросы клиента, вызвав функцию RpcServerListen :

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

#include "hello.h" // заголовок, сгенерированный
                   // компилятором MIDL