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)。 –