请选择 进入手机版 | 继续访问电脑版
首页计算机书籍程序设计Nginx模块开发指南 使用C++11和Boost程序库_罗剑锋著_9787121272943
memories

文档

1150

关注

0

好评

0
PDF

Nginx模块开发指南 使用C++11和Boost程序库_罗剑锋著_9787121272943

阅读 867 下载 0 大小 5.43M 总页数 374 页 2023-03-17 分享
价格:¥ 10.00
下载文档
/ 374
全屏查看
Nginx模块开发指南 使用C++11和Boost程序库_罗剑锋著_9787121272943
还有 374 页未读 ,您可以 继续阅读 或 下载文档
1、本文档共计 374 页,下载后文档不带www.pdfdz.com水印,支持完整阅读内容。
2、古籍基本都为PDF扫描版,所以文档不支持编辑功能,即不支持文档内文字的复制粘贴。
3、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
4、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
5、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。
IV前言Ngix时的心路历程,从最初的“一无所知”起步,慢慢地深入到定制开发模块的层次,希望能与读者“心有戚戚焉”。Nginx随感毫无疑问,Nginx是目前这个星球上所能获得的最强劲的Web服务器(没有之一),同时也是目前最成熟、最优秀的TCP/HTTP服务器开发框架。Nginx资源消耗低,并发处理性能高,配置灵活,能够连接cGI、PHP、MyL、Memcached等多种后端,还有着出色的负载均衡能力,可以整合封装各种service,构建稳定高效的服务。如今gix已经成为了网站架构里不可或缺的关键组件,广泛应用于国内外许多大型IT企业内部。每一个繁忙的网站背后,可能都有Ngix默默工作的身影。在Nginx出现之前,使用C/c++开发Web服务器是项比较“痛苦”的工作,虽然有很多网络程序库可以使用(例如AcE、asio、libevent、thrift等),但它们通常只关注较底层的基础功能实现,离成熟的“框架”相距甚远,不仅开发过程烦琐低效,而且程序员还必须要处理配置管理、进程间通信、协议解析等许多Wb服务之外的其他事情,才能开发出一个较为完善的服务器程序。但即使开发出了这样的服务器,通常性能上也很难得到保证,会受到程序库和开发者水平等因素的限制一很长一段时间里,C/c++在eb服务器领域都没有大展拳脚的机会。Nginx的横空出世为Web服务器开辟了一个崭新的天地,它搭建了一个高性能的服务器开发框架,而且是一个完整的、全功能的服务器。模块化的架构设计很好地分离了底层支撑模块和上层逻辑模块,底层模块处理了配置、并发等服务器的外围功能,核心支撑模块定义了主体的TCP/HTTP处理框架。开发者可以把大部分精力集中在上层的业务功能实现上,再也不必去为其他杂事而分心,提高了软件的开发效率。在Nginx框架里C/c++程序员可以尽情发挥自己的专长,充分利用Nginx无阻塞处理的优势,打造出高质量的eb应用服务器,与其他系统一较高下。Nginx和C/C++Igor Sysoev选择用C语言(准确地说是ANSI C)来实现Nginx肯定是经过了认真的考虑。作为与UNIX一同诞生的编程语言,C语言一直是系统级编程的首选。和其他高级语言相比,它简单可靠,更接近计算机底层硬件,运行效率更高。指针更是C语言的一大特色,善用Nginx模块开发指南前言指针能够完成许多其他语言无法完成的工作。以c语言实现的Nginx没有“虚拟机”的成本,省略了不必要的中间环节,直接操纵计算机硬件,从根本上提高了Web服务器的处理能力。虽然c语言不直接支持面向对象,但Nginx灵活运用了指针,采用结构体+函数指针的形式,达到了同样的效果,从而使软件拥有了良好的结构。C++是仅次于C的系统级编程语言,在兼容C的同时又增加了类、异常、模板等新特性,还支持面向对象、泛型、函数式、模板元等多种编程范式,可以说是计算机语言里的一个“庞然大物”。C++的特性很多,有的也很好用,但总体上的确比较复杂,易学难精,容易被误用和滥用,导致低效、难维护的代码,我想这可能是Igor Sysoev放弃使用C+的一个重要原因。另一个可能的原因是C语言本身已经非常稳定,几十年来没有太大的变动,各个系统里都支持得非常好。而C++在1998年才有了第一个标准,而且现在还在发展之中,语言特性还不够稳定(例如export、register等曾经的关键字在C+11里就已经被废弃),许多编译器对C++的支持程度也有差异,这与Nginx的高可移植性目标明显不符。但C++毕竞还是有很多的优点,类可以更好地封装信息、异常简化了错误处理、模板能够在编译期执行类型计算。在C++11标准颁布之后C++更是几乎变成了一门“全新”的语言,auto/decltype/nullptr/noexcept等新关键字增强了语言的描述能力,标准库也扩充了相当多的组件,易用性和稳定性都大大提升。在Nginx里使用C++时要对C++的长处和不足有清醒的认识,避免多层次继承、虚函数等影响效率的编程范式,只使用经过充分验证的、能够切实提高开发效率和性能的语言特性和库,避免华而不实的技术炫耀,尽量做到像gix源码那样质朴踏实。只有这样,才能够发挥出1+1>2的作用,让Nginx从c++中得到更进一步的发展动力。致谢首先当然要感谢Nginx的作者Igor Sysoev,没有他就不会有如此优秀的Web服务器,也就不会有本书的诞生。亲情永远是人生命中最值得珍惜的部分,我要感谢父母多年来的养育之恩和“后勤”工作,感谢妻子在生活中的陪伴(但因为频繁的加班常常缺少相处的时间),感谢即将上小学的女儿,愿你们能够永远幸福快乐。Nginx模块开发指南
返回顶部