Mina和Netty都是Java领域高性能和高可伸缩性的网络应用框架,用以快速开发高性能、高可靠性的网络服务器和客户端程序。MINA是 Apache 组织的一个项目,Netty是由JBOSS提供的一个java开源框架,Mina的历史比Netty要早,都是Trustin Lee的作品,之前看过一篇文章专门讲为什么要开发Netty,也就是Mina到Netty的演化历史,有兴趣的可以百度一下。 目前正在使用 MINA 的软件包括有:Apache Directory Project、AsyncWeb、ObjectRADIUS、RED5 Server、AMQP、Openfire 等等。Netty已经得到成百上千的商业/商用项目验证,如Hadoop的RPC框架Avro、RocketMQ以及主流的分布式通信框架Dubbo等等。 Netty与Mina相比具有哪些优势呢? 1、Netty更晚,相比Mina更加稳定,性能更好; 2、Mina将内核和一些特性的联系过于紧密,使得用户在不需要这些特性的时候无法脱离,相比下性能会有所下降,Netty解决了这个设计问题; 3、Netty的文档更加清晰,很多Mina的特性在Netty里都有; 4、Netty更新周期更短,新版本的发布比较快; 5、它们的架构差别不大,Mina靠apache生存,而Netty靠jboss,和jboss的结合度非常高,Netty有对google protocal buf的支持,有更完整的ioc容器支持(spring、guice、jbossmc和osgi); 6、Netty比Mina使用起来更简单,Netty里你可以自定义的处理upstream events和downstream events,可以使用decoder和encoder来解码和编码发送内容; 7、Netty和Mina在处理UDP时有一些不同,Netty将UDP无连接的特性暴露出来;而Mina对UDP进行了高级层次的抽象,可以把UDP当成'面向连接'的协议,而要Netty做到这一点比较困难。 目前我们公司网络通讯这块也是用的Netty,你只需要考虑协议的编码解码问题,对于网络连接、心跳机制等问题都有Netty框架来做,而且Netty默认对一些常用的协议给予了实现。 |
|