0

我只想知道是杨建模语言特定的,只能用于NetConf协议,或者可以用它来模拟像Xml和Json数据?杨用作Xml或Json?

谢谢

+0

欢迎来到Stack Overflow!您可以先[参观](http://stackoverflow.com/tour)并学习[如何提出一个好问题](http://stackoverflow.com/help/how-to-ask)并创建一个[最小,完整和可验证](http://stackoverflow.com/help/mcve)示例。这使我们更容易帮助你。 –

回答

0

杨最初的目的是模拟在NETCONF会话节点间数据交换,但不再是唯一的案例。现在还有其他协议(将)使用它,例如RESTCONF和CoMI。

杨是最初设计模型通过网络配置 协议(NETCONF),NETCONF远程过程调用,以及NETCONF 通知[RFC6241]操纵 配置和状态数据的数据建模语言。自从YANG版本1 [RFC6020]发布以来,已经使用或提议将YANG用于其他 协议(例如,RESTCONF [RESTCONF]和约束应用程序 协议(CoAP)管理接口(CoMI)[CoMI]) 。此外,已经提出了除XML之外的其他编码(例如,JSON [RFC7951])。

RFC7950, Section 1

事实上,最近新YANG规范版本(1.1)取得了朝向从其编码解耦模型中的举动。将来,我们可能会看到单独的XML和JSON编码文档(可能还有其他文档)以及仅处理语言细节的单个文档。

你可以用杨为其他更多的一般用途的数据模型,如果你忽略了像rpcactionnotificationconfig等语句那些只有在特定上下文相关的。当然,您必须定义您希望使用该模型的上下文以及它对您的意义。一些建模人员利用extension语句来定义这些需求,然后实现一个专门的YANG编译器,该编译器可以识别这些扩展并相应地执行操作 - 这允许您将语言用于非作者最初设计的目的。

规范中有一些定义可能会使得YANG成为一种通用建模语言(比如XML Schema的XML)更难。像configuration datastore,configuration data,state data,client,server等概念是非常特别的。然而,你可以对这些视而不见,只是让它适合你。我相信这是OpenDaylight项目已经完成的方式。

+0

谢谢,但我仍然有一些混淆,杨是用来定义一个数据模式,它将被另一种语言如XML,JSON实例化。或者它可以同时执行(定义模式,并根据该模式实例化或写入实际数据)? – Mheni

+0

@ M'heniMerzouki,YANG是一种模式定义语言。它描述了实例文档(数据存储区,有效载荷)必须遵循的规则,以便后者被识别为有效。它可以用来直接验证实例文档,只要您有必要的工具即可。实例文档被编码为XML或JSON,所以YANG可以直接用于检查XML或JSON的有效性(不需要生成中间模式,尽管有些工具只是为了利用现有技术)。 – predi

+1

到目前为止,YANG验证了[XML](https://tools.ietf.org/html/rfc7950#section-1)和[JSON](https://tools.ietf.org/html/rfc7951#section -1)。 –