我喜欢NodeJS的一些功能,特别是JQuerification,通过socket.io,视图和css引擎的websocket兼容性,我不能用于JSP(当然还有异步调用)。至少,据我所知。所以我打算创建我的应用程序,后端将是Java,前端将由NodeJS生成。前端表单将向NodeJS发送数据,NodeJS将通过NodeJS和Java后端之间的套接字连接将数据传递给Java后端。因此NodeJS基本上就像前端和Java后端之间的中间件。
这将是一个非常大的应用程序,我的计划看起来令人兴奋,但我会讨厌我未来的自我走这条路吗?
我的优势在于我可以拥有大量的实时图表和仪表板,并增强与表单的交互。
答案 0 :(得分:19)
问题是你谈到通用平台。 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.只是为了炒作和令人愉快的理论。
答案 1 :(得分:9)
对我来说,这个计划本身听起来很合理。但根据我的经验,你的团队足够强大,能够承受它是很重要的。在这种情况下,我不会走这条路线,除非至少有两个好的开发者,一个用于后端部分,一个用于前端。否则,在处理如此多的框架/概念时,它很容易迷失,并且没有任何结果。
除此之外,我还要注意使后端和前端之间的通信层容易可测试,这将排除套接字连接。如果您的性能要求允许,我会选择浏览器可探索的REST样式界面。这也可以在以后减少工作量时删除“花哨”的前端,并在JSP或其他任何东西中实现。万一它失控了......
答案 2 :(得分:2)
我个人认为NodeJs很乐意做一些事情。但是,我现在不会在生产环境中使用。特别是如果生产环境将处理关键数据。
我可能要等到,它至少会达到1.0版本。
但是如果你打算将它用于非关键应用程序,我会说它去做。 IT总是很好的开始,我想随着你的应用程序的增长,NodeJS也会成熟。
然后,这是我个人的意见。我在我的项目中只使用了NodeJS,我从未在任何生产环境中使用过NodeJ。
答案 3 :(得分:1)
如果你要编写java中的一些后端,为什么不在java中完成所有操作?
不确定你的意思“我喜欢NodeJS的一些功能,特别是JQuerification,通过socket.io的websocket兼容性,我不能用于JSP的视图和css引擎(当然还有异步调用)。”
jquerification - 你的意思是jquery?你可以用jsp做到这一点。
java中的websockets:http://caucho.com/resin-4.0/examples/websocket-java/index.xtp,尽管你也可以使用servlet 3.0支持彗星服务器推送
哪个css引擎不能和jsp一起使用?
异步调用是什么意思?
对我来说,node.js更多的是关于你是否想要一个非阻塞服务器。如果这是要求,你也可以在java中做到这一点 - 大多数现代服务器支持配置NIO。
答案 4 :(得分:1)
您是否会聘请开发人员来处理您的项目,还是单独进行?如果您计划不断扩展开发团队,我发现最小化产品中离散技术的总数通常会带来团队扩展的好处,即大量超过添加的性能和/或生产力优势那技术。你添加的每一项技术都会让雇用所有技术的人变得更加困难,并且大大增加了当你雇佣一个不是所有人的专家的机会时,他们会因为他们有很多东西而搞砸了。学习。
你真正使用node.js的论据看起来很弱;没有什么内在的Java使得它无法做“实时图表和仪表板,并增强与表单的交互。”将技术添加到组合中是因为它提供了实现业务目标实际上不是必需的“功能”,这通常是一个错误。你也提到redis,我会把它放在同一条船上。节点和redis都很酷(能够说你想要添加到你的混音中的技术应该总是发出警告铃声,顺便说一下)并且有合法的用例,但你所描述的似乎并不是一个。如果java已经在繁重,那么添加一个异步的“中间层”并不会对性能产生太大影响。
如果您发布有关应用程序特征,预期负载和每个请求所完成的处理工作的更多详细信息,您可能会获得有关最佳体系结构的更多有用的评论。祝你好运!
答案 5 :(得分:0)
我认为nodejs非常适合我们处理IO处理作业的第一层。
第二层可能是像rabbitmq这样的经纪人。最后一层是您的业务逻辑,它是用Java实现的。所以我建议看看
我的方法是一种中心辐射架构:
https://github.com/farshad-nsh/nodejs-rabbitmq-Java
使用这种方法,您可以同时欣赏nodejs和java世界,并在分布式软件中利用两个世界的优势。