1.1 基本設(shè)計概念和處理流程
主要分為服務(wù)端和客戶端兩個部分。
客戶端部分又分為同步與異步兩種模式。
JAVA版接口平臺主要實現(xiàn)與外部接口的服務(wù)端和客戶端的通訊。并提供業(yè)務(wù)接口,允許基于當(dāng)前內(nèi)核實現(xiàn)各種業(yè)務(wù)。
本平臺設(shè)計的核心思想是實現(xiàn)通訊平臺的核心功能,盡可能使代碼與業(yè)務(wù)剝離,提高代碼的可重用性。
本平臺主要由幾個核心模塊所組成對各種業(yè)務(wù)的支持
使用JAVA1.4+版本提供的無堵塞IO實現(xiàn)服務(wù)端和客戶端的通訊,并提供同步和異步處理兩種方式
使用了JDK 1.5 帶的線程池,提供一個線程池的服務(wù),為服務(wù)端或客戶端提供多線程處理的功能。本身實現(xiàn)了Singleton模式和自帶了監(jiān)控線程,實現(xiàn)了自我管理。
為解析協(xié)議提供簡便的方法處理字節(jié)數(shù)組。
為了實現(xiàn)通信平臺的業(yè)務(wù)無關(guān)性,本平臺設(shè)計了一些接口提供給業(yè)務(wù)開發(fā)實現(xiàn)。
為所有解析協(xié)議提供統(tǒng)一協(xié)議解析類接口。主要是為了統(tǒng)一協(xié)議解析的方式。
業(yè)務(wù)接口主要有兩種:業(yè)務(wù)邏輯接口和業(yè)務(wù)實現(xiàn)接口。
2.3.2.1 業(yè)務(wù)邏輯接口
主要為了處理每一個指令的業(yè)務(wù)流程,例如先讀取,再處理業(yè)務(wù),再返回結(jié)果;或者先發(fā)送指令,再等待返回結(jié)果。
2.3.2.2 業(yè)務(wù)實現(xiàn)接口
主要處理每個協(xié)議中每一個指令所對應(yīng)的業(yè)務(wù)網(wǎng)處理。
專門為客戶端登錄服務(wù)器時提供的統(tǒng)一的注冊方式。
l 通訊服務(wù)
l 并發(fā)處理客戶端請求
l 自監(jiān)控
l 可自定義的業(yè)務(wù)接口
l 與服務(wù)端通訊
l 可自定義的業(yè)務(wù)接口
l 支持異步模式
通過繼承一個業(yè)務(wù)邏輯類接口和一個抽象業(yè)務(wù)邏輯類實現(xiàn)統(tǒng)一的業(yè)務(wù)邏輯接口實現(xiàn)。主要功能有:
l 讀取請求內(nèi)容
l 發(fā)送請求
l 讀取配置文件
l 協(xié)議解析
l 反射調(diào)用業(yè)務(wù)實現(xiàn)接口
對于單個指令的業(yè)務(wù)實現(xiàn)
通過繼承客戶端類,通過調(diào)用通訊接口實現(xiàn)客戶端的業(yè)務(wù)流程,主要功能有:
l 發(fā)送指令
l 接收指令
l 重置連接
客戶端連接到服務(wù)端時會自動判斷是否正常連接,如果在通訊過程中,發(fā)現(xiàn)網(wǎng)絡(luò)中斷,將重新發(fā)起一個連接請求,并自動注冊到服務(wù)器上。
客戶端提供異步通信和同步通信。在同步通信是一個線程堵塞的方法,該方法會等待結(jié)果的返回才退出該方法。但如果等待時間超過配置的超時時間,會拋出一個通信超時的異常,并退出該方法。
服務(wù)端處理請求都是使用線程池處理每個客戶端的請求。在客戶端通訊的過程中如果連接斷開了,或者發(fā)生了一些特定的異常,則線程池監(jiān)控線程會將該線程中的連接斷開,并將線程回收到線程池中。
實現(xiàn)一個協(xié)議接口和一個協(xié)議抽象類,每個通信節(jié)點所使用的協(xié)議都必須實現(xiàn)該接口,里面封裝了一些協(xié)議基本的信息和一些基本的協(xié)議解析方法。主要包含方法:
l 協(xié)議完整性校驗接口
l 指令解析接口
l 設(shè)置包頭長度
l 設(shè)置包體長度
l 設(shè)置包尾長度
實現(xiàn)一個協(xié)議里每個指令的調(diào)用,設(shè)計目的是將指令的字符轉(zhuǎn)化為對象,可以方便地面向?qū)ο箝_發(fā)。主要包含方法:
l 指令初始化接口
l 請求參數(shù)接口
l 應(yīng)答參數(shù)接口
所有的日志信息和出錯信息會拋出到同一個方法中,由系統(tǒng)統(tǒng)一處理。