由于项目需要,提前预备一些知识。凡是做点准备总是有好处的!!!
MINA是用于开发高性能和高可用性的网络应用程序的基础框架 通过使用MINA框架可以可以省下处理底层I/O和线程并发等复杂工作,开发人员能够把更多的精力投入到业务设计和开发当中 MINA框架的应用比较广泛,应用的开源项目有Apache Directory、AsyncWeb、Apache Qpid、QuickFIX/J、Openfire、SubEthaSTMP、red5等。
基于java NIO类库开发;采用非阻塞方式的异步传输; 事件驱动;支持批量数据传输;支持TCP、UDP协议;串口通讯程序; 控制反转的设计模式(支持Spring);采用优雅的松耦合架构;可灵活的加载过滤器机制;单元测试更容易实现; 可自定义线程的数量,以提高运行于多处理器上的性能;采用回调的方式完成调用,线程的使用更容易。
由于Netty的主导作者与Mina的主导作者是同一人,出自同一人之手的Netty在设计理念上与Mina基本上是一致的 Mina和Netty都是Java领域高性能和高可伸缩性网络应用程序的网络应用框架,在实际生产应用中都是不错的选择。 Netty 是一个吸收了多种协议的实现经验,这些协议包括FTP,SMTP,HTTP,各种二进制,文本协议,并经过相当精心设计的项目
当客户首次访问采用MINA编写的程序时,IoAcceptor作为线程运行,负责接受来自客户的请求。 当有客户请求连接时,创建一个Session,该Session与IoProcessor、SocketChannel以及IOService联系起来。 IoProcessor也作为另外一个线程运行,定时检查(轮询)客户是否有数据到来,并对客户请求进行处理,依次调用在IOService注册的各个IoFilter,最后调用IoHandler进行最终的逻辑处理,再将处理后的结果Filter后返回给客户端。