Этап 3: создание спецификации rpcgen

Опубликовано в Технологии > Серверные технологии Продолжение

После определения структуры распределенной программы выполняется подготовка спецификации rpcgen. По сути, файл спецификации rpcgen содержит объявление удаленной программы, а также используемых в ней структур данных. материалы для зубных протезов

Файл спецификации содержит константы, определения типов и объявления для клиентской и серверной программ. Точнее, файл спецификации содержит:

  • объявления для констант, используемых в клиенте или, чаще всего, в сервере (в удаленной программе);
  • объявления применяемых типов данных (в частности, в параметрах вызова удаленных процедур);
  • объявления удаленных программ, процедур, содержащихся в каждой программе, и типов их параметров.

Напомним, что спецификация RPC определяет использование номеров для обозначения удаленных программ и содержащихся в них удаленных процедур. Объявление программы в файле спецификации содержит такие сведения, как номер программы по спецификации RPC, номер ее версии и номера, присвоенные каждой процедуре в программе.

Все спецификации должны быть определены на языке программирования RPC, а не на языке С. Хотя различия между этими языками невелики, иногда они могут привести к путанице. Например, в языке RPC для обозначения символьных строк с нулевым символом в конце применяется ключевое слово string, а в языке С используется тип данных char *. Даже опытным программистам иногда приходится несколько раз исправлять свою спецификацию для устранения подобных несоответствий.

Пример спецификации rpcgen приведен в файле rdict.x. В этом файле содержатся примеры объявлений для версии программы базы данных словаря для RPC

Файл спецификации rpcgen не содержит записи для всех объявлений, находящихся в первоначальной программе. В нем определены только те константы и типы, которые используются совместно клиентской и серверной программами или требуются для определения параметров.

Этот пример файла спецификации начинается с определения констант MAXWORD и DICTSIZE. В первоначальном приложении обе эти константы определены как символические с использованием оператора define препроцессора языка С. В языке RPC не используются объявления символических констант С; в этом языке символические константы должны быть объявлены с применением ключевого слова const и им должно быть присвоено значение с помощью знака равенства (=).

В соответствие с общепринятыми соглашениями, в файле спецификации для определения процедур и программ используются имена, состоящие из прописных букв. Как будет показано ниже, эти имена становятся символическими константами, которые могут применяться в программах С. Использование прописных букв не является абсолютно необходимым, но помогает избегать конфликтов имен.