HTTP服务七层架构技术探讨

玉面修罗  http://weibo.com/kalon


前言:太久没有做过技术分享了,这里把曾经老的新浪论坛里面使用过的架构技术做了改进和整理,最后总结了这么一篇,欢迎拍砖。


1.为什么分层?

   计算机领域的体系结构普遍采用了分层的方式。

   从整体结构来看: 

   从最底层的硬件往高层依次有操作系统->驱动程序->运行库->系统程序->应用程序等等。

   

   从网络分层模型OSI来讲,由上至下为:

   应用层->表示层-> 会话层->传输层->网络层->数据链路层->物理层       

   当然实际应用的TCP/IP协议的分层就没OSI标准这么复杂。   


   从C语言文件编写到生成可执行文件的过程来看: 

   预处理(展开后的C语言代码)->编译成汇编语言(特定CPU体系结构的汇编语言源文件)->汇编器生成目标文件(CPU可执行的二进制指令机器码)->链接器连接目标文件生成可执行文件(操作系统可以加载执行的二进制文件)

   这不算是软件的分层结构,但是可以理解为一种通过分层来简化复杂问题的思想。那么PHP语言可以认为是建立在C语言之上的层----其解释器Zend引擎是用C语言实现。毕竟用PHP这样的脚本语言编写动态网页要比用C语言方便得多。

  

   当然还有我们最熟悉的MVC分层技术了,后面会做详细介绍。

   

   那么分层的好处想必大家都已经比较熟悉,这是一种 “分而治之  大而化小”  的思想。说到分层就不得不提模块了,其实分层和模块是从两种维度来进行“分而治之”的方式。模块是从横向维度来将一个整体分割成若干个独立的部分,每个部分行使独立自己的职责,当然它们之间也可能有依赖关系,这通过其对外提供的服务来实现。如果将整个系统比做中国版图的话,那么模块方式将中国分为省,自治区等。 分层则是从纵向纬度将一个整体从高至低划分为若干个独立的层,一个完整的服务由底层至上层,层层传递最终产出。分层和模块可以同时运用,例如中国用模块方式分为省之后,然后每个省的行政机构利用分层方式来行使职责,从低到高有户,村,乡,区,市,省等等,每一层都向上一层汇报。 分层和模块会提高系统复杂度并影响效率(户不能直接向省汇报,而需要一级一级向上汇报),但是这样有利用系统的扩展和维护,每一层只需要关注自己提供的服务接口以及它下一层所提供的服务接口,试想一下如果省需要接受来自市,区,乡,村等所有下级层的汇报,那些省干部会很头疼的。


2.HTTP服务传统的三层架构MVC

  HTTP服务中最经典的分层架构非MVC莫属了, 几乎任何一个PHP开发框架都是支持MVC分层模式,此模式历史也比较悠久,是在上个世纪八十年代为编程语言Smalltalk设计的软件模式,至今已经被广泛引用。

 这里引用了百度百科中的图片:

 

那么关于MVC的优点我不做介绍,搜索引擎中能找到大量相关资料。

  • 0
    点赞
  • 145
    收藏
    觉得还不错? 一键收藏
  • 47
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 47
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值