我们拥有可移植的 C++ 源代码,可用于在各种不同的硬件(10 多个平台)上部署游戏和应用程序。我们现在对部署到 Web 浏览器感兴趣。
Chrome 有其 Native Client 架构。但是,作为一个平台,我们仅限于 Chrome 用户。是否有任何其他新兴标准允许编译 C/C++ 源并将其定位到 Web 浏览器?
在这个话题上,短期内没有 100% 的答案。
原因是没有一个主要的 Web 浏览器实际上支持运行完全安全的本机编译代码,就像 C++ 一样。ActiveX 从来没有完全安全,也不是 100% 知道 chrome 的适用性,但是 chrome 在用户空间中做了很多事情。诸如已编译机器代码之类的东西只能从操作系统内核制作的适当沙箱中真正得到信任。
即将发布的 Windows 8 版本采用新的沙盒技术,与新的 Windows RT 编译器一起将允许在浏览器中使用 C++,并且此新代码得到了适当的保护。
使用 Linux 的人正在那里研究不同类型的沙箱,内核也支持这些沙箱。您可能会在遥远的将来将它们视为 linux 浏览器的沙箱以及用于 VMS 托管解决方案等的沙箱......
所以现在,C++ 代码的解决方案是......
1) Google chrome 应用程序 2) Windows 8 IE 10 与新的 Windows 8 Metro 应用程序等...
您必须为所有系统构建您的应用程序,并使用服务器 cookie 来识别要发送到浏览器的构建。很像以前有 ActiveX 和 Mozilla Netscape 插件的时候。换句话说,新的和即将推出的插件场景将比 ActiveX 和 Netscape 插件更安全(因为它会被适当地沙盒化),但它可能会更昂贵和技术性更高,因为......
1)将有更多的浏览器自定义机器代码插件供应商。2)每个操作系统中的沙箱会略有不同,甚至非常不同。3) 每个操作系统的构建项目会有所不同。4)您通常很可能必须将应用程序放在应用程序商店中。5)您必须让应用程序商店验证该应用程序。6) 如果您想在所有地方提供支持,您可能需要向不同的应用商店付费。
如果供应商让沙盒技术正常工作,那么很多人会出于明显的原因使用它,但如果客户端沙盒出现某种类型的标准化,可能还需要很多年,这对每个人来说都是一件非常可悲的事情. 但我认为,如果浏览器制造商实施了操作系统支持的适当沙盒,它将是完全安全的,因此许多网络公司将不再能够控制你所做的一切。
否则我可能会过度猜测,但这就是我现在对 C++ 和浏览器的看法。我的建议,等待一段时间,做其他事情。如果沙盒来了,那就这样吧。
Emscripten可以将 LLVM 位码(例如由 Clang 从 C++ 生成)编译为 JavaScript。