1

I was reading RFC6241 about netconf, where it's said about RPC as a messaging mechanism of the protocol. However, the spec defines XML for transmitting RPC messages, so I don't quite understand why this is still called RPC? I used to think of RPC as described in ONC RPC, i.e. there should be a stub function defined (as done by rpcgen on Unix) and so on, but what NETCONF says does not strictly follow this paradigm, rather it defines a mechanism to transmit parameters over wire.

Perhaps, I misunderstand RPC as a concept. Could anybody clarify RPC in netconf for me? Thanks,

4

1 回答 1

0

远程过程调用概念只是客户端-服务器通信模型中请求-应答机制的抽象。客户端向(远程)服务器发送请求,等待响应,并在收到响应后根据收到的信息继续执行。这就对了。这本质上是调用 NETCONF 操作时发生的情况。

您引用的规范:

ONC RPC 协议基于远程过程调用模型,类似于本地过程调用模型。在本地情况下,调用者将参数放置在某个明确指定的位置(例如寄存器窗口)中。然后它将控制权转移给程序,并最终重新获得控制权。此时,过程的结果将从指定的位置提取,调用者继续执行。

远程过程调用模型类似。一个控制线程在逻辑上通过两个进程:调用者进程和服务器进程。调用者首先向服务器进程发送一条调用消息并等待(阻塞)回复消息。调用消息包含过程的参数,回复消息包含过程的结果。一旦收到回复消息,就提取过程的结果,并恢复调用者的执行。

NETCONF 规范说同样的话:

NETCONF 协议使用远程过程调用 (RPC) 范例。客户端以 XML [W3C.REC-xml-20001006] 对 RPC 进行编码,并使用安全的、面向连接的会话将其发送到服务器。服务器以 XML 编码的回复进行响应。请求和响应的内容都在 XML DTD 或 XML 模式中进行了完整描述,或者两者都描述,从而允许双方识别强加于交换的语法约束。

NETCONF 使用基于 RPC 的通信范例。客户端发送一系列一个或多个 RPC 请求消息,这导致服务器以相应的一系列 RPC 回复消息进行响应。

RPC 上的维基百科页面也是如此:

RPC 是一种请求-响应协议。RPC 由客户端发起,客户端向已知的远程服务器发送请求消息,以使用提供的参数执行指定的过程。远程服务器向客户端发送响应,应用程序继续其进程。当服务器正在处理调用时,客户端被阻塞(它一直等到服务器完成处理后才恢复执行),除非客户端向服务器发送异步请求,例如 XHTTP 调用。各种实现中存在许多变化和微妙之处,导致各种不同(不兼容)的 RPC 协议。

(迟到总比不到好,对吧?)

于 2016-07-01T12:15:41.263 回答