2009-03-03 38 views
6

我刚刚读了http://www.meebo.com/关于我们页面,并阅读了下面这行: “再加上,我们是少数仍在使用C的人之一!”用C编写一个网站?

考虑到meebo是一个在线聊天客户端,他们如何使用C?他们如何将C用于后端?它如何与前端进行交互?例如,假设一个用户创建一个新帐户,并创建一个新目录,这个信息是如何从前端传输到后端的?

对不起,如果这是一个无效的问题。

谢谢

编辑1:CGI的介绍教程很棒。我可以从我的图书馆收到有关这方面的好书吗?

非常感谢快速回复的家伙!

回答

9

我不知道meebo是怎么做到的,但鉴于它是聊天软件,他们可能有一个用C编写的自定义服务器来处理实际的消息流量。

但是,Apache和大多数其他HTTP服务器一直能够调用C程序,就像它们可以为某些请求调用PHP,CGI和其他语言一样。有些网站甚至用Lisp编写。

与解释型语言不同,后端必须每次都进行编译,但这种情况发生在卷展栏上,并且是构建/生产脚本的一部分。

C程序运行时给出的权限和用户帐户必须仔细选择,当然C网站也会遇到其他C程序可能遇到的相同问题,例如缓冲区溢出,段错误,堆栈溢出等。只要你用更低的权限运行它,你就可以得到更好的保护,并且它不比任何其他语言/平台/架构差。

然而,对于服务器来说,它仍然被广泛使用 - 我认为是黄金标准。你可以找到很多用Java,C++和其他语言编写的服务器,但是C似乎还是坚持不懈。

- 亚当

2

很多服务器端程序可以用C来完成,更何况CGI programming。他们也可能是Using C with MySQL,这很可能。但是如果没有访问他们的源代码,我们无法知道他们使用了多少C。

声称他们是“仍然使用C的少数人之一”可能只是一个笑话。像this至少我希望如此。

-John

1

你可以看到一个在C网站源代码的一个很好的例子:fossil

它使用SQLite作为后端。

3

Meebo使用名为mod_meebo的自定义Lighttpd模块。它没有完全回答你的问题,但我认为你可能会感兴趣。

3

我已经在少至50行代码(稀疏)或几百(更好),高达约5k(安全)的情况下滚动了非阻塞HTTP 1.1服务器。服务器将加载动态共享对象作为模块来处理特定类型的请求。

父代码将处理连接跟踪,保持活动状态,GET/POST/HEAD请求,并将它们送到启动时加载的处理程序。当我在嵌入式设备上使用非常小的肘部空间时,我必须拥有某种基于Web的控制面板,特别是一种控制电源插座的设备。

每个DSO的入口点由所使用的URL和方法定义(即,/ foo根据请求类型提供不同的操作)。

我的小服务器做得很好,可以处理大约150个客户端,无需分叉或线程,甚至有一个漂亮的小模板系统,因此UI人员可以在不需要手持的情况下修改页面。

我决不会不是在任何一种制作网站上都可以使用这种设置,甚至可以在留言簿中使用这种基本的Hello World主页。

现在,如果我所要做的只是侦听端口80/443,接受带有小型POST有效载荷的请求,请将它们消毒并将它们转发给其他客户端......它有点不同。但这是一个特定任务服务器伪装成一个Web服务器,它不使用C来生成动态页面。