网络接口调用设计
1. 基本框架
服务端 酒店客Internet 户端
通过本框架可以实现基于双向的网络通讯、数据传输、执行相关命令。 基本要求
(1) 系统分为总系统服务端、若干不同的客户端(酒店服务器) (2) 只能是客户端发起连接服务器的请求,实现双向的网络通讯; (3) 客户端和服务端在网络通讯的基础下,进行各种操作; (4) 客户端和服务端基于网络执行相关操作,须保持统一的事务 (5) 客户端和服务端基于网络执行相关操作后,并返回相关的状态码,状态码的设计具体可
以参考HTTP协议的状态码。
总系统服务端 2. 方案1:Netty网络通讯
2.1. 应用范围
(1) 手机APP的socket网络框架(本项目中必须)
(2) 基于网络的远程调用和通讯(基于dubbo网络通讯的补充)
2.2. 系统基本层次
2.2.1. 网络通讯层
(采用基于Netty的socket框架开发) 基本作用:
网络通讯层实现基于TCP(主要)和UDP的数据传输。
Netty可以提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序,Netty 是一个基于NIO的客户和服务器端编程框架,基于netty可以实现基于TCP和UDP的socket服务开发。
以下的通讯需要是在基本的认证通过之后 接口定义:
1.对应用层提供接口,供开发者调用 /**
* 发送图片 */
针对图片的特性对他本身进行处理,以最高效的效率进行传输,在此调用数据解析层接口 封装数据 /**
* 发送文本 */
对字符串进行处理后,调用数据解析层封装,根据业务需要传输以达到最高效的效率. /**
* 发送视频,音频 */
针对此类大文件做断点续传的处理,设置通信缓冲区内存,在调用解析层接口封装后传输 /**
* 发送文件(包括word,文件夹,压缩包等) */
端和接收端以此规范来通信,根据业务的需求自定义发送规则. /**
* 查看连接情况,获得在线用户 */
通过此方法直接查看当前用户. /**
* 关闭单个连接 */
以减小服务端的压力。 判断连接情况。
对于文件类或者中小型文件,可以通过内部定义的解析层的规则来对数据进行处理,发送
通信心跳设置查看连接状况,客户端悠闲,忙碌,死循环等,更好的管理所连接的客户端, 在每个接口中需要对连接异常做处理,这里会定义一个全局的通信通道,通过通信通道来
操作流程:这层通讯接口中,会打包成一个server.jar,在项目中引入此包并根据自身项 目的特点启动服务端,在应用中,引入包中的接口类,根据业务需求调用方法.
后续接口需要扩展再定义:
2.2.2. 数据解析层
基本作用:
(1) 接收网络传输的数据 (2) 对传输的数据进行解析
(3) 依据数据类型创建【命令执行层】的具体对象,并将执行命令执行层的对象
2.2.3. 命令执行层
基本作用:
(1) 由数据解析层创建,执行抽象的操作 (2) 具有统一的JAVA接口定义,典型如下:
传入原始参数和数据接口 执行方法接口
调用业务执行层相关类方法 返回数据和状态
(3) 调用【业务执行层】执行相关的业务逻辑 (4) 调用网络通讯层返回状态和数据 配置文件
(1) 使用一个统一的xml配置文件,配置命令执行层的对象类型(如:使用id定义唯一的
类型)和对应实现类;
(2) 数据解析层依据该配置加载不同的类并创建对象; (3) 支持接口的扩展;
2.2.4. 业务执行层
(1) 对于耗时的操作,需要使用线程池,执行完毕后通知命令执行层的对应对象。 (2) 本层没有统一的接口和规范
(3) 执行数据库的具体操作,如:数据的增加、修改、删除和查询等
2.3. 逻辑结构图
3. 方案2:基于dubbo框架
略