从另一个Nodejs应用程序调用一个Nodejs应用程序中的API的方法

时间:2014-05-24 11:56:06

标签: node.js api rest ipc

我们的应用程序将有一个网站和一个移动应用程序,它们都与同一API后端进行通信。我有一个Nodejs应用程序只提供API,第二个Nodejs应用程序提供网站的html页面。我正在为这两个应用程序使用Expressjs Web框架。

从另一个Nodejs应用程序调用一个Nodejs中的API有哪些不同的方法?关于何时使用每种方法的其他信息将是很好的。

修改

实施例, 我有以下申请

  • NodejsAPI(node& express)
  • NodejsWebsite(node& express)
  • 一个MobileApp

NodejsAPI将提供对MobileApp和NodejsWebsite的API的访问。 MobileApp将通过http访问API。但我想知道NodejsWebsite在NodejsAPI应用程序中调用API的选项有哪些。据我所知,这将是两个进程之间的进程间通信。对于.net应用程序,可以使用.net管道,tcp通信等进行此类通信。在unix和linux平台上,Nodejs应用程序的等效方法是什么?

从IPC的角度思考我发现以下内容很有用,
What's the most efficient node.js inter-process communication library/method? https://www.npmjs.org/package/node-ipc

1 个答案:

答案 0 :(得分:6)

node's vanilla http clienthttp client swiss army knife, request,然后有superagent, similar to jQuery.ajax。为了让您的生活更轻松,有armrestfementa,这两种口味都是同一种。

现在,如果您想获得更高的性能并拥有应用程序的另一个界面,可以使用以下RPC解决方案之一:

  • dnode:最受欢迎的解决方案之一。这让事情变得非常简单。这使得无缝使用远程接口。 phantomjs-node使用dnode。与其他对象相比,对大型对象的表现不佳。对于小东西,它是完美的。还有其他语言的其他端口。

  • zerorpc:使用zeromq作为套接字库,它以可靠而闻名。它也支持连接到python客户端。

  • smith:cloud9编辑器后端中使用的RPC系统。基本上和dnode一样好,但速度更快。 smith和zerorpc都使用msgpack而不是JSON,因此它们将在线上保存字节。

  • axon-rpc:轻量级解决方案。很好用作zerorpc。您可以将其配置为使用带有axon-msgpack的msgpack。

上述所有工作都适用于TCP(在不同的机器上使用)或Unix域套接字(比TCP快,但只能在同一台机器上)。

如果您想获得更高的性能,可以将NodejsAPI嵌入到NodejsWebsite中,只需要它的接口模块即可。

如果您想要比这更好的答案,请写一个更具体的问题。这个问题太宽泛了。