微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 netconf 不使用 XML 作为数据建模语言?

如何解决为什么 netconf 不使用 XML 作为数据建模语言?

我们知道 Netconf 使用 yang 作为数据建模语言。它也包含 XML。 为什么 XML 本身不用作建模语言?。什么阻止了 XML 作为数据建模语言?.

解决方法

请注意,与 NETCONF 协议相关的 RFC 不强制要求任何特定的数据模型。

数据建模和内容问题超出了 NETCONF 的范围 协议。假设设备的数据模型是 应用程序众所周知并且双方都知道 诸如布局、遏制、键控、查找、替换等问题, 和管理数据,以及施加的任何其他限制 通过数据模型。

NETCONF 在元素内部携带配置数据 特定于设备的数据模型。该协议处理 该元素的内容作为不透明数据。该设备使用 宣布设备的数据模型集的能力 实施。能力定义详细说明了操作和 数据模型强加的约束。

设备和管理器可以支持多种数据模型,包括 标准和专有数据模型。

RFC6241,Section 5.2

您还应该注意到 YANG 有一种基于 XML 的格式,称为 YIN,因此从技术上讲,它也可以被视为基于 XML 的数据建模语言。

YANG 模块可以翻译成另一种基于 XML 的语法 称为尹。翻译后的模块称为 YIN 模块。这 部分描述了两者之间的双向映射规则 格式。

YANG 和 YIN 格式包含等效的信息,使用 不同的符号。 YIN 符号使开发人员能够 用 XML 表示 YANG 数据模型,因此使用丰富的 基于 XML 的数据过滤和验证工具,自动化 生成代码和文档,以及其他任务。像这样的工具 可以使用 XSLT 或 XML 验证器。

YANG 和 YIN 的映射不修改信息 模型的内容。不保留注释和空格。

RFC7950,Section 13

然而,YANG 最初是为 NETCONF 设计的,目前是对 NETCONF 会话中对等方交换的数据进行建模的首选方式。

为什么不使用现有的基于 XML 的数据模型,例如 XML Schema (XSD) 和 RelaxNG?

当时的论点之一是可读性。人类的可读性是 YANG 的一个高优先级目标——你应该能够通过硬编码所有东西来实现一个模块,有些模块实际上要求你通过节点​​描述中的规范文本来做到这一点。除了机器之外,基于 XML 的数据模型的可读性不是很强。我会让您判断 YANG 是否比 XML 更具可读性,因为这完全是主观的(您可以通过并排阅读 YANG 和 YIN 格式的模块来测试这一点)。

使用更具体的语言(YANG)在对等点之间实现最大的互操作性(换句话说,标准化)也容易得多。想象一下使用抽象 XML 语言(例如 XSD)的每个人的混乱情况。就 XSD 而言,一切都只是元素和属性——您无法立即判断定义是代表通知、rpc、动作还是只是普通的数据节点。你必须依靠评论来做这样的事情。当然,其他人可能会为此使用处理指令。或任何其他 XML 构造...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?