Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 哪个代码库更好:nginx还是lighttpd?_C_Nginx_Lighttpd - Fatal编程技术网

C 哪个代码库更好:nginx还是lighttpd?

C 哪个代码库更好:nginx还是lighttpd?,c,nginx,lighttpd,C,Nginx,Lighttpd,主要目标是从流行的web服务器代码库(用C实现)中学习,优先考虑结构/设计,而不是整个代码中的整洁技巧 我没有包括Apache,因为它的代码库比前面提到的两个要大一个数量级。老实说,任何值得使用的代码库都会出现巧妙的技巧。然而,你可能不想听的答案是,两者都学习可能会很好,这样你就可以通过交叉点学习。另一种选择可能会让您陷入“lighthttpd”方式或“nginx”方式的困境,等等 我没有包括Apache,因为它的代码库比前面提到的两个要大一个数量级 实际上,Apache代码可读性很强。它有很大

主要目标是从流行的web服务器代码库(用C实现)中学习,优先考虑结构/设计,而不是整个代码中的整洁技巧


我没有包括Apache,因为它的代码库比前面提到的两个要大一个数量级。

老实说,任何值得使用的代码库都会出现巧妙的技巧。然而,你可能不想听的答案是,两者都学习可能会很好,这样你就可以通过交叉点学习。另一种选择可能会让您陷入“lighthttpd”方式或“nginx”方式的困境,等等

我没有包括Apache,因为它的代码库比前面提到的两个要大一个数量级

实际上,Apache代码可读性很强。它有很大的代码库,因为它做了很多事情。但它结构良好,很容易理解。您还可以查看APR库(ApachePortableRuntime),它有很多小东西可供学习

依我看,如果你想学习编程,你应该从低调的项目开始——而不是HTTPd,而是更简单的项目

nginx和LightHTTPd(就像Apache一样)都是生产质量软件,这意味着学习曲线非常陡峭。不幸的是,学习往往意味着挖掘档案,以了解为什么会是这样——这是任何成熟项目随着时间的推移而产生的


如果你只是简单地进入C语言学习设计,你可能想检查FreeBSD或它的衍生物。根据我的经验,这是一个更好的起点:那里有很多工具和各种口径的库。他们的待办事项列表从来都不是空的,它可以作为从哪里开始的指南。

Ngxinx可能是我遇到的最好的纯c代码库。我读过大量的Apache,我出来时总是觉得不干净,这是一团乱麻

通过探索Nginx,您不仅可以了解web服务器,还可以了解在Unix和stream-c下编写网络软件的最佳实践,从代码体系结构到元编程技术


我只听说过Lighttpd的优点,但与Nginx相比,它的范围有限。因此,如果我是你,我会在nginx上投入时间。尽管lighttpd的有限范围可能对您有益,但作为第一个研究目标。

HTTP服务器并不是一个好的起点,这是因为它们基于简单的文本协议。此外,在源库的逆向工程知识中,最重要的一点是目标导向动机。我不认为一个笼统的声明将他送到另一个方向将提高他的工程技能。@Hassan:“简单文本协议”-请检查RFC 1945(HTTP/1.0)或RFC 2616(HTTP/1.1),并告诉我你在哪里找到了“简单”协议?我确实在一些场合实现了HTTP1.0(包含1.1元素),并且知道实现支持所有必需特性的里程碑并非易事。所有可选功能加上可移植性,使软件变得相当复杂。通过所有性能优化。。。可能需要几周的时间来对导致代码创建的逻辑进行反向工程。这是一个糟糕的开始方式。仅仅因为协议很简单(易于理解),它并不意味着它的实现将是:D我不否认,人们需要数周(数月)才能了解一个系统软件(web服务器/数据库/邮件服务器等)的未记录语义。我将IIS的ISAPI界面转换为绝对细节的经历花了大约6个月(在开发另一个复杂系统的过程中),现在我自己已经学习nginx 2个月了。虽然你是对的,但这是错误的方法,然而,我个人开始认为,就这些系统的微妙之处创建有用的文档是不切实际的(即,逆转是不可避免的)。因此,我认为这是一项必须掌握的基本技能,学习这项罕见技能的兴趣不应转移到更简单的系统上——此外,逆转会导致人们发现构成更简单系统的子模块,这些子模块可能会被进一步研究。当遇到紧急情况时,系统的程序员需要弄脏双手。