想在Web应用程序中使用本机C库,我有哪些选择?

时间:2012-10-19 18:15:15

标签: c++ c html5 web-applications libraries

我有许多用于数值分析和科学计算(例如模拟)的遗留C库,我想在我正在构建的Web应用程序中使用(到目前为止,我只使用Javascript来创建用户界面)。在客户端和/或服务器端执行此操作有哪些选择?我听说过使用带有chrome的本机客户端,但我不喜欢客户端必须打开本机客户端标志来执行此操作。

6 个答案:

答案 0 :(得分:4)

服务器端

首先,CGI(通用网关接口)是能够在Web应用程序中使用本机C库的最基本方法 - 其中您委派可执行文件(例如用C编写)来生成服务器端Web内容。 / p>

但CGI非常原始且效率低下。每个命令都可以在服务器上创建新的Process。因此,这里有其他可行的替代方案:

  1. Apache Modules允许您在Web服务器本身内运行第三方软件。
  2. FastCGI - 单个进程处理多个用户请求。
  3. SCGI - 简单的CGI
  4. 参考:http://en.wikipedia.org/wiki/Common_Gateway_Interface#Alternatives

    客户端

    好消息&坏消息:

    您可以在chrome中使用PNaCl(Portable Native Client)。默认情况下 会启用 但是,2013年底第一个公开发布是预期Look for PNaCl

答案 1 :(得分:1)

您无法在客户端做太多事情 - 您无法期望客户端拥有这些库,也无法安全地下载和运行这些库。

最简单的方法是以您想要的任何方式编写服务器端,并通过Web界面访问它们。通常用于服务器端脚本的许多语言都可以访问本机C库,或者您甚至可以编写普通的C应用程序并将它们作为脚本代理运行。

在“真正异国情调”类别中,可以在客户端中运行以C代码开头的内容 如果你将它嵌入充分受保护的环境中。例如,请参阅说明 如何将sqlite(一个C数据库应用程序)制作成100%纯Java应用程序 嵌入用java编写的mips模拟器。

http://blog.benad.me/2008/1/22/nestedvm-compile-almost-anything-to-java.html

答案 2 :(得分:0)

看着Wt了吗?它非常整洁。

你也可以选择用cgi编写代码(丑陋)。

虽然不是C,但它是用C ++编写的。如果您可以忽略该部分:Wt at your service

答案 3 :(得分:0)

对于客户端,您可以使用Emscripten。但是,这很可能需要重构现有代码以适应JavaScript的异步主循环要求。

请注意,Emscripten不是概念验证或类似的东西。 非常强大,已经用于将复杂的代码移植到Web上。您可以查看演示(在上面的URL中列出),看看可以用它做什么。

答案 4 :(得分:0)

听起来你最好将旧版C库方法表示为服务器端的一种(WEB)服务。对于这种方法,原始CGI应用程序似乎是一个非常低级别的点,但通常是正确的。 有可用于创建Web服务服务器的C / C ++框架,以及支持Web服务访问和数据表示的客户端库。例如,对于服务器端,您可以使用gSoap

答案 5 :(得分:0)

另一种可能性是使用您选择的网络服务器传输普通文件并使用自定义网络服务器(不需要支持完整的HTTP规范)连接到您的C代码以与客户端Javascript进行通信。

您可以使用的两个最小网络服务器libuv-webservernweb