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

Porting c++ code (native client) to browser (Web app)

本文关键字:浏览器 Web 应用程序 本机 客户端 代码      更新时间:2023-10-16

i使用QT-CREATOR SDK编写的C 模块。我想将此代码移植到任何网页上,而不会损害最终用户的源代码。用户应该能够在任何浏览器(Chrome,Firefox,Safari,Explorer)上看到此模块的输出,而无需安装任何其他浏览器插件。实现这一目标的更好选择是什么。我谷歌搜索了几乎没有这样的选择:

  1. Google本地客户端(NACL) - 但仅在Chrome上运行。这是Web应用程序的未来吗?
  2. ppapi-不确定它是否与NaCl相同
  3. npapi-几乎被解释
  4. emscripten-它将C 转换为JS。因此,用户可以看到源代码。
  5. WebAssembly

我还需要实现其他选择吗?如果没有,我应该从上述选项中挑选哪个!?提前谢谢了。

一些澄清:

  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可用的功能相同。因此,例如,您将无法无限制地访问用户的文件系统。所有4个主要的浏览器供应商都在实现WebAssembly,但首先应出现在Chrome和Firefox中,因为这些浏览器的发布时间表与各自的操作系统都没有耦合。

我的建议是尝试使用Emscripten移植代码。您可以从今天开始并使用ASM.JS,当WebAssembly启动时,您可以以最少的额外精力来定位目标。将来会有其他工具链和语言来支持WASM,但是今天Emscripten确实是唯一的即时选择。