在不久的将来,我将不得不制作一个具有C++后端和web前端的系统(需求)。目前,我对它了解不多。我认为前端将触发数据传输,而不是后端——所以不需要像Comet这样的东西。
由于在这个领域可能没有什么经验,我非常感谢你对我所做的设计决策的评论。
首先,我不喜欢从C++生成HTML的选项。因此,C++后端将不得不与Javascript前端进行通信。我在这里看到的最简单的选项是Ajax。我认为到目前为止应该还可以。
通过Ajax与C++后端进行通信意味着后端应该能够处理HTTP。最好将提供实际数据的后端与HTTP处理功能分开。
在这里我看到了Node.js的位置。我对它有一个概述,这是我所有怀疑的地方。
要在Node.js上有一个HTTP处理服务器,它将把"数据后端"作为Node.js模块?我想,这应该没问题,但我不确定我是否真的需要所有这些异步化,所以可能有一些我不知道的更简单的选项?你会如何制作这样一个系统?
提前谢谢。
"所有这些异步化"并不是Node.js非常努力提供的额外功能。这是一种不同的Web服务视图,一旦你了解了Node.js的工作原理,它就很容易呼吸。
例如,我的同事需要一种将C++程序包装为web服务的方法,但该程序的启动成本很高,所以他们只想运行该程序的一个实例,在循环中运行,为所有web请求提供服务。Node.js中的整个过程只花了不到两个屏幕的时间。
封装为每个请求调用的单个程序可以在不到十行的Node.js中完成。不要认为异步是一件烦人的事情——如果你接受它,Node.js就太棒了。
也就是说,你可以走CGI的路线,用一种更标准的方式来做,最终的结果几乎是一样的。这可能派上用场,也可能派不上用场。
您是否考虑过nginx、Apache等的CGI/FCGI模块选项?
如果没有,那么我认为从它开始是有意义的。你的模块将处理data/json请求,其余的将由HTTP服务器处理。