2011-06-11 123 views
4

在我最近的将来,我将不得不使用C++后端和web前端(需求)制作一个系统。目前,我对此不甚了解。我认为Frontend会触发数据传输,而不是后端 - 所以不需要Comet类的东西。设计Javascript前端<-> C++后端通信

由于这方面可能经验不足,所以我非常感谢您对我所做的设计决定的评论。

首先,我不喜欢从C++生成HTML的选项。因此,C++后端将不得不与Javascript前端进行通信。我在这里看到的最简单的选项是Ajax。到目前为止,我认为它应该没问题。

通过Ajax与C++后端进行通信意味着后端应该能够处理HTTP。将后端分离出来可以提供来自HTTP处理功能的实际数据。

在这里,我看到了Node.js的地方。我对它有了一个概述,这是我所有疑惑所在的地方。

在Node.js上有一个HTTP处理服务器,它将'数据后端'作为一个Node.js模块?我认为,应该没问题 - 但我不确定我是否真的需要所有这些不同步,所以可能会有一些我不知道的更简单的选项?你会如何制造这样的系统?

在此先感谢。

+0

看看您的前端Backbone.js。 http://documentcloud.github.com/backbone/ – Stephen 2011-06-11 05:48:37

+0

谢谢。这是有价值的信息 – Igor 2011-06-11 07:48:18

回答

3

“所有这些异步”并不是Node.js非常难以提供的额外功能。这是一个不同的Web服务视图,一旦你了解了Node.js的工作原理,就像呼吸一样简单。例如,我的同事需要一种方法来将C++程序打包为一个Web服务,但该程序的启动成本很高,所以他们只想运行一个程序实例,运行在一个循环中,为所有网络请求提供服务。 Node.js中的所有内容只用了不到两个screenful。

包装为每个请求调用的单个程序可以在少于十行的Node.js中完成。不要认为异步性是一件杂事 - 如果你拥抱它,Node.js是非常棒的。这就是说,你可以去CGI路线,并以更加标准的方式来完成,最终的结果几乎是一样的。 This可能会或可能不会派上用场。

+0

我喜欢我现在知道的有关node.js的内容。感谢你的回答。大概我会走这条路。至于CGI,我认为最好在节点上使用更高级别的JavaScript,而不使用CGI C++。 – Igor 2011-06-11 07:26:50

0

您是否考虑过nginx,Apache等CGI/FCGI模块选项?

如果不是,那么我觉得从它开始是有道理的。您的模块将处理数据/ json请求,其余部分将由HTTP服务器处理。

+0

谢谢,现在我有一个nginx模块的概述。在这种情况下,“nginx下的模块”对我来说看起来非常类似于“node.js下的模块”和node.js上的模块,它们将用更高级的语言编写,这是一个优点。你为什么认为nginx选项更好? – Igor 2011-06-11 07:33:03