Java + NodeJS通过套接字进行通信:坏主意?

2022-09-01 17:31:46

我喜欢NodeJS的一些功能,特别是JQuerization,通过 socket.io websocket兼容性,视图和css引擎,我不能与JSP一起使用(当然还有异步调用)。至少,据我所知。因此,我计划创建我的应用程序,其中后端将是Java,前端将由NodeJS生成。前端表单将数据发送到 NodeJS,NodeJS 将通过 NodeJS 和 Java 后端之间的套接字连接将其传递到 Java 后端。所以NodeJS基本上就像前端和Java后端之间的中间件。

这将是一个相当大的应用程序,我的计划看起来很令人兴奋,但我会因为走这条路而讨厌我未来的自己吗?

我这样做的好处是,我可以拥有大量的实时图表和仪表板,并增强与表单的交互。


答案 1

问题是你谈论的是一个通用平台。Node.JS作为前端,JAVA作为后端。根据您的实际需求,这可能是奇妙或可怕的。

那又怎样?人们会根据自己的感觉做出回应,这取决于他们是否喜欢成熟的技术(或其他什么)。

2021 年编辑

NodeJS已经成熟了很多,即使大多数人喜欢它永远不会是java(反之亦然)。我仍然建议坚持使用您为给定上下文选择的3层架构,并仅在需要时添加技术堆栈。我宁愿为数据科学等真实需求添加一个新的堆栈

大肆宣传

一个人考虑节点.js的主要原因是炒作。就像几年前的XML数据库一样。XML很酷,一切都必须用XML完成...如果你注意到,没有人再谈论XML数据库了。

因此,node.js是新的,您附近的博客都会谈论它,再加上NoSQL数据库,它必须是完美的选择。

异步 IO

然后是像异步IO这样的理由。你知道的?POSIX标准中的东西可能已经存在了20多年。是的,你在学校的C课程中学到了什么。顺便说一句,标准的JAVA API也支持它。事实上,如果你听 node.js creator,这不是一个新概念,而是只使用异步库。大多数库都使用线程模型,不能用于异步。Javascript本身并不是一个目标,但是JS中缺乏任何标准库是一个很好的起点,因为它可以避免普通人通过包含错误的库来搞砸一切。这不是我说的。

关键是现在有一些图书馆,但有几个是由公司支持的。我们仍然没有到达那里。同时,标准的专业框架已经在需要时支持异步行为,例如长轮询HTTP请求。请参阅 Lift 框架,请参阅 Nio 的 Jetty 或 Tomcat 支持。

就像XML数据库一样。现在,像Oracle这样的专业数据库确实支持XML。因此,如果您需要它,您可以保留标准的高性能数据库...而只有这样才能做到这一点的专用解决方案...好吧,甚至没有人记得它的名字。

Javascript

现在是javascript。Javascript是一个大胆的选择...因为它缺乏图书馆。你知道还缺少什么。这就是为什么你需要一个java后端!但不仅如此...IDE对javascript的支持并不好。自动完成?几乎不工作。重构?开什么玩笑?多线程?不。node.js就像Windows 3.1。它使用协作式多任务处理。

结论

Node.js很有趣,但它是不成熟的。你自己说过,你必须选择java,这样你才能做真正的事情,比如连接到数据库。此堆栈增加了另一层的复杂性。

要么你真的需要它,这也许是一个很好的折衷方案......要么你不需要它,你只是取悦自己...当你看到自己花更多的时间做所有事情时,讨厌自己......只是说你有一个4层堆栈(浏览器,Node.js,JAVA,DB)而不是3。只是为了炒作和令人愉悦的理论。


答案 2

对我来说,这个计划本身听起来很合理。但根据我的经验,重要的是你的团队足够强大,可以承受它。在这种情况下,除非至少有两个好的开发人员,一个用于后端部分,一个用于前端,否则我不会走这条路。否则,在处理如此多的框架/概念时,很容易迷失方向,而一切都不会完成。

除此之外,我会注意使后端和前端之间的通信层易于测试,这将排除套接字连接。如果你的性能要求允许,我会选择一个浏览器可探索的REST风格界面。这也使得以后可以减少工作量的情况下放弃“花哨”的前端,并在JSP或其他任何东西中实现一些东西。以防万一它失控...


推荐