Apache Mina介绍

一、Apache Mina介绍

Apache Mina是一个能够帮助用户开发高性能和高伸缩性网络应用程序的框架。它通过Java nio技术基于TCP/IP和UDP/IP协议提供了抽象的、事件驱动的、异步的API。



 

ApacheMINA是一个网络应用程序框架,用来帮助用户简单地开发高性能和高可扩展性的网络应用程序。它提供了一个通过Java NIO在不同的传输例如TCP/IP和UDP/IP上抽象的事件驱动的异步API。

Apache MINA 也称为:

● NIO 框架库

● 客户端服务器框架库

● 一个网络套接字库

MINA虽然简单但是仍然提供了全功能的网络应用程序框架:

● 为不同的传输类型提供了统一的API:

○ 通过Java NIO提供TCP/IP 和 UDP/IP支持

○ 通过RXTX提供串口通讯(RS232)

○ In-VM管道通讯

○ 你能实现你自己的API!

● 过滤器作为一个扩展特性; 类似Servlet过滤器

● 低级和高级的API:

○ 低级: 使用字节缓存(ByteBuffers)

○ 高级: 使用用户定义的消息对象(objects)和编码(codecs)

● 高度定制化线程模型:

○ 单线程

○ 一个线程池

○ 一个以上的线程池(也就是SEDA)

● 使用Java 5 SSL引擎提供沙盒(Out-of-the-box) SSL · TLS · StartTLS支持

● 超载保护和传输流量控制

● 利用模拟对象进行单元测试

● JMX管理能力

● 通过StreamIoHandler提供基于流的I/O支持

● 和知名的容器(例如PicoContainer、Spring)集成

● 从MINA平滑的迁移到Netty, MINA是Netty的前辈。

二、Apache Mina客户端的通信过程:

通过SocketConnector同服务器端建立连接。

链接建立之后I/O的读写交给了I/O Processor线程,I/O Processor是多线程的。

通过I/O Processor读取的数据经过IoFilterChain里所有配置的IoFilter,IoFilter进行消息的过滤,格式的转换,在这个层面可以制定一些自定义的协议。

最后IoFilter将数据交给Handler进行业务处理,完成了整个读取的过程。

写入过程也是类似,只是刚好倒过来,通过IoSession.write写出数据,然后Handler进行写入的业务处理,处理完成后交给IoFilterChain,进行消息过滤和协议的转换,最后通过I/O Processor将数据写出到socket通道。

三、Apache Mina  Server端和Client端:

由于Server端和Client端都是基于以上三个组件的,因此对于Server端和Client端编程来说就都有类似的代码结构。

对于Server端来说: 

1. 创建I/O service - 这里就是创建IOAcceptor类监听端口。 

2. 创建I/O Filter Chain - 这里就是告诉使用那些IoFilter。 

3. 创建I/O Handler - 自己的业务逻辑。  

对于Client端来说: 

1. 创建I/O service - 这里就是创建IOConnector类来建立到Server端的连接。 

2. 创建I/O Filter Chain - 这里就是告诉使用那些IoFilter。 

3. 创建I/O Handler - 自己的业务逻辑。

猜你喜欢

转载自gaojingsong.iteye.com/blog/2309405