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. 系统出错处理设计
所有的日志信息和出错信息会抛出到同一个方法中,由系统统一处理。