衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

OpenDaylight中的MD-SAL是什么

汽車電子技術(shù) ? 來(lái)源:碼農(nóng)與軟件時(shí)代 ? 作者:碼農(nóng)與軟件時(shí)代 ? 2023-02-14 15:17 ? 次閱讀

、軟件系統(tǒng)設(shè)計(jì)

理想情況下,提到軟件系統(tǒng)的設(shè)計(jì),系統(tǒng)架構(gòu)人員想到的是如何架構(gòu)軟件,軟件開發(fā)人員想到的是如何更好地組織業(yè)務(wù)邏輯代碼,這些設(shè)計(jì)能夠更好地保證軟件正常運(yùn)行。不理想的情況便是沒(méi)有設(shè)計(jì)或者設(shè)計(jì)不多,開發(fā)代碼靠的是開發(fā)人員自身的素養(yǎng),有人更偏好前端實(shí)現(xiàn),有人覺得后端實(shí)現(xiàn)可能更好,于是同一套代碼中,造成技術(shù)體系的混亂,如果項(xiàng)目比較緊張,那么內(nèi)部質(zhì)量很難保障,那么技術(shù)債就這樣形成了。

一般情況下,軟件系統(tǒng)的研發(fā)分為需求獲取與分析、架構(gòu)設(shè)計(jì)、代碼實(shí)現(xiàn)、系統(tǒng)發(fā)布、上線等階段。其中,架構(gòu)設(shè)計(jì)可以細(xì)分為架構(gòu)需求、分析、設(shè)計(jì)、文檔化、評(píng)審、修改和實(shí)現(xiàn)等過(guò)程,我們以簡(jiǎn)化歸一,描述為:提供UI界面和消息接口服務(wù),UI選擇B\\S架構(gòu)風(fēng)格,消息可以是REST、SOAP以及AMQP等類型,數(shù)據(jù)庫(kù)采用關(guān)系型數(shù)據(jù)庫(kù)。如下圖所示:

圖片

下一步就開始圍繞業(yè)務(wù)領(lǐng)域,進(jìn)行系統(tǒng)的建模,一般有兩種方式:第一種是數(shù)據(jù)庫(kù)的設(shè)計(jì),考慮需要那些表,表中包含應(yīng)該哪些字段,將業(yè)務(wù)需求抽象為數(shù)據(jù)模型;第二種是業(yè)務(wù)邏輯的面向?qū)ο笤O(shè)計(jì),將業(yè)務(wù)需求抽象為對(duì)象之間的關(guān)系。我們以第一種方式進(jìn)行系統(tǒng)的建模(以Java為例):

①通過(guò)建模工具(Power Design)進(jìn)行概念數(shù)據(jù)模型和物理數(shù)據(jù)模型的建模;

②根據(jù)數(shù)據(jù)庫(kù)的表,借助于代碼生成工具生成表對(duì)應(yīng)的Java對(duì)象;

③根據(jù)業(yè)務(wù)邏輯劃分不同的Service服務(wù),對(duì)應(yīng)Domain Object;

④根據(jù)UI設(shè)計(jì)劃分不同的Action,對(duì)應(yīng)View Object;

⑤根據(jù)業(yè)務(wù)流程設(shè)計(jì)各層之間的調(diào)用關(guān)系,并進(jìn)行不同層之間的對(duì)象轉(zhuǎn)換。

根據(jù)上述步驟我們簡(jiǎn)單地得到如下圖所示的業(yè)務(wù)邏輯的設(shè)計(jì):

圖片

我們可以簡(jiǎn)單地將圖中的設(shè)計(jì)理解為業(yè)務(wù)邏輯的服務(wù)抽象層的設(shè)計(jì)。

二、MD-SAL

2.1 基礎(chǔ)

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

MD-SAL(Model-driven Service Abstraction Layer,模型驅(qū)動(dòng)的服務(wù)抽象層)可以看成是一個(gè)消息總線驅(qū)動(dòng)、可擴(kuò)展的中間件?!癕”是模型,即為YANG語(yǔ)言,“MD”是模型驅(qū)動(dòng),即使用YANG作為數(shù)據(jù)和接口的建模語(yǔ)言,并為服務(wù)之間的通信提供基礎(chǔ)框架:消息傳遞和數(shù)據(jù)存儲(chǔ)功能。

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

l DataStore: 分為Config和Operational,其本質(zhì)上是樹,并通過(guò)Instance identifier來(lái)標(biāo)識(shí)子樹或節(jié)點(diǎn);

l RPC: RPC的本質(zhì)上是不同進(jìn)程間訪問(wèn)的一種通信形式。在NETCONF協(xié)議中 RPC是NETCONF客戶端對(duì)NETCONF服務(wù)器的訪問(wèn)。而在MD-SAL中,RPC用于服務(wù)消費(fèi)者(使用者)對(duì)服務(wù)生產(chǎn)者(提供者)的訪問(wèn),不再是嚴(yán)格上的RPC定義。

同時(shí),YANG Tools項(xiàng)目是一個(gè)旨在方便YANG開發(fā)的基礎(chǔ)設(shè)施項(xiàng)目庫(kù),MD-SAL擴(kuò)展了該項(xiàng)目,并為Java服務(wù)和應(yīng)用程序提供NETCONF和YANG支持。它具有解析和處理YANG架構(gòu)、基于YANG模式驗(yàn)證XML結(jié)構(gòu)和基于YANG模式的REST API等組成部分。

2.2 設(shè)計(jì)實(shí)現(xiàn)

1.數(shù)據(jù)訪問(wèn)

MD-SAL通過(guò)兩個(gè)不同的代理(brokers)訪問(wèn)DataStore的數(shù)據(jù):DOM Broker和Binding-Aware Broker。如下圖所示:

圖片

l DOM Broker: DataStore可以看作是XML數(shù)據(jù)庫(kù),對(duì)于XML的解析通常采用DOM模型(Document Object Model,文檔對(duì)象模型)。DOM broker可以看成操作DataStore節(jié)點(diǎn)的請(qǐng)求代理。DOM Broker提供了基于XML DOM的API。

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

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

2.消息模式(messaging pattern)

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

圖片

l Data Broker: 對(duì)Data Store進(jìn)行事務(wù)訪問(wèn)。

l RPC Broker: 提供消費(fèi)者和生產(chǎn)者之間的單播消息,消費(fèi)者向生產(chǎn)者發(fā)送請(qǐng)求消息,生產(chǎn)者以異步消息的形式進(jìn)行響應(yīng)。

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)庫(kù)
    +關(guān)注

    關(guān)注

    7

    文章

    3848

    瀏覽量

    64690
  • 軟件系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    63

    瀏覽量

    9524
  • AMQP
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    2571
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    AliOS Things網(wǎng)絡(luò)適配框架 - SAL

    SAL)框架和組件方案AliOS Things中提供了豐富的SAL開發(fā)組件,來(lái)加速M(fèi)CU+通信連接芯片的應(yīng)用場(chǎng)景開發(fā)和部署。在此類應(yīng)用場(chǎng)景,主控MCU芯片通過(guò)UART或SPI總線與WiFi
    發(fā)表于 12-26 17:36

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

    ,經(jīng)過(guò)SAL套接字抽象層之后,對(duì)用戶提供的接口都是統(tǒng)一的,極大的提高了程序的可移植性。SAL框架的源碼及其實(shí)現(xiàn)在SDK的IoT_LINK_1.0.0\iot_link\network\tcpip目錄
    發(fā)表于 02-26 09:33

    一文讀懂RT-Thread的SAL套接字抽象層

    函數(shù)統(tǒng)一抽象功能;SAL TLS 加密傳輸功能;多協(xié)議棧接入與接口函數(shù)統(tǒng)一抽象功能對(duì)于不同的協(xié)議?;蚓W(wǎng)絡(luò)功能實(shí)現(xiàn),網(wǎng)絡(luò)接口的名稱可能各不相同,以 connect 連接函數(shù)為例,lwIP 協(xié)議棧接口名稱
    發(fā)表于 04-08 15:44

    RT-Thread系統(tǒng)基于SAL接口的TLS實(shí)現(xiàn)

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

    一文解析sal socket與其他socket之間的關(guān)系

    1、sal socket與其他socket的關(guān)系結(jié)合結(jié)構(gòu)體之間的引用關(guān)系圖,與下圖看;從 uml 對(duì)象關(guān)系圖中可以得到下面的信息:從 sal_scoket 的 user_data,獲取的 socket;從
    發(fā)表于 06-28 17:50

    RTT網(wǎng)絡(luò)框架及SAL套接字抽象層介紹

    SAL 套接字抽象層把這些接口函數(shù)功能抽象,提供統(tǒng)一的 sal_socket()、sal_connect() 等接口,將不同的協(xié)議棧做了一層適配轉(zhuǎn)換,應(yīng)用層只需基于這些接口開發(fā)
    發(fā)表于 07-28 11:40

    mymqtt軟件包和SAL同時(shí)打開時(shí)編譯報(bào)錯(cuò)咋辦?

    mymqtt和SAL時(shí),編譯報(bào)錯(cuò),如下:../packages/mymqtt-latest/MQTTClient-C/mqtt_client.c:270:17: error: storage size of 'so_linger' isn't known當(dāng)把SAL關(guān)閉時(shí),
    發(fā)表于 02-03 14:24

    什么是MD機(jī)

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

    MD1211在B超的應(yīng)用

    MD1211是Supertex公司生產(chǎn)的是一款高速雙MOSFET驅(qū)動(dòng)器。本文主要介紹了MD1211的特點(diǎn)與典型的應(yīng)用電路,最后詳細(xì)闡述了MD1211在B超的應(yīng)用。
    發(fā)表于 03-04 11:56 ?7349次閱讀
    <b class='flag-5'>MD</b>1211在B超<b class='flag-5'>中</b>的應(yīng)用

    MD500PLUS+MD38PGMD(FVC)控制

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

    如何從零開始學(xué)OpenDaylight

    OpenDaylight的邏輯架構(gòu)分為應(yīng)用層、控制器層和數(shù)據(jù)轉(zhuǎn)發(fā)層。其中,應(yīng)用層聚焦網(wǎng)絡(luò)業(yè)務(wù)邏輯開發(fā),負(fù)責(zé)資源編排;控制器層進(jìn)行全局網(wǎng)絡(luò)的管理;數(shù)據(jù)轉(zhuǎn)發(fā)層為各種網(wǎng)絡(luò)設(shè)備,負(fù)責(zé)數(shù)據(jù)的轉(zhuǎn)發(fā)。
    的頭像 發(fā)表于 02-14 14:04 ?2368次閱讀
    如何從零開始學(xué)<b class='flag-5'>OpenDaylight</b>

    OpenDaylight的運(yùn)行環(huán)境

    OpenDaylight作為一種開源的SDN控制器,使用Java語(yǔ)言編寫,
    的頭像 發(fā)表于 02-14 14:08 ?913次閱讀
    <b class='flag-5'>OpenDaylight</b>的運(yùn)行環(huán)境

    OpenDaylight的OSGi

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

    OpenDaylight的DataStore是什么

    SDN起源于校園網(wǎng),發(fā)揚(yáng)光大于數(shù)據(jù)中心,現(xiàn)廣泛用于廣域網(wǎng),SDN控制器,可能管理著數(shù)十萬(wàn)臺(tái)軟交換機(jī),下發(fā)數(shù)百萬(wàn)乃至上千萬(wàn)條路由信息。因此,作為SDN控制器的開源項(xiàng)目OpenDaylight,無(wú)論是業(yè)務(wù)邏輯還是數(shù)據(jù)存儲(chǔ),
    的頭像 發(fā)表于 02-14 15:13 ?1560次閱讀
    <b class='flag-5'>OpenDaylight</b><b class='flag-5'>中</b>的DataStore是什么

    OpenDaylight的RPC &amp; Notification是什么

    我們將介紹RPC和Notification,并從進(jìn)程內(nèi)外的通信開始,著重介紹遠(yuǎn)程過(guò)程調(diào)用和發(fā)布-訂閱機(jī)制,然后分析MD-SAL的通信交互過(guò)程。
    的頭像 發(fā)表于 02-14 15:15 ?1006次閱讀
    <b class='flag-5'>OpenDaylight</b><b class='flag-5'>中</b>的RPC &amp; Notification是什么
    防伪百家乐官网筹码币套装| 财富百家乐的玩法技巧和规则| 德州扑克 视频| 百家乐官网怎么下注能赢| 做生意讲究风水| 大发888官方删除| 百家乐官网游戏机图片| 邯郸百家乐园怎么样| 鸿运国际娱乐城| 大连百家乐官网食品| 大发888娱乐场下载 zhldu| 百家乐官网技术论坛| 百家乐官网任你博娱乐场| 宝龙百家乐的玩法技巧和规则| 求购百家乐官网程序| 百家乐3号眨眼技术| 365足球备用| 择日自学24| 鸿胜博娱乐| 百家乐娱乐人物| 顶级赌场是骗人的吗| 怎样玩百家乐官网的玩法技巧和规则 | 大发888娱乐场下载dafaylcdown| 百家乐官网有方式赢钱吗| 试玩百家乐1000| 百家乐官网经验博彩正网| 百家乐桌布橡胶| 网上百家乐官网有假的吗| 澳门百家乐赌场娱乐网规则| 永利博百家乐官网现金网| 汇丰百家乐娱乐城| 百家乐官网博彩的玩法技巧和规则 | 香河县| 百家乐博娱乐赌百家乐的玩法技巧和规则| 百家乐官网高命中投注| 太阳城假日酒店| 24山向山摆设| 百家乐官网四式正反路| 大发888娱乐城论坛| 百家乐官网发牌靴8| 百家乐官网高手qq|