Java + NodeJS通过socket进行通信:不好主意?

Hyd*_*erA 25 java scalability node.js

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

这将是一个非常大的应用程序,我的计划看起来令人兴奋,但我会讨厌我未来的自我走这条路吗?

我的优势在于我可以拥有大量的实时图表和仪表板,并增强与表单的交互.

Nic*_*uet 20

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

所以呢?如果他们更喜欢成熟技术(或其他什么),人们会根据他们的填充做出回应.

炒作

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

所以node.js是新的,你附近的博客谈论它,再加上NoSQL数据库,它必须是最合适的.

异步IO

然后出现像async IO这样的理由.你懂?POSIX标准中的东西可能超过20年.是的,你在C课程中在学校学到的东西.顺便提一下,标准的JAVA API也支持它.实际上,如果你听node.js创建者,这不是新概念,而是仅使用异步库.大多数库都使用线程模型,不能用于异步.Javascript本身并不是一个目标,但JS中缺少任何标准库是一个很好的起点,因为它可以避免普通的joe通过包含错误的库来搞乱一切.这不是我说的那个.

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

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

使用Javascript

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

结论

Node.js很有趣,但它还不成熟.你自己说,你必须选择java,这样你才能做到像连接数据库这样的真实内容.此堆栈增加了另一层的复杂性.

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

  • 实际上,Java不支持异步IO.Java支持非阻塞IO.这是两种不同的IO模型.关于NIO的异步IO更简单,因为您可以提供将在操作完成时执行的回调.但我同意你的看法.最终node.js根本不是成熟的平台. (4认同)
  • 我不想说node.js很糟糕.这是不成熟的.我不会选择它.但我可以理解一些喜欢它.然后我会尽量保持简单.使用一个后端(完整的node.js或完整的java),而不是两个!或者证明你真的离不开两者.对于通用建议,没有理由这样做. (2认同)

Wal*_*inz 9

对我来说,这个计划本身听起来很合理.但根据我的经验,你的团队足够强大,能够承受它是很重要的.在这种情况下,我不会走这条路线,除非至少有两个好的开发者,一个用于后端部分,一个用于前端.否则,在处理如此多的框架/概念时,它很容易迷失,并且没有任何结果.

除此之外,我还要注意使后端和前端之间的通信层易于测试,这将排除插座连接.如果您的性能要求允许,我会选择浏览器可探索的REST样式界面.这也可以在以后减少工作量时删除"花哨"的前端,并在JSP或其他任何东西中实现.以防它失控......