Mina基础(一):基本结构分析、长短连接、IOService

这两天有需要研究一下Mina的基本使用方法,文章自己在网络笔记中先好的好,复制过来后排版可能不太好,多多包涵。


1、在应用程序中的地位

        主要屏蔽了网络通信的一些细节,对Socket进行封装,并且是NIO的一个实现架构,可以帮助我们快速的开发网络通信,常用于游戏的开发、中间件服务端的程序中。

        Mina最主要的工作就是把底层传输的字节码转换为Java对象,提供给应用程序;或者把应用程序返回的结果转换为字节码,交给底层传输。

2、IOService接口

        用于描述我们的客户端和服务端的接口,其子类是Connector和Acceptor,分别用于描述我们的客户端和服务端。

  • IOprocessor多线程的环境来处理我们的连接请求流程。

  • IoFilter提供数据的过滤工作,包括编解码、日志等信息的过滤。

  • Handler业务对象,自定义handler需要实现IOHanlerAcceptor。

 

3、Mina类图结构

IOSession:描述的是客户端和服务端的连接,常用于接受和发送数据。

 

4、长短连接

    长连接:通信双方长期的保持一个连接状态不断开,一旦建立连接后,就不断开,除非发生异常,比较消耗IO资源。

    短连接:通信双方不是保持一个长期的连接状态,比如Http协议,当客户端发起http请求,服务器处理http请求,当服务器处理完成后,返回客户端数据后就断开链接。


IOService接口详解

    实现了对网络通信的客户端和服务端之间的抽象,子接口IOConnector用于描述客户端,子接口IOAcceptor用于描述服务端。

    作用:IOService可以管理我们网络通信的客户端和服务端,并且可以管理连接双方的会话session,同样可以添加过滤器。

类结构图

常用接口为:IoService,IoAcceptor,IoConnector

常用类为:NioSocketAcceptor,NioSocketConnector

分析:

  1. IoService接口声明了服务端的共有属性和行为;
  2. IoAcceptor接口继承了IoService接口,并添加了服务端特有的接口属性及方法,比如bind()方法,成为典型的服务端接口;
  3. IoConnector接口同样继承了IoService接口,并添加了客户端特有的接口属性及方法,比如connect()方法,成为典型的客户端接口;
  4. AbstractIoService实现了IoService中管理服务的方法,比如getFilterChainBuilder方法---获得过滤器链;
  5. AbstractIoService抽象类继承了AbstractIoService抽象类并实现了IoAcceptor接口,成为了拥有管理服务端实现功能的服务端类;我们常用的NioSocketAcceptor就是它的子类;
  6. AbstractIoConnector抽象类继承了AbstractIoService抽象类并实现了IoConnector接口,成为了拥有管理客户端实现功能的客户端类;我们常用的NioSocketConnector就是它的子类;

 

---- IoService是IoAcceptor和IoConnector父接口,为什么不直接定义IoAcceptor和IoConnector接口呢?

        因为它们有共同的特点,比如共同属性,管理服务的方法等,所有IoService的出现是为了代码复用。

----为什么有了IoService接口还要定义AbstractIoService抽象类?

        一样为了代码的复用!AbstractIoService抽象类实现了服务端或客户端的共有的管理服务的方法,不需要让IoService接口的子类重复的实现这些方法;

----AbstractIoService抽象类与IoAcceptor(IoConnector)有什么区别?

        很清楚,AbstractIoService抽象类实现的是共有的管理服务的方法,只有管理功能的一个类;而两个接口却是不同的两个服务角色----一个客户端,一个服务端。

待续。

参考:

Apache-mina学习笔记,非常全都资料,附带大量实例

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值