TEL:400-8793-956
当前位置:程序、服务器

在Web应用程序上运行现有的C程序?

提问者: 近期获赞: 浏览人数: 发布时间:2021-01-18 13:31:49

 问:我有一组用于数据分析的C程序,这些程序接受文件的输入并通过命令行显示所需的输出。

 
如何使这些程序可在Web应用程序中访问,而不必再次使用Web编程语言对其进行编码?
 
我可以使用现有的C代码吗?
 
 
答:正如dev7060所说的那样,这是一种方法,如果您已经熟悉具有可以在服务器上执行代码的功能的Web编程语言,那可能是最简单的方法。
 
另一种方法是使用Web Assembly,也称为WASM。
 
这实际上取决于您现有的代码库,您的能力以及对应用程序执行的需求。
 
什么是Web Assembly?
Web Assembly是在浏览器中运行的虚拟机的规范。与高度动态的JavaScript相比,Web Assembly可以实现更高的性能。与流行的误解相反,Web Assembly并未完全替代JavaScript。您可能会同时使用两者。Web Assembly基于LLVM(低级虚拟机),LLVM是编译器可以定位的基于堆栈的虚拟机。
为什么要使用它?
通常,当人们谈论WebAssembly的优势时,它是从性能的角度来看的。但是WebAssembly为表带来了另一个优势-代码重用。WebAssembly不必为每个目标环境(台式机,网站等)多次编写相同的逻辑,而是使您可以在多个位置重复使用相同的代码。
这是dev.mozilla上的文档,可帮助为Web Assembly设置基本的C ++模块。
 
它的目的是:
使用(Emscripten)将C ++代码编译到Web Assembly中
Emscriptem是LLVM到JS的编译器,其结果是
二进制wasm模块代码(hello.wasm)
一个JavaScript文件,其中包含在本地C函数和JavaScript / wasm(hello.js)之间转换的粘合代码
一个HTML文件,用于加载,编译和实例化wasm代码,并在浏览器中显示其输出(hello.html)
在支持Web Assembly的浏览器中调用HTML文件
默认情况下,Firefox 52+和Chrome 57 + /最新的Opera中启用了Web程序集
您还可以通过在Firefox 47+中启用javascript.options.wasm标志,在Firefox 47+中运行wasm代码。:配置
通过转到chrome:// flags并启用“实验性WebAssembly”标志来Chrome(51+)和Opera(38+)。
 
关于这两种方法的一些有趣的观点。
服务器:
安全性-因为它是服务器代码,所以输入必须经过严格验证并包含在内,以防止在服务器上执行代码。
服务器性能-它还可能会影响服务的其他用户的性能,具体取决于您是作为服务运行还是按需执行。
Web Assembly(客户端):
本地性能-在部署它之前在各种机器上测试性能(内存泄漏等)
安全性-它包含在客户端浏览器的VM中,而不管输入是否经过验证。
功能访问-编译的WASM二进制文件将有权访问浏览器在客户端计算机上具有的相同功能。
 
WASM支持的其他语言
C / C ++
C#/。NET
上一篇: 根据交互式下拉列表过滤子表单
下一篇: 允许用户在有限的时间内从网站访问服务器?