我已经使用Vert.x框架已有三年多了。我首先尝试了诸如Throo之类的一些辅助项目,也是非常喜欢它,以至于我在Myntra中介绍了它,将其作为Play旁边异步选择框架位置的有力竞争框架。使用它在多个附带项目中构建了多个高级服务后,我毫不犹豫地说这是我最喜欢的用于构建任何Java应用程序的框架。这就是为什么我最终会选择Vert.x框架,虽然有许多的框架比Vert.x好。
1、模块化,有很多模块
通常理解的框架与库是,框架调用用户代码,而用户代码调用库。从意义上说,Vert.x并不是一个框架。它以大量独立模块的形式出现,其中vertx-core是其中唯一的关键共享元素。它本质上是一组库,所有这些库都共享相同的设计原理并且可以很好地发挥作用。但是它们并不能一起使用。我们可以选择断路器和RabbitMQ连接器,将其放入现有的基于Spring的Java应用程序中,一切将正常进行。没有全有或全无,这使得框架选择具有渐进性和可逆性,从而降低了框架选择的风险。
如果框架具有极强的模块化特性,则可以轻松地逐步尝试框架的不同部分,并习惯于它们之间的共享设计构造。然后,我们可以决定应该使用Vert.x构建多少系统,以及在何处需要到其他的库和框架。
2、从头开始异步
与node.js一样,Vert.x围绕事件循环的概念构建,并且从头开始是异步的。这意味着在Vert.x中编写代码的默认思维模型是异步的(无论如何我们都可以在核心Java中编写同步代码,所以为什么要为此使用框架)。Vert.x中的所有内容都围绕不阻塞事件循环而展开,这会迫使开发人员通过完全拥抱异步编程范例来最大限度地提高应用程序的可伸缩性。虽然可以通过blockingHandler等来编写同步代码,但是感觉就像是事后的想法。
3、又快又轻
由于Vert.x从根本上是异步的,因此可以很好地进行即用扩展,因此其内部没有大量的多线程处理。通过消除许多线程同步资源(这是许多其他工具中的性能杀手),这使得系统极其高效,使得Vert.x非常非常快。此外,它的内部运行内存占用空间非常低。应用程序内存使用率仍然非常低且稳定。
4、简明词典
Vert.x具有少量概念,我们需要学习一些概念。一切都是处理程序,一切都是异步的,并有事件循环等支持。构造数量有限,并且它们在各处的行为相同。这源于建立预先一致的设计理念,该理念可以将许多模块无缝地连接在一起。
这本简洁的概念词典非常适合快速入门且带有非常一致的编程风格。实际上,最近我对Vert.x代码中的某些代码与Golang代码的相似之处感到震惊(Golang因其小巧但富有表现力的语言功能集而非常受欢迎)。这使开发人员可以轻松地习惯于在基于Vert.x的代码中四处移动。关于Vert.x还有很多其他很酷的东西,例如它的多语言性质,但是我经常使用它们,所以不想对此发表评论。
5、我希望它能更好或者说建议优化
(1)全能选项:首先,虽然Vert.x不受限制,没有强制性,这是一件很不错的事情,但是一旦我对框架有了一个确定的想法,我就一直在寻找一种更加全能的Vert.x选择。像玩游戏一样!它将根据约定好的框架抽出最佳方法以便实践。QVertx旨在成为Vert.x世界的快速入门服务模板。我还看到了在Spring Boot本身内部运行Vert.x事件循环的一些工作,但是现在看起来还处于早期。
(2)更好地支持序列化格式:Vert.x框架似乎有点不像JSON那样是序列化格式,并且使用XML和其他格式是一个挑战。当然也可以做到,只是有点复杂,我希望这变得更加简单。
领取专属 10元无门槛券
私享最新 技术干货