1. 總體設計
1.1 基本設計概念和處理流程
1.1.1 程序劃分
主要分為服務端和客戶端兩個部分。
客戶端部分又分為同步與異步兩種模式。
1.1.2 處理流程描述
JAVA版接口平臺主要實現與外部接口的服務端和客戶端的通訊。并提供業務接口,允許基于當前內核實現各種業務。
2. 平臺設計思想
2.1 業務無關性
本平臺設計的核心思想是實現通訊平臺的核心功能,盡可能使代碼與業務剝離,提高代碼的可重用性。
2.2 核心功能模塊
本平臺主要由幾個核心模塊所組成對各種業務的支持
2.2.1 通信模塊
使用JAVA1.4+版本提供的無堵塞IO實現服務端和客戶端的通訊,并提供同步和異步處理兩種方式
2.2.2 線程池服務
使用了JDK 1.5 帶的線程池,提供一個線程池的服務,為服務端或客戶端提供多線程處理的功能。本身實現了Singleton模式和自帶了監控線程,實現了自我管理。
2.2.3 字節處理模塊
為解析協議提供簡便的方法處理字節數組。
2.3 主要接口
為了實現通信平臺的業務無關性,本平臺設計了一些接口提供給業務開發實現。
2.3.1 協議解析接口
為所有解析協議提供統一協議解析類接口。主要是為了統一協議解析的方式。
2.3.2 業務接口
業務接口主要有兩種:業務邏輯接口和業務實現接口。
2.3.2.1 業務邏輯接口
主要為了處理每一個指令的業務流程,例如先讀取,再處理業務,再返回結果;或者先發送指令,再等待返回結果。
2.3.2.2 業務實現接口
主要處理每個協議中每一個指令所對應的業務網處理。
2.3.3 注冊器接口
專門為客戶端登錄服務器時提供的統一的注冊方式。
3. 平臺設計
3.1 服務端的設計
3.1.1 模塊設計圖
3.1.2 功能
l 通訊服務
l 并發處理客戶端請求
l 自監控
l 可自定義的業務接口
3.2 客戶端設計
3.2.1 模塊設計圖
3.2.2 功能
l 與服務端通訊
l 可自定義的業務接口
l 支持異步模式
4. 業務接口設計
4.1 服務端業務接口
4.1.1 業務邏輯接口
通過繼承一個業務邏輯類接口和一個抽象業務邏輯類實現統一的業務邏輯接口實現。主要功能有:
l 讀取請求內容
l 發送請求
l 讀取配置文件
l 協議解析
l 反射調用業務實現接口
4.1.2 業務實現接口
對于單個指令的業務實現
4.2 客戶端業務接口
通過繼承客戶端類,通過調用通訊接口實現客戶端的業務流程,主要功能有:
l 發送指令
l 接收指令
l 重置連接
5. 系統自我監控設計
5.1 客戶端
5.1.1 斷開連接后重連
客戶端連接到服務端時會自動判斷是否正常連接,如果在通訊過程中,發現網絡中斷,將重新發起一個連接請求,并自動注冊到服務器上。
5.1.2 同步通信超時
客戶端提供異步通信和同步通信。在同步通信是一個線程堵塞的方法,該方法會等待結果的返回才退出該方法。但如果等待時間超過配置的超時時間,會拋出一個通信超時的異常,并退出該方法。
5.2 服務端
5.2.1 線程回收
服務端處理請求都是使用線程池處理每個客戶端的請求。在客戶端通訊的過程中如果連接斷開了,或者發生了一些特定的異常,則線程池監控線程會將該線程中的連接斷開,并將線程回收到線程池中。
6. 協議解析設計
6.1 協議接口
實現一個協議接口和一個協議抽象類,每個通信節點所使用的協議都必須實現該接口,里面封裝了一些協議基本的信息和一些基本的協議解析方法。主要包含方法:
l 協議完整性校驗接口
l 指令解析接口
l 設置包頭長度
l 設置包體長度
l 設置包尾長度
6.2 指令接口
實現一個協議里每個指令的調用,設計目的是將指令的字符轉化為對象,可以方便地面向對象開發。主要包含方法:
l 指令初始化接口
l 請求參數接口
l 應答參數接口
7. 系統出錯處理設計
所有的日志信息和出錯信息會拋出到同一個方法中,由系統統一處理。