虽然MINA和Netty有相似的雄心壮志,但它们在实践中有很大的不同,你应该仔细考虑你的选择。我们很幸运,因为我们有很多MINA的经验,并且有时间和Netty一起玩。我们特别喜欢更干净的API和更好的文档。在纸面上,性能似乎也更好。更重要的是,我们知道Trustin Lee会随时回答我们的任何问题,他当然做到了。
我们发现在Netty的一切都更容易。时期。当我们试图重新实现我们在MINA上已经拥有的相同功能时,我们从头开始这样做。通过遵循优秀的文档和示例,我们最终在更少的代码中获得了更多的功能。
Netty Pipeline对我们来说效果更好。它在某种程度上比MINA更简单,MINAs的所有内容都是一个处理程序,由您决定是处理上游事件,下游事件,还是使用更多低级内容。在“重放”解码器中吞噬字节几乎是一种乐趣。能够如此轻松地动态重新配置管道也非常好。
但是,恕我直言,Netty的明星吸引力在于能够创建具有“覆盖一个”的管道处理程序的能力。您可能已经在文档中阅读了有关此覆盖率注释的信息,但实质上它以一行代码为您提供了状态。没有混乱,没有会话映射,同步和类似的东西,我们只需声明常规变量(例如,“用户名”)并使用它们。
但后来我们遇到了一个障碍。我们已经在MINA下有一个多协议服务器,其中我们的应用程序协议通过TCP / IP,HTTP和UDP运行。当我们切换到Netty时,我们在几分钟内将SSL和HTTPS添加到列表中!到目前为止,一切都很好,但是当涉及到UDP时,我们意识到我们已经滑倒了。MINA对我们非常好,因为我们可以将UDP视为“连接”协议。在Netty下,没有这样的抽象。UDP是无连接的,Netty就是这样对待它的。Netty在比MINA更低的级别上暴露了UDP的无连接性。在Netty下,你可以用UDP做一些事情,而不是在MINA提供的更高层次的抽象下做不到的事情,但我们依赖它。
添加“连接的UDP”包装器或其他内容并不那么简单。鉴于时间限制,并且根据Trustin的建议,最好的方法是在Netty中实施我们自己的运输提供商,这不会很快,我们最终不得不放弃Netty。
因此,仔细研究它们之间的差异,并迅速进入一个阶段,您可以测试任何棘手的功能是否按预期工作。如果你对Netty会做这项工作感到满意,那么我会毫不犹豫地通过MINA去做。如果您要从MINA迁移到Netty,那么同样适用,但值得注意的是,这两个API确实有很大的不同,您应该考虑为Netty进行虚拟重写 - 您不会后悔的!
更新:只需使用Netty。它现在是一个成熟的项目,具有构建协议客户端和服务器所需的所有花里胡哨的功能。它拥有强大的社区,有几个积极的贡献者,由企业支持。它还有一本书,“Netty in Action”。它已被许多知名公司和项目采用。与Netty不同,Apache MINA自从我离开项目以来一直处于维护模式。
MINA具有更多开箱即用的功能,但代价是复杂性和相对较差的性能。其中一些功能被集成到核心中太紧密,即使用户不需要它们也无法删除。在Netty中,我试图解决这些设计问题,同时保留MINA的已知优势。
目前,MINA中提供的大多数功能在Netty中也可用。在我看来,Netty具有更清晰,更有文档记录的API,因为Netty是尝试从头开始重建MINA并解决已知问题的结果。如果您发现缺少基本功能,请随时将您的建议发布到论坛。我很乐意解决您的问题。
同样重要的是要注意Netty具有更快的开发周期。简单地说,查看最近发布的发布日期。此外,您应该考虑MINA团队将继续进行重大重写MINA 3,这意味着他们将完全破坏API兼容性。
-
如何使用Java中的RESTful Web服务获取远程/客户端IP地址? 我已经在我的项目中编写了Rest Web服务。Web服务调用可能来自不同 machine.so 我需要通过REST Web服务找出IP地址。 从这个请求.getRemoteAddr()使用这个。 但是我不能使用getRemoteAddr()。因为我的请
-
从包含大量文件的zip文件中提取1文件的最快方法是什么? 我尝试了但它们也缺少一些东西。 LZMA SDK不提供一种如何使用的文档/教程,这非常令人沮丧。没有 javadoc。 虽然7z jbinding没有提供一种简单的方法来只提取1个文件,但是,它只提供了提取zip文件
-
输入/输出流在销毁时是否关闭? Java 中的 InputStreams 和 OutputStreams 是否在销毁时关闭()?我完全理解这可能是不好的形式(特别是在C和C++世界中),但我很好奇。 另外,假设我有以下代码: 无名的FileInputStream是否在p.load
-
Java 程序中的字符串大小是否有任何限制? 我有一个字符串定义为 字符串 xx 我可以分配的字符数是否有任何限制? 2) 我正在将用户输入分配给此字符串 xx。70%的人只说一个字。有时他们给出一个大句子,所以想知道可
-