有没有好的和免费的库来开发C中的Web应用程序?

时间:2008-12-23 10:43:59

标签: c

我在网上搜索了一下,但我找到的只是废弃的项目,只有CGI支持。

编辑:C不仅用于编写驱动程序或嵌入式系统。我们有邮件阅读器,新闻阅读器,编辑等等都是用C语言编写的。在网络流行之前,我在上个世纪写了两个BBS。库越来越好,你不必一次又一次地重新发明轮子。在C中很容易实现不错的数据结构和字符串处理。但是,在Web开发中没有太多进展。

我想回到我的根,尝试用C语言编写Web应用程序。

至于坏语言:人们使用C ++,Perl和PHP来处理Web应用程序。它并不能阻止他们对这些语言的普遍看法不是很好。

编辑2:我用C编写了BBS软件,没有人认为这是一个疯狂的想法,尽管其他人已经在GfA BASIC中做过了。我不明白为什么今天它应该被认为是一个坏主意。查看您正在使用的软件或开源软件中最常用的编程语言。

14 个答案:

答案 0 :(得分:6)

如果您喜欢冒险并且对新的网络服务器持开放态度,请查看G-WAN。它使用ANSI-C脚本提供动态内容。它很小,fast和免费(虽然不是开源)。浏览running samples with source以了解G-WAN开发。

如果你花时间在G-WAN网站上,你会发现它的开发者Pierre Gauthier对今天的软件开发状态有很强的看法。同意或不同意,鉴于我们日常使用的工具的规模和复杂性不断增加,他的观点很有意思。

答案 1 :(得分:5)

正如其他人所说,C不是开发Web应用程序的最佳语言。但是,如果应用程序的核心已经用C编写,并且您只需要一个用户访问该应用程序,那么您可以信任该用户(例如,因为该应用程序只能在防火墙后面提供)那么swill library是一个有趣的选择。它是一个嵌入式Web服务器,只需几行就可以为任何C应用程序提供Web界面。我已经使用了两次,CScout refactoring browser和为遗留生产线优化代码提供用户界面,它就像一个魅力。

答案 2 :(得分:5)

我使用了GNU libmicrohttpd,它很棒:清晰的API;轻巧;开源,仍然积极发展;它很好地嵌入到我们现有的C应用程序中。重要的是,它是根据LGPL许可的,但Hughes libhttpd具有双重许可,这可能是商业项目的问题。 (相信雅各布·埃里克森首先到达那里的答案。)

编辑:还提到here

答案 3 :(得分:4)

clearsilver应该做得很好 http://www.clearsilver.net/docs/

如果你需要一些GC的东西,你总是可以使用boehm weisser gc。

此致 弗里德里希

答案 4 :(得分:2)

除了Swill之外,我还会看GNU libmicrohttpdHughes libhttpd。 两者都旨在将Web服务器嵌入到程序中。我几乎决定HughesBerkeley DB提供各种网络前端,但可能会选择Python路线。

答案 5 :(得分:2)

您可以尝试libevent。它有一个HTTP server

答案 6 :(得分:1)

我没有尝试过,也许有人会发现它很有用:klone。 它是一个用于构建独立Web服务器版本和html模板的框架 嵌入式C.

答案 7 :(得分:1)

忽略那些说C不可接受或不可取的反对者。他们做出的假设是他们正在编写您的应用程序。这对您来说是一次很好的学习经历。

与其他模块相比,C具有一些非常具体的优势。您可以轻松地为它编写一个框架,为您的应用程序做很多繁重工作,而不需要太多努力。

危险在于您的代码的安全性和健全性。我的建议是尝试Django或Rails并看看他们是如何做到的,然后将他们的想法最好地回到C.

您的开发时间可能会“慢”,但另一方面,您将对堆栈和框架有深入的了解。

答案 8 :(得分:0)

我不确定图书馆,但是如果你可以访问这个网站 vijaymukhi.com你可以找到一些使用C开发的学习项目。

您可以专门查看“机票预订”和“电子商务模块”。

注意:这只是一个包含c和cgi的学习项目。

请检查树状菜单上的“项目(带来源)”部分。

P.S:我不建议将它用于制作/现场网站。

答案 9 :(得分:0)

除非您对使用C有非常具体的要求,否则您应该重新考虑您的语言选择。即使有一个框架(正如你已经注意到的那样,这些日子很难实现),C中的webapp可能非常容易出错,特别是缓冲与不可信用户输入相关的溢出。

如果您需要访问C中的某些SDK或遗留代码,除了使用它之外别无选择,您仍然可以通过其他语言以各种方式实现此目的。

例如在Java中有JNI。并且您始终可以将SDK包装在执行所需操作的CLI程序中,并从您的webapp运行它(然后可以使用任何语言编写)。关于缓冲区溢出等的相同警告将适用,但至少您可以在CLI程序中进行防御性编程(即,在使用之前不要信任您的参数并清理它们。)

另一种替代方案可能是将IPC用于提供对“C”SDK或遗留代码功能的访问的过程。关于防御性编程的相同论点也适用。

答案 10 :(得分:0)

很难想象C是开发Web应用程序的最佳语言。就像你不想在FORTRAN中编写GUI应用程序或在COBOL中编写设备驱动程序一样。

为什么不尝试PHP?语法与C语言非常相似。

答案 11 :(得分:0)

好吧,多年前我写了一个“CSP”编译器,一个非常基本的等价于JSP,但是在C.它生成了CGI C代码。我猜你可以用THAT作为基础或进行简单的实验。我从来没有做过任何事情,所以你可以拥有它,如果你想要的话(如果我能找到的话)......只需给我一条线。

答案 12 :(得分:0)

请参阅C HyperText Library

它是一个用C语言编写Web应用程序的库。它为您提供了创建优秀Web应用程序所需的所有功能,以及对HTML文件中内联函数的支持。

答案 13 :(得分:-1)

为什么不将您的旧C代码转换为php / apache插件?然后,您可以充分利用现代网络语言/服务器,同时利用旧应用程序中的所有现有代码。