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

Java+;NodeJS通过套接字通信:坏主意?,java,node.js,scalability,Java,Node.js,Scalability,我喜欢NodeJS的一些特性,特别是jqueryization、通过socket.io与websocket的兼容性、视图和css引擎,这些我无法与JSP一起使用(当然还有异步调用)。至少,据我所知。因此,我计划创建我的应用程序,其中后端将是Java,前端将由NodeJS生成。前端表单将数据发送到NodeJS,NodeJS将通过NodeJS和Java后端之间的套接字连接将数据传递到Java后端。所以NodeJS基本上就像前端和Java后端之间的中间件 这将是一个相当大的应用程序,我的计划看起来令人

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

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


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

对我来说,该计划本身听起来很合理。但从我的经验来看,你们的团队有足够的实力来承受这一切是很重要的。在这种情况下,除非至少有两个好的开发人员,一个用于后端,另一个用于前端,否则我不会走这条路。否则,在处理如此多的框架/概念时,很容易迷失方向,什么都做不完


此外,我会注意使后端和前端之间的通信层易于测试,这将排除套接字连接。如果您的性能要求允许,我会选择浏览器可探索的REST样式界面。这也使得在以后减少工作量的情况下放弃“花哨”的前端成为可能,并以JSP或其他方式实现某些东西。以防万一……我个人觉得NodeJs很适合做一些闲聊。但是,到目前为止,我不会在生产环境中使用。特别是如果生产环境将处理关键数据

我可能会等到,至少到了1.0版

但如果你打算将它用于非关键应用程序,我会说,去吧。开始总是好的,我想随着应用程序的增长,NodeJS也会成熟


这也是我个人的观点。我只在我的辅助项目中使用过NodeJS,我从未在任何生产环境中使用过NodeJS。

如果要用java编写一些后端,为什么不全部用java编写呢

我不知道你所说的“我喜欢NodeJ的一些特性,特别是jQuery、通过socket.io的websocket兼容性、视图和css引擎,这些我不能与JSP一起使用(当然还有异步调用)。”

jquery-你是说jquery?您可以使用jsp实现这一点

java中的websockets:,尽管您也可以使用Servlet3.0支持的comet服务器推送

哪个css引擎不能与jsp一起使用

异步调用是什么意思


对我来说,node.js更多的是关于是否需要一个非阻塞服务器。如果这是需要的话,您也可以在java中这样做—大多数现代服务器支持为NIO配置。

问题在于您谈到的是通用平台。Node.JS作为前端,JAVA作为后端。根据你的实际需要,这可能是奇妙的,也可能是可怕的

那又怎样?人们会根据自己是否喜欢成熟的技术(或其他)做出回应

炒作

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

所以node.js是新的,你附近的博客谈到它,再加上NoSQL数据库,它一定是完美的适合

异步IO

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

关键是现在有一些库,但也有一些是由公司支持的。我们仍然不在那里。同时,标准专业框架已经在需要时支持异步行为,如长轮询HTTP请求。参见Lift framework,参见Jetty或Tomcat对NIO的支持

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

Javascript

现在来看javascript。Javascript是一个大胆的选择。。。因为它缺少图书馆。你知道还缺少什么。这就是为什么您需要一个java后端!但不仅如此。。。IDE对javascript的支持不好。自动完成?勉强工作。重构?你在开玩笑吗?多线程?不。node.js类似于windows 3.1。它使用多任务协作

结论

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


要么你真的需要它,也许这是一个很好的妥协。。。要么你不需要它,你只需要满足自己。。。当你看到自己花更多的时间做每件事时,恨自己。。。只是说,您有一个4层堆栈(browser、Node.js、JAVA、DB),而不是3层。只是为了炒作和令人愉快的理论。

你打算雇佣开发人员来完成你的项目,还是