<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 消費電子 > 設計應用 > RFID中間件技術(shù)探秘

RFID中間件技術(shù)探秘

作者: 時(shí)間:2018-08-13 來(lái)源:網(wǎng)絡(luò ) 收藏

本文引用地址:http://dyxdggzs.com/article/201808/386476.htm

類(lèi)的設計參見(jiàn)源代碼示例,從中可以看出,采用簡(jiǎn)單工廠(chǎng)模式(Simple Factory)能夠在客戶(hù)端不知情的情況下,靈活地替換API實(shí)現類(lèi)的版本。中間件API接口清晰地定義了中間件提供的操作,客戶(hù)端只須知道工廠(chǎng)類(lèi)(APIFactory)能夠得到中間件API接口的實(shí)例即可。

中間件API接口MiddlewareAPI:

publicinterfaceMiddlewareAPI{

void define(String specName, ECSpec spec);

void undefine(String specName);

void subscribe(String specName, String uri);

void unsubscribe(String specName, String uri);

EPCReports poll(String specName);

EPCReports immediate(ECSpec spec);

}

工廠(chǎng)類(lèi)APIFactory:

publicclassAPIFactory{

publicstaticMiddlewareAPIgetAPIInstance(){

}

}

API的實(shí)現類(lèi)A:

publicclassClient{

publicstaticvoidmain(String[] args) {

MiddlewareAPI api = APIFactory.getAPIInstance();

api.define(a new spec, new EPCSpec());

}

}

3.3 狀態(tài)模式模擬規則的狀態(tài)機

規則在其生命周期中擁有不同的狀態(tài),在每個(gè)狀態(tài)對一系列操作都有著(zhù)不同的表現,于是可以利用狀態(tài)模式(state)來(lái)模擬規則的狀態(tài)機,將不同狀態(tài)的不同表現作為可變化因素封裝起來(lái),參見(jiàn)代碼示例。

規則狀態(tài)接口ECState:

publicinterfaceECState{

voidsubscribe(StringspecName,String uri);

voidunsubscribe(StringspecName,String uri);

EPCReportspoll(StringspecName);

}

未被請求狀態(tài)類(lèi)ECStateUnrequested:

publicclassECStateUnrequestedimplements ECState {

}

已被請求狀態(tài)類(lèi)ECStateRequested:

publicclassECStateRrequestedimplements ECState {

}

激活狀態(tài)類(lèi)ECStateActive:

publicclassECStateActiveimplements ECState {

}

規則類(lèi)ECSpec:

publicclassECSpec{

privateECStatestate;

publicECStategetState(){

return state;

}

publicvoidsetState(ECStatestate) {

this.state = state;

}

}

這樣,在針對規則實(shí)施相應操作的時(shí)候,就可以直接把相應操作委派給其狀態(tài)屬性(ECState)去做即可。比如,ECSpec的subscribe操作,只需一行代碼“state.suscribe(specName, uri);”即可。其中,specName、uri為臨時(shí)變量,具體取值在方法調用之前確定。

由面向對象的多態(tài)性特征,根據state字段目前所指向的對象來(lái)動(dòng)態(tài)確定由ECState接口的哪一個(gè)具體的實(shí)現類(lèi)的代碼來(lái)完成工作。ECState接口的實(shí)現類(lèi)根據實(shí)際情況確定是否需要在處理過(guò)程中修改ECSpec對象的狀態(tài)屬性(state),此處在應用狀態(tài)模式時(shí),需要設計多個(gè)定時(shí)器類(lèi)來(lái)輔助狀態(tài)機的跳轉。

3.4 策略模式切換多種報告上傳、命令下發(fā)方式

事件周期結束之后,中間件需要組裝報告上傳給規則的預訂者,即應用系統。上傳的方式有多種,如HTTP、Socket、JMS等等。中間件的核心邏輯處理模塊不應該關(guān)心具體的上傳技術(shù),相應工作應交給報告上傳模塊來(lái)做,核心邏輯處理模塊只須完成自己的工作,然后把一定格式的數據通過(guò)報告上傳模塊發(fā)送,參見(jiàn)代碼示例。

報告發(fā)送接口ReportSender:

publicinterfaceReportSender{

voidsendReport(ECReportsreports);

}

通過(guò)Http方式發(fā)送報告的ReportSender接口實(shí)現類(lèi)ReportSenderByHttp:

publicclassReportSenderByHttpimplements ReportSender {

public void sendReport(ECReports reports) {

}

}

通過(guò)Socket方式發(fā)送報告的ReportSender接口實(shí)現類(lèi)ReportSenderBySocket:

publicclassReportSenderBySocketimplements ReportSender {

publicvoidsendReport(ECReportsreports) {

}

}

通過(guò)JMS方式發(fā)送報告的ReportSender接口實(shí)現類(lèi)ReportSenderByJms:

publicclassReportSenderByJmsimplements ReportSender {

publicvoidsendReport(ECReportsreports) {

}

}

報告發(fā)送示例客戶(hù)端類(lèi)

SendReportWorker:

publicclassSendReportWorker{

privateReportSendersender;

privateECReportsreports;

publicvoidsetReports(ECReportsreports) {

this.reports = reports;

}

publicstaticvoidmain(String[] args) {

SendReportWorker worker = new

SendReportWorker();

worker.sender.sendReport(reports);

}

publicvoidsetSender(ReportSendersender) {

this.sender = sender;

}

}

這樣,發(fā)送消息的工人類(lèi)可通過(guò)設置ReportSender的實(shí)例來(lái)靈活設置其發(fā)送方式。

同樣,中間件的清點(diǎn)命令下發(fā),即中間件與閱讀器之間的接口,也存在多種方式,如Socket、SOAP等,也可采用類(lèi)似的設計。

3.5 觀(guān)察者模式處理上報消息

閱讀器的消息上報轉換為消息對象,對消息對象的接收、分發(fā)可采用經(jīng)典的觀(guān)察者模式實(shí)現。

4、中間件發(fā)展方向

4.1 與閱讀器管理系統的融合

中間件是閱讀器與后臺應用系統之間的橋梁,而閱讀器通常有設備管理需求,比如軟件版本下載、設備告警管理、參數配置等等,閱讀器管理系統也是直接與閱讀器交互的軟件模塊。于是,如何處理好中間件與閱讀器管理系統之間的關(guān)系成為一個(gè)亟待解決的問(wèn)題。

從軟件部署(部署在同一臺主機上)、軟件模塊重用(重用閱讀器通信模塊)等角度考慮,中間件與閱讀器管理系統的融合勢必成為中間件本身的一個(gè)優(yōu)勢。

4.2 對多標準標簽的支持

RFID技術(shù)在國內外的發(fā)展和應用方興未艾,國際上多個(gè)標準組織都試圖統一RFID標準,但在一定的時(shí)期內,勢必出現多標簽并存的情況。于是,對多標準標簽的支持也是中間件系統的一個(gè)發(fā)展方向。

4.3 對多廠(chǎng)商閱讀器的支持

中間件與閱讀器之間的接口、通信方式以及信息格式,也無(wú)法做到統一標準。對多廠(chǎng)商閱讀器的支持、至少對少數幾家主流廠(chǎng)商的閱讀器的支持,已經(jīng)是對中間件所提出的基本要求。


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>