一 、軟件系統設計
理想情況下,提到軟件系統的設計,系統架構人員想到的是如何架構軟件,軟件開發人員想到的是如何更好地組織業務邏輯代碼,這些設計能夠更好地保證軟件正常運行。不理想的情況便是沒有設計或者設計不多,開發代碼靠的是開發人員自身的素養,有人更偏好前端實現,有人覺得后端實現可能更好,于是同一套代碼中,造成技術體系的混亂,如果項目比較緊張,那么內部質量很難保障,那么技術債就這樣形成了。
一般情況下,軟件系統的研發分為需求獲取與分析、架構設計、代碼實現、系統發布、上線等階段。其中,架構設計可以細分為架構需求、分析、設計、文檔化、評審、修改和實現等過程,我們以簡化歸一,描述為:提供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
發布評論請先 登錄
相關推薦
評論