智能電網(wǎng)中智能配電數(shù)字終端的消息設(shè)計(jì)
2 系統(tǒng)運(yùn)行機(jī)制
本系統(tǒng)的運(yùn)行基于反應(yīng)器(Reactor)模式的事件驅(qū)動(dòng)機(jī)制。Reactor釋義“反應(yīng)器”,是一種事件驅(qū)動(dòng)機(jī)制,與普通函數(shù)調(diào)用的不同之處在于:應(yīng)用程序不是主動(dòng)地調(diào)用某個(gè)API完成處理,而是根據(jù)Reactor提供的回調(diào)機(jī)制統(tǒng)一將接口注冊(cè)到Reactor上。當(dāng)這些事件發(fā)生時(shí),消息管理中心會(huì)調(diào)用這些已經(jīng)注冊(cè)的函數(shù)處理相應(yīng)的事件(I/O讀寫、定時(shí)和用戶輸入等)。這樣系統(tǒng)能夠?qū)⑻幚砗瘮?shù)的調(diào)用者與被調(diào)用者分離,使本系統(tǒng)更加靈活。
2.1 系統(tǒng)運(yùn)行結(jié)構(gòu)設(shè)計(jì)
本系統(tǒng)采用的事件驅(qū)動(dòng)模式與消息服務(wù)系統(tǒng)類似,同時(shí)又存在區(qū)別。在消息系統(tǒng)中,消息客戶端和消息服務(wù)器端只需建立一個(gè)連接,就可以隨時(shí)發(fā)布消息。事件驅(qū)動(dòng)的本系統(tǒng)預(yù)先定義事件的觸發(fā)條件和事件的執(zhí)行過程并在客戶端和服務(wù)端建立連接,當(dāng)3系統(tǒng)在工作過程中發(fā)現(xiàn)事件滿足觸發(fā)條件,事件就被激活并開始執(zhí)行。系統(tǒng)中的事件驅(qū)動(dòng)流程示意圖如圖3所示。本文引用地址:http://m.butianyuan.cn/article/201884.htm
圖3中,事件消費(fèi)者向事件管理器訂閱事件,事件生產(chǎn)者向事件管理器發(fā)布事件,當(dāng)事件管理器從事件生產(chǎn)者那接收到一個(gè)事件時(shí),事件管理器把這個(gè)事件轉(zhuǎn)送給相應(yīng)的事件消費(fèi)者。
2.2 事件管理器循環(huán)設(shè)計(jì)
本系統(tǒng)中的事件管理器負(fù)責(zé)設(shè)備或定時(shí)事件的準(zhǔn)備(Prepare)、選擇(Select)、檢查(Check)、處理(Dispatch)、清楚(Cleanup)5個(gè)步驟,事件管理器的分發(fā)循環(huán)如圖4所示。
根據(jù)系統(tǒng)的實(shí)際需要,模型中定義事件源的基類Source。主站通信、定時(shí)采集、用戶輸入等多種具體的事件源可以繼承自該基類。同時(shí)全局事件管理器SourceDispathcer提供3個(gè)操作來管理事件。待處理事件管理器類SourceDispatchContext則負(fù)責(zé)管理符合觸發(fā)條件的事件。3個(gè)類之間的關(guān)系如圖5所示。
從圖5可看到,全局事件管理器提供接口ToRegisterSouree注冊(cè)系統(tǒng)關(guān)心的事件,同時(shí)使用接口UnRegisterSource注銷事件,iteration OfDispatch則負(fù)責(zé)事件分發(fā)循環(huán)的5個(gè)步驟。首先將所關(guān)心的I/O設(shè)備中文件描述符放入待檢隊(duì)列或者設(shè)定定時(shí)周期等參數(shù);然后檢查相關(guān)設(shè)備是否可讀寫或定時(shí)周期到達(dá),將滿足觸發(fā)條件的事件放入待處理事件隊(duì)列中;最后分別調(diào)用相關(guān)的事件處理函數(shù)處理事件,并清理待處理事件隊(duì)列。
評(píng)論