如何用C++语言开发 tiny Nginx并真正锻炼C++的使用
2016-10-28 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
Nginx是C语言写的,但这个不是改写为C++的关键,关键是C语言开发时面向过程的思想,C++开发是面向对象的思想,两者的差别还是很大的。通俗的讲,面向过程开发就是设计好“第一步干什么”、“第二步干什么”、“第三步干什么”。。。。。而面向对象的开发就是设计好有哪些对象,例如编码器、解码器、HTTP协议解析器,这些对象在不同的步骤中可能都有涉及。
以Nginx处理HTTP为例(样例,仅供参考,实际比这个复杂10倍不止):
C语言面向过程的处理方式:第一步:解析HTTP Method;第二步:解析HTTP Header;第三步:解析HTTP Body。。。。。。第X步:生成返回Header,第Y步:生成返回Body,第Z步:返回响应;
C++面向对象的处理方式:Method、Header、Body三个对象,但不要简单理解为一个步骤对应一个对象,而是一个对象可以在很多处理流程中出现。例如:Header对象可以用于第二步解析Header,也可以用于第X步生成具体的返回Header。
另外,Nginx的module设计,本质上其实就是面向对象的,一个module就是一个广义上的对象。
所以,如果你想用C++来改写Nginx,通过这个方式来实践面向对象编程的话,首先要对Nginx的实现原理和机制非常熟悉,然后才能从中提取面向对象相关的对象和类,最后用C++还是Java实现,差别都不会很大。自己改完之后,可以对照Netty的设计,看看你的设计和Netty差别在哪里。
以Nginx处理HTTP为例(样例,仅供参考,实际比这个复杂10倍不止):
C语言面向过程的处理方式:第一步:解析HTTP Method;第二步:解析HTTP Header;第三步:解析HTTP Body。。。。。。第X步:生成返回Header,第Y步:生成返回Body,第Z步:返回响应;
C++面向对象的处理方式:Method、Header、Body三个对象,但不要简单理解为一个步骤对应一个对象,而是一个对象可以在很多处理流程中出现。例如:Header对象可以用于第二步解析Header,也可以用于第X步生成具体的返回Header。
另外,Nginx的module设计,本质上其实就是面向对象的,一个module就是一个广义上的对象。
所以,如果你想用C++来改写Nginx,通过这个方式来实践面向对象编程的话,首先要对Nginx的实现原理和机制非常熟悉,然后才能从中提取面向对象相关的对象和类,最后用C++还是Java实现,差别都不会很大。自己改完之后,可以对照Netty的设计,看看你的设计和Netty差别在哪里。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询