Apache Mina

Apache Mina 2.x 入门

前言

本博文借鉴于梦筑小屋博文、IBM文库

简介

  • Apache Mina(Multipurpose Infrastructure Networked Applications)是一个网络应用框架,用以开发高可用、高扩展的典型C/S网络应用程序(网络套接字类库、事件驱动的异步API);

Apache MINA 提供的是事件驱动的 API。它把与网络相关的各种活动抽象成事件。网络应用只需要对其感兴趣的事件进行处理即可。事件驱动的 API 使得基于 Apache MINA 开发网络应用变得比较简单。应用不需要考虑与底层传输相关的具体细节,而只需要处理抽象的 I/O 事件。比如在实现一个服务端应用的时候,如果有新的连接进来,I/O 服务会产生 sessionOpened这样一个事件。如果该应用需要在有连接打开的时候,执行某些特定的操作,只需要在 I/O 处理器中此事件处理方法 sessionOpened中添加相应的代码即可。

  • 封装了底层IO操作,并提供上层操作API的网络通讯框架!

Apache MINA 的网络应用的架构

  • IoService(I/O服务):负责一个线程上套接字的建立,拥有自己的Selector(选择器),监听链接的建立。

    Mina基于JAVA NIO,属于典型的Reactor架构模式,采用事件驱动编程;需要了解 NIO的机制!

  • IoFilter(I/O过滤器):定义一组过滤器(过滤器链),过滤器可以包括日志输出、黑名单过滤、数据的编码(write 方向)与解码(read 方向)等数据处理功能;其中数据的encode 与 decode是最为重要的、也是你在使用Mina 时最主要关注的地方。

  • IoProcessor(I/O处理器):负责在另一个线程上检查信道上是否有数据读写,拥有自己的Selector(选择器);

    与JAVA NIO不通之处:JAVA NIO中使用一个Selector,不区分IoService与 IoProcessor 两个功能接口;IoProcessor 负责调用注册在IoService 上的过滤器,并在过滤器链之后调用IoHandler。

  • IoHandler:负责编写业务逻辑,也就是接收、发送数据的地方。


未完待续:源码DEMO地址后续会补上

你可能感兴趣的:(网络编程,ApacheMina)