将C++代码(本地客户端)移植到浏览器(Web应用程序)

3
我有一个使用Qt-Creator SDK编写的C++模块。我希望将这个代码移植到任何网页上,而不会向最终用户泄露源代码。用户应该能够在任何浏览器(Chrome、Firefox、Safari、Explorer)上看到这个模块的输出,而不需要安装任何额外的浏览器插件。有哪些更好的选择可以实现这一目标。我已经搜索并找到了几种选项:
  1. Google原生客户端(NaCl)-但它只在Chrome上运行。这是Web应用程序的未来吗?
  2. PPAPI-不确定是否与NaCl相同
  3. NPAPI-几乎被弃用
  4. Emscripten-它将C++转换为JS。因此源代码对用户可见。
  5. WebAssembly
还有其他的选择可以实现我的要求吗?如果没有,我应该从以上哪一个选项中选择?非常感谢您的帮助。

你可以使用WebSockets - frogatto
感谢您的快速回复,Frogatto。我想要的确切内容是,我想将我的整个C++模块嵌入到HTML页面中,并在任何浏览器上运行它。 - Raju
你是想编写一个浏览器扩展吗?一个Web应用程序?还是其他什么东西?这个问题的目标非常模糊。 - MrEricSir
嗨,MrEricSir。我正在尝试做类似NaCl的事情。但是我希望它可以在任何浏览器上无限制地工作。同时,我想了解上述选项的优缺点。如果有人能帮助我并指引我正确的方向,那就太好了。谢谢。 - Raju
使用Qt创建一个Web服务器,并在有人通过浏览器访问时从模块中呈现输出。您不能使用Qt浏览器插件来适用于所有浏览器的编写方式。 - user3606329
1个回答

3

一些澄清:

  1. NaCl除了Chrome浏览器以外,其他浏览器都不支持。我们(Google的NaCl/WebAssembly团队)更关注WebAssembly的未来。
  2. PPAPI是NaCl使用的API集。
  3. NPAPI:正在退出舞台,需要插件安装。
  4. Emscripten。它确实将C++编译为JS,但我不会说它会向用户公开您的源代码。它已通过通常的编译和优化过程进行了显著的转换,我认为它更接近机器代码而不是源代码。此外,我们正在向emscripten添加WebAssembly支持,因此您可以使用相同的源代码为那些支持它的浏览器生成WebAssembly,并为尚未支持它的浏览器生成asm.js。
  5. WebAssembly是未来,将满足所有您的标准,但值得注意的是,wasm可用的浏览器API和功能与JavaScript可用的相同。例如,您将无法获得对用户文件系统的无限访问权限。所有四个主要的浏览器供应商都在实施WebAssembly,但它首先应该出现在Chrome和Firefox中,因为这些浏览器的发布时间表与它们各自的操作系统没有耦合。

我的建议是尝试使用emscripten来移植您的代码。您可以从今天开始使用asm.js,并在WebAssembly推出时花费最少的额外工作量来针对它。未来会有其他支持wasm的工具链和语言,但今天,emscripten确实是唯一一个就绪的选择。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接