C++ 如何保持C++;具有现代web客户端界面的实时服务器应用程序?

C++ 如何保持C++;具有现代web客户端界面的实时服务器应用程序?,c++,ajax,com,C++,Ajax,Com,我开发的工业客户机/服务器应用程序(C++)具有很强的实时性要求。 我觉得是时候改变客户端界面的外观了——它是用MFC开发的——但我想知道哪个是正确的选择。 如果我想访问一个Web客户端,有什么方法可以在除了Ajax Web服务COM之外的C++和JavaScript之间交换数据吗? 对Web客户端的要求是:快速状态刷新、用户命令、表 您可能想考虑数据的位置。如果你的应用程序提供后端数据库,你可以编写一个Web应用程序,让你的C++代码机智——Web应用程序是独立的,并向网页用户提供页面并直接与

我开发的工业客户机/服务器应用程序(C++)具有很强的实时性要求。 我觉得是时候改变客户端界面的外观了——它是用MFC开发的——但我想知道哪个是正确的选择。 如果我想访问一个Web客户端,有什么方法可以在除了Ajax Web服务COM之外的C++和JavaScript之间交换数据吗?
对Web客户端的要求是:快速状态刷新、用户命令、表

您可能想考虑数据的位置。如果你的应用程序提供后端数据库,你可以编写一个Web应用程序,让你的C++代码机智——Web应用程序是独立的,并向网页用户提供页面并直接与数据库对话——在这种情况下,你拥有的选项很多,而且更多,正如你所指出的。

< P>你可能想考虑你的数据在哪里生活。如果你的应用程序提供后端数据库,你可以编写一个Web应用程序,让你的C++代码机智——Web应用程序是独立的,并向网页用户提供页面并直接与数据库对话——在这种情况下,你有很多选项,而且更多,正如您所指出的。

几个月前,我的团队不得不做出同样的决定

让它成为一个web应用程序最酷的一点是它以后很容易修改。即使是界面的用户(有点诀窍)也可以修改它以满足他/她的需要。定制软件就变得简单多了

我们使用了一个web界面,ajax似乎是一个不错的选择,它的响应速度非常快

另一方面,这取决于您的实时需求有多强,可能会很困难。我们面临着通过浏览器绘制实时数据的挑战,最后我们使用firefox插件绘制了该图。如果您只是试图显示实时文本数据,那么这应该不是一个大问题

为您的特定应用程序运行一些测试,看看它是什么样子


其他一些要考虑的,如果你有一个网页是你的服务器的一个接口,记住你需要一个方法来更新一个客户端,如果另一个改变了服务器的状态,如果你计划允许多个接口到你的服务器。

几个月前我的团队必须做出同样的决定…… 让它成为一个web应用程序最酷的一点是它以后很容易修改。即使是界面的用户(有点诀窍)也可以修改它以满足他/她的需要。定制软件就变得简单多了

我们使用了一个web界面,ajax似乎是一个不错的选择,它的响应速度非常快

另一方面,这取决于您的实时需求有多强,可能会很困难。我们面临着通过浏览器绘制实时数据的挑战,最后我们使用firefox插件绘制了该图。如果您只是试图显示实时文本数据,那么这应该不是一个大问题

为您的特定应用程序运行一些测试,看看它是什么样子


其他一些要考虑的,如果你有一个网页是你的服务器的一个接口,记住你需要一个方法来更新一个客户端,如果另一个改变了服务器的状态,如果你计划允许多个接口到你的服务器。

< p>在服务器中写一个HTTP服务器来处理Ajax反馈。如果您不想提供文件,请在非标准端口(如8081)上创建服务器,并使用常规web服务器进行实际的网页交付。现在,让AJAX引擎在Bizarro端口而不是端口80上与服务器通信

但是写文件服务器部分也不是那么难。如果您这样做了,您还可以根据需要动态生成带有预填充数据的网页

谷歌桌面搜索现在可以做到这一点。当我在桌面上搜索“foobar”时,打开的URL如下:


在本例中,4664是Bizarro端口。(GoogleDesktop在这里提供所有数据;它只使用Bizarro端口来避免与我正在运行的任何web服务器发生冲突。)

在服务器中编写一个HTTP服务器来处理AJAX反馈。如果您不想提供文件,请在非标准端口(如8081)上创建服务器,并使用常规web服务器进行实际的网页交付。现在,让AJAX引擎在Bizarro端口而不是端口80上与服务器通信

但是写文件服务器部分也不是那么难。如果您这样做了,您还可以根据需要动态生成带有预填充数据的网页

谷歌桌面搜索现在可以做到这一点。当我在桌面上搜索“foobar”时,打开的URL如下:


在本例中,4664是Bizarro端口。(GoogleDesktop在这里提供所有数据;它只使用Bizarro端口,以避免与我正在运行的任何web服务器发生冲突。)

我通常以两层结构构建我的应用程序:

  • 只有真正的重型应用程序CLI。所使用的协议通常只基于文本,由请求和应答组成
  • 将GUI包装为与CLI后端对话的另一个进程
  • web界面只是另一个需要包装的GUI。在CLI界面上包装基于REST/JSON的API也更容易(只需自动翻译消息)


    调试也很容易,因为您只需在两个元素之间转储请求,就可以更容易地重现错误。

    我通常以两层结构构建应用程序:

  • 只有真正的重型应用程序CLI。所使用的协议通常只基于文本,由请求和应答组成
  • 将GUI包装为与CLI后端对话的另一个进程
  • web界面只是另一个需要包装的GUI。在CLI界面上包装基于REST/JSON的API也更容易(只需自动翻译消息)