精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

OpenDaylight中的MD-SAL是什么

汽車電子技術 ? 來源:碼農與軟件時代 ? 作者:碼農與軟件時代 ? 2023-02-14 15:17 ? 次閱讀

、軟件系統設計

理想情況下,提到軟件系統的設計,系統架構人員想到的是如何架構軟件,軟件開發人員想到的是如何更好地組織業務邏輯代碼,這些設計能夠更好地保證軟件正常運行。不理想的情況便是沒有設計或者設計不多,開發代碼靠的是開發人員自身的素養,有人更偏好前端實現,有人覺得后端實現可能更好,于是同一套代碼中,造成技術體系的混亂,如果項目比較緊張,那么內部質量很難保障,那么技術債就這樣形成了。

一般情況下,軟件系統的研發分為需求獲取與分析、架構設計、代碼實現、系統發布、上線等階段。其中,架構設計可以細分為架構需求、分析、設計、文檔化、評審、修改和實現等過程,我們以簡化歸一,描述為:提供UI界面和消息接口服務,UI選擇B\\S架構風格,消息可以是REST、SOAP以及AMQP等類型,數據庫采用關系型數據庫。如下圖所示:

圖片

下一步就開始圍繞業務領域,進行系統的建模,一般有兩種方式:第一種是數據庫的設計,考慮需要那些表,表中包含應該哪些字段,將業務需求抽象為數據模型;第二種是業務邏輯的面向對象設計,將業務需求抽象為對象之間的關系。我們以第一種方式進行系統的建模(以Java為例):

①通過建模工具(Power Design)進行概念數據模型和物理數據模型的建模;

②根據數據庫的表,借助于代碼生成工具生成表對應的Java對象;

③根據業務邏輯劃分不同的Service服務,對應Domain Object;

④根據UI設計劃分不同的Action,對應View Object;

⑤根據業務流程設計各層之間的調用關系,并進行不同層之間的對象轉換。

根據上述步驟我們簡單地得到如下圖所示的業務邏輯的設計:

圖片

我們可以簡單地將圖中的設計理解為業務邏輯的服務抽象層的設計。

二、MD-SAL

2.1 基礎

從OpenDaylight Lithium版本開始采用MDSE(Model-Driven Software Engineering,模型驅動軟件工程)設計。MDSE描述了一個框架,該框架支持模型建模,并可以基于模型生成相關的代碼和API接口。

MD-SAL(Model-driven Service Abstraction Layer,模型驅動的服務抽象層)可以看成是一個消息總線驅動、可擴展的中間件。“M”是模型,即為YANG語言,“MD”是模型驅動,即使用YANG作為數據和接口的建模語言,并為服務之間的通信提供基礎框架:消息傳遞和數據存儲功能。

由前面的文章可知,MD-SAL包含DataStore、RPC、Notification和Mount等概念,其中需要關注如下:

l DataStore: 分為Config和Operational,其本質上是樹,并通過Instance identifier來標識子樹或節點;

l RPC: RPC的本質上是不同進程間訪問的一種通信形式。在NETCONF協議中 RPC是NETCONF客戶端對NETCONF服務器的訪問。而在MD-SAL中,RPC用于服務消費者(使用者)對服務生產者(提供者)的訪問,不再是嚴格上的RPC定義。

同時,YANG Tools項目是一個旨在方便YANG開發的基礎設施項目庫,MD-SAL擴展了該項目,并為Java服務和應用程序提供NETCONF和YANG支持。它具有解析和處理YANG架構、基于YANG模式驗證XML結構和基于YANG模式的REST API等組成部分。

2.2 設計實現

1.數據訪問

MD-SAL通過兩個不同的代理(brokers)訪問DataStore的數據:DOM Broker和Binding-Aware Broker。如下圖所示:

圖片

l DOM Broker: DataStore可以看作是XML數據庫,對于XML的解析通常采用DOM模型(Document Object Model,文檔對象模型)。DOM broker可以看成操作DataStore節點的請求代理。DOM Broker提供了基于XML DOM的API。

l Binding-Aware Broker: DOM形式的API不易于開發人員編程,該Broker支持YANG到Java語言的綁定,并提供基于YANG模型生成的接口和類,也就是Java的API。

l BA-BI Connector: 用于連接DOM Broker和Binding-Aware Broker,與Mapping Service、Schema Service、Codec Registry和Codec Generator等組件一起實現:DOM(BI)格式和Java DTO(BA)之間的轉換。

2.消息模式(messaging pattern)

MD-SAL提供了一組基于代理的消息傳遞模式,這些代理提供以數據為中心而非API的集成,并在服務之間傳輸YANG建模數據。事實上,MD-SAL包含了管理特定消息傳遞模式的不同代理,如圖所示:

圖片

l Data Broker: 對Data Store進行事務訪問。

l RPC Broker: 提供消費者和生產者之間的單播消息,消費者向生產者發送請求消息,生產者以異步消息的形式進行響應。

l Notification Broker: 采用訂閱發布機制,由發布者發送并傳送給其訂閱者的多播消息。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據庫
    +關注

    關注

    7

    文章

    3767

    瀏覽量

    64279
  • 軟件系統
    +關注

    關注

    0

    文章

    62

    瀏覽量

    9496
  • AMQP
    +關注

    關注

    0

    文章

    6

    瀏覽量

    2553
收藏 人收藏

    評論

    相關推薦

    AliOS Things網絡適配框架 - SAL

    SAL)框架和組件方案AliOS Things中提供了豐富的SAL開發組件,來加速MCU+通信連接芯片的應用場景開發和部署。在此類應用場景,主控MCU芯片通過UART或SPI總線與WiFi
    發表于 12-26 17:36

    LiteOS通信模組教程05-LiteOS的SAL及socket編程實例

    ,經過SAL套接字抽象層之后,對用戶提供的接口都是統一的,極大的提高了程序的可移植性。SAL框架的源碼及其實現在SDK的IoT_LINK_1.0.0\iot_link\network\tcpip目錄
    發表于 02-26 09:33

    RT-Thread系統基于SAL接口的TLS實現

    ){RT_ASSERT(pt);proto_tls = (struct sal_proto_tls *) pt;return 0;}#endif變量proto_tls在文件sal_socket.c屬于全局變量(被
    發表于 06-21 11:26

    一文解析sal socket與其他socket之間的關系

    1、sal socket與其他socket的關系結合結構體之間的引用關系圖,與下圖看;從 uml 對象關系圖中可以得到下面的信息:從 sal_scoket 的 user_data,獲取的 socket;從
    發表于 06-28 17:50

    RTT網絡框架及SAL套接字抽象層介紹

    SAL 套接字抽象層把這些接口函數功能抽象,提供統一的 sal_socket()、sal_connect() 等接口,將不同的協議棧做了一層適配轉換,應用層只需基于這些接口開發
    發表于 07-28 11:40

    mymqtt軟件包和SAL同時打開時編譯報錯咋辦?

    mymqtt和SAL時,編譯報錯,如下:../packages/mymqtt-latest/MQTTClient-C/mqtt_client.c:270:17: error: storage size of 'so_linger' isn't known當把SAL關閉時,
    發表于 02-03 14:24

    什么是MD

    什么是MDMD是Mini Disc的縮寫,指微型唱機,MD又分可錄型MD(Recordable,有磁頭和雷射頭兩個頭),和單放型MD
    發表于 06-19 00:07 ?2.2w次閱讀

    MD是什么

    MD是什么 MD從誕生到現在還不到十年,在數碼產品生產商的大力推動下,已經在許多國家迅速普及開來。各種MD產品已經由便攜式的播放機發展到包
    發表于 02-06 16:58 ?9181次閱讀

    MD1211在B超的應用

    MD1211是Supertex公司生產的是一款高速雙MOSFET驅動器。本文主要介紹了MD1211的特點與典型的應用電路,最后詳細闡述了MD1211在B超的應用。
    發表于 03-04 11:56 ?7149次閱讀
    <b class='flag-5'>MD</b>1211在B超<b class='flag-5'>中</b>的應用

    MD500PLUS+MD38PGMD(FVC)控制

    MD500PLUS+MD38PGMD(FVC)
    發表于 05-25 15:48 ?43次下載

    如何從零開始學OpenDaylight

    OpenDaylight的邏輯架構分為應用層、控制器層和數據轉發層。其中,應用層聚焦網絡業務邏輯開發,負責資源編排;控制器層進行全局網絡的管理;數據轉發層為各種網絡設備,負責數據的轉發。
    的頭像 發表于 02-14 14:04 ?2120次閱讀
    如何從零開始學<b class='flag-5'>OpenDaylight</b>

    OpenDaylight的運行環境

    OpenDaylight作為一種開源的SDN控制器,使用Java語言編寫,
    的頭像 發表于 02-14 14:08 ?797次閱讀
    <b class='flag-5'>OpenDaylight</b>的運行環境

    OpenDaylight的OSGi

    從寫單個類的打印Hello World小程序到OSGi模塊化開發,確實存在較大的難度,本文將從模塊化、OSGI模型以及OSGI在OpenDaylight的應用等方面進行介紹。
    的頭像 發表于 02-14 15:05 ?748次閱讀
    <b class='flag-5'>OpenDaylight</b><b class='flag-5'>中</b>的OSGi

    OpenDaylight的DataStore是什么

    SDN起源于校園網,發揚光大于數據中心,現廣泛用于廣域網,SDN控制器,可能管理著數十萬臺軟交換機,下發數百萬乃至上千萬條路由信息。因此,作為SDN控制器的開源項目OpenDaylight,無論是業務邏輯還是數據存儲,
    的頭像 發表于 02-14 15:13 ?1429次閱讀
    <b class='flag-5'>OpenDaylight</b><b class='flag-5'>中</b>的DataStore是什么

    OpenDaylight的RPC &amp; Notification是什么

    我們將介紹RPC和Notification,并從進程內外的通信開始,著重介紹遠程過程調用和發布-訂閱機制,然后分析MD-SAL的通信交互過程。
    的頭像 發表于 02-14 15:15 ?928次閱讀
    <b class='flag-5'>OpenDaylight</b><b class='flag-5'>中</b>的RPC &amp; Notification是什么