1、在应用程序中的地位
主要屏蔽了网络通信的一些细节,对Socket进行封装,并且是NIO的一个实现架构,可以帮助我们快速的开发网络通信,常用于游戏的开发、中间件服务端的程序中。
Mina最主要的工作就是把底层传输的字节码转换为Java对象,提供给应用程序;或者把应用程序返回的结果转换为字节码,交给底层传输。
2、长短链接
长链接和短链接
长链接:通信双方长期保持一个链接状态不断开,比如QQ,当我们登陆QQ的时候,就会链接腾讯的服务器建立一个链接,链接一旦建立就一会断开,除非发生异常
短链接:通信双方不是保持一个长链接状态,比如http协议,请求数据响应完成之后,链接就会断开
3、IOService接口
*实现了对网络通信的客户端和服务端之间的抽象,子接口IOConnector用于描述客户端,子接口IOAcceptor用于描述服务端。*
**作用:**IOService可以管理我们网络通信的客户端和服务端,并且可以管理连接双方的会话session,同样可以添加过滤器。
IoService接口声明了服务端的共有属性和行为;
IoAcceptor接口继承了IoService接口,并添加了服务端特有的接口属性及方法,比如bind()方法,成为典型的服务端接口;
IoConnector接口同样继承了IoService接口,并添加了客户端特有的接口属性及方法,比如connect()方法,成为典型的客户端接口;
AbstractIoService实现了IoService中管理服务的方法,比如getFilterChainBuilder方法—获得过滤器链;
AbstractIoService抽象类继承了AbstractIoService抽象类并实现了IoAcceptor接口,成为了拥有管理服务端实现功能的服务端类;我们常用的NioSocketAcceptor就是它的子类;
AbstractIoConnector抽象类继承了AbstractIoService抽象类并实现了IoConnector接口,成为了拥有管理客户端实现功能的客户端类;我们常用的NioSocketConnector就是它的子类;
4、编码解码
前面提到Mina最主要的工作就是把底层传输的字节码转换为Java对象,提供给应用程序;或者把应用程序返回的结果转换为字节码,交给底层传输。
应用程序 网络
java对象或者基本数据类型 二进制对象输出到网络---------------------编码---------------------------->需要编码成二进制
网络传入的应用程序<---------------------------解码----------------需要解码成java对象或者基本数据类型