Применение инструментального средства rpcgen для построения распределенных программ

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

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

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

Вывод программы rpcgen и интерфейсные процедуры

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

Причина, по которой заглушка делится на процедуры обмена данными и интерфейсные процедуры, вполне очевидна: это позволяет выбрать в программе rpcgen соглашения по вызову процедур, применяемые в заглушках связи, и, вместе с тем, определить соглашения по вызову процедур, используемые в удаленных процедурах. Программист создает интерфейсные заглушки, позволяющие установить соответствие между соглашениями по вызову удаленных процедур и соглашениями, предусмотренными в процедурах-заглушках связи, построенных программой rpcgen. На рис. 22.4 показано, как взаимодействуют между собой все эти процедуры. Программа rpcgen строит основные заглушки связи автоматически; программист предоставляет две интерфейсные процедуры.

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

Похожие статьи Меню Опрос Фото Популярное