Javascript Node.js应用程序与外部程序交互的最佳方式

Javascript Node.js应用程序与外部程序交互的最佳方式,javascript,node.js,web-services,web,Javascript,Node.js,Web Services,Web,我是web开发的初学者-我正在创建一个需要用户输入的网站,对这些输入进行复杂的数学处理,并将结果返回给客户端。我正在考虑在另一个单独的应用程序中实现数学类,这更适合于这样的工作(如java或C++,其中有好的数学库,并且实现将更加健壮和更快)。我想知道什么是最好的方式来做到这一点,建筑方面 “虚拟”方法将从Node.js应用程序生成一个进程,并等待其从stdout输出,解析它(可能是JSON),然后在将结果发送到客户端之前对其进行处理。我很难相信这是实现这一点的最佳方法(它似乎太容易出错,没有正

我是web开发的初学者-我正在创建一个需要用户输入的网站,对这些输入进行复杂的数学处理,并将结果返回给客户端。我正在考虑在另一个单独的应用程序中实现数学类,这更适合于这样的工作(如java或C++,其中有好的数学库,并且实现将更加健壮和更快)。我想知道什么是最好的方式来做到这一点,建筑方面

“虚拟”方法将从Node.js应用程序生成一个进程,并等待其从stdout输出,解析它(可能是JSON),然后在将结果发送到客户端之前对其进行处理。我很难相信这是实现这一点的最佳方法(它似乎太容易出错,没有正确的错误处理,依赖于输出,而且只是简单的错误实践)。一个更好的方法是让java或C++应用程序在特定的端口上侦听,等待来自NoDE.js应用程序的请求。但是,这需要更多地考虑负载平衡(它将如何随着请求的数量进行扩展?)。最后,我在网上找到的最后一种方法是使用RabbitMQ等排队系统作为Node.js应用程序和Java应用程序之间通信的方式

通常(在“传统”软件中),实现一个单独的库来保存我们可以调用的所有数学魔法是一个很好的方法


使用Node.js/web应用程序实现这一点的最佳方法是什么?对于这样的问题,必须有良好的实践/模型/架构/设计。谢谢

> P> >我能想到的最好的方法是编写一个强的No.NoDEJS模块,你可以使用C++和任何一个库来编写代码,并从节点的JavaScript导出一些要调用的API。 这还允许您将本机应用程序打包为NodeJ的模块,然后可以使用npm分发和编译/安装NodeJ

这是来自节点网站的


这不是最简单的方法,但肯定是更优雅和可维护的。

< P> >我认为最好的方法是编写一个强的原生NoDEJS模块,你可以使用C++和任何一个库来编写代码,并从节点的JavaScript导出一些要调用的API。 这还允许您将本机应用程序打包为NodeJ的模块,然后可以使用npm分发和编译/安装NodeJ

这是来自节点网站的


这不是最简单的方法,但肯定是更优雅、更可操作的方法。

如果你的问题可以以无状态的方式组织——即,你发送一个包含数据和相关任务的请求,然后作为响应接收结果,我可能会为前端创建一个Angle应用程序,以及后端的多个节点服务器(如果需要同时处理多个请求)

正如下面第一个答案所指出的,您可以将问题的任何部分放入本机代码中,但更简单的方法是使用套接字连接到服务器,以任何语言进行计算,等等。。。在一个项目中,我使用socket.service来处理与服务器之间的所有通信。(下一段中的angular fullstack生成器具有这样一个骨架socket.service部件。)

在前端与节点后端的结合方面,使用MongoDB、Express、AngularJS和node创建MEAN stack应用程序的Yeoman generator()允许您按照最佳实践快速设置项目。角度全堆栈生成器将为您提供一个框架,在许多方面都领先光年。您可以使用yeoman生成示例应用程序前端(angular、express)和后端(NodeJs、MongoDB),并支持套接字等

这也不是很简单,但最后,经过几个月的工作,你将有一个结构化的问题和解决方案,你永远不会放弃。当我第一次想进入这个空间时,我走的就是这条路。事实上,前端是/是更难的部分,后端通过套接字、http或其他变得更简单的方式连接。就服务器而言,AWS,甚至只是通过DigitalOcean或许多其他方式在Linux上使用nginx,都是廉价且灵活的


我希望这有帮助

如果您的问题可以以无状态的方式进行结构化,即发送一个包含数据和相关任务的请求,然后将结果作为响应接收,我可能会为前端创建一个Angle应用程序,为后端创建多个节点服务器(如果您需要同时处理多个请求)

正如下面第一个答案所指出的,您可以将问题的任何部分放入本机代码中,但更简单的方法是使用套接字连接到服务器,以任何语言进行计算,等等。。。在一个项目中,我使用socket.service来处理与服务器之间的所有通信。(下一段中的angular fullstack生成器具有这样一个骨架socket.service部件。)

在前端与节点后端的结合方面,使用MongoDB、Express、AngularJS和node创建MEAN stack应用程序的Yeoman generator()允许您按照最佳实践快速设置项目。角度全堆栈生成器将为您提供一个框架,在许多方面都领先光年。您可以使用yeoman生成示例应用程序前端(angular、express)和后端(NodeJs、MongoDB),并支持套接字等

这也不是很简单,但最后,经过几个月的工作,你将有一个结构化的问题和解决方案,你永远不会放弃。当我第一次想进入这个空间时,我也是这样想的