использование удаленного вызова процедур в NETCONF

Я читал RFC6241 о netconf, где говорится о RPC как о механизме обмена сообщениями протокола. Однако спецификация определяет XML для передачи сообщений RPC, поэтому я не совсем понимаю, почему это все еще называется RPC? Раньше я думал, что RPC описан в ONC RPC, т. е. должна быть определена функция-заглушка ( как это делает rpcgen в Unix) и так далее, но то, что говорит NETCONF, не следует строго этой парадигме, а скорее определяет механизм передачи параметров по сети.

Возможно, я неправильно понимаю RPC как концепцию. Может ли кто-нибудь разъяснить мне RPC в netconf? Спасибо,


person Mark    schedule 14.12.2015    source источник


Ответы (1)


Концепция удаленного вызова процедур — это просто абстракция механизма запрос-ответ в модели связи клиент-сервер. Клиент отправляет запрос на (удаленный) сервер, ждет ответа и после его получения продолжает выполнение на основе полученной информации. Вот и все. По сути, это то, что происходит, когда вы вызываете операцию NETCONF.

Процитированная вами спецификация:

Протокол ONC RPC основан на модели удаленного вызова процедур, которая аналогична модели вызова локальных процедур. В локальном случае вызывающая программа помещает аргументы процедуры в определенное место (например, в окно регистра). Затем он передает управление процедуре и в конечном итоге восстанавливает управление. В этот момент результаты процедуры извлекаются из точно указанного места, и вызывающая программа продолжает выполнение.

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

и NETCONF спецификация говорят то же самое:

Протокол NETCONF использует парадигму удаленного вызова процедур (RPC). Клиент кодирует RPC в XML [W3C.REC-xml-20001006] и отправляет его на сервер, используя безопасный сеанс, ориентированный на соединение. Сервер отвечает ответом, закодированным в XML. Содержимое как запроса, так и ответа полностью описано в XML DTD или XML-схемах, или и в том, и в другом, что позволяет обеим сторонам распознавать синтаксические ограничения, накладываемые на обмен.

NETCONF использует коммуникационную парадигму на основе RPC. Клиент отправляет серию из одного или нескольких сообщений запроса RPC, которые заставляют сервер отвечать соответствующей серией ответных сообщений RPC.

Как и страница Википедии на RPC:

RPC — это разновидность протокола запрос-ответ. RPC инициируется клиентом, который отправляет сообщение с запросом на известный удаленный сервер для выполнения указанной процедуры с предоставленными параметрами. Удаленный сервер отправляет ответ клиенту, и приложение продолжает свой процесс. Пока сервер обрабатывает вызов, клиент блокируется (он ждет, пока сервер завершит обработку, прежде чем возобновить выполнение), если только клиент не отправит серверу асинхронный запрос, например вызов XHTTP. Существует множество вариаций и тонкостей в различных реализациях, что приводит к множеству различных (несовместимых) протоколов RPC.

(лучше поздно, чем никогда, верно?)

person predi    schedule 01.07.2016