Apache MINA 提供的是事件驱动的 API。它把与网络相关的各类活动抽象成事件。网络应用只须要对其感兴趣的事件进行处理便可。事件驱动的 API 使得基于 Apache MINA 开发网络应用变得比较简单。应用不须要考虑与底层传输相关的具体细节,而只须要处理抽象的 I/O 事件。好比在实现一个服务端应用的时候,若是有新的链接进来,I/O 服务会产生 sessionOpened这样一个事件。若是该应用须要在有链接打开的时候,执行某些特定的操做,只须要在 I/O 处理器中此事件处理方法 sessionOpened中添加相应的代码便可。java
Mina基于JAVA NIO,属于典型的Reactor架构模式,采用事件驱动编程;须要了解 NIO的机制!编程
IoFilter(I/O过滤器):定义一组过滤器(过滤器链),过滤器能够包括日志输出、黑名单过滤、数据的编码(write 方向)与解码(read 方向)等数据处理功能;其中数据的encode 与 decode是最为重要的、也是你在使用Mina 时最主要关注的地方。网络
IoProcessor(I/O处理器):负责在另外一个线程上检查信道上是否有数据读写,拥有本身的Selector(选择器);session
与JAVA NIO不通之处:JAVA NIO中使用一个Selector,不区分IoService与 IoProcessor 两个功能接口;IoProcessor 负责调用注册在IoService 上的过滤器,并在过滤器链以后调用IoHandler。架构
** 未完待续:源码DEMO地址后续会补上 **框架