HTTP服务七层架构技术..docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
HTTP服务七层架构技术.

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的优点我不做介绍,搜索引擎中能找到大量相关资料。   本文的标题是HTTP服务七层架构技术探讨,比MVC多出了四层,这样复杂的分层是否有必要呢?   关于这个问题仁者见仁智者见智,本人认为MVC分层粒度不够精细,当然你也可以继续坚持传统的三层,那么后文你也没必要看下去了。   那么为什么MVC分层不够精细呢,在我曾经使用开源框架的MVC模式的经验中发现,V和C层功能职责一般都很清晰稳定,但是M层却常常显得臃肿笨拙。   C层主要是负责整体流程控制,一般规范的架构中,流程都可以用一张或几张流程图画出,那么表明流程一般都是固定的。   V层主要是负责页面呈现,可能使用smarty模板引擎,也可能是自带的模板引擎,显示的页面可能是HTML,XML或则JSON,这些种类再多也都是可以度量的,所以M层也可以说是固定的。   而M层却关系到系统的业务逻辑,随着系统不断迭代更新,M层中的内容也会不断演变,而这一层中也有很多复杂的处理,如文件读取,数据库查询,缓存策略,逻辑运算,数据加工,数据打包等等。   所以MVC三层模型中,M层是还能再做细分的,当M层有一个更精细合理的分层方式之后,我们的业务逻辑演变过程会更加的得心应手。   3. 七层架构   由上面的介绍,那么我们对MVC中的M层再进行分层规划,我这里给出的是一种对M层分五层的方式,读者如果觉得五层太多或则太少那么可以参考这个再进行规划。   原来的M层被分为:   A层:Application 应用层   B层:Business 业务层   C层:Component 组件层   D层:Datadriver 数据驱动层   S层:Systemdriver 系统驱动层   那么整个七层架构则为:   1. Controller   2. View   3. Application   4. Business   5. Component   6. Datadriver   7. Systemdriver   结构图还是参考经典MVC,将其中M层换成新的五层即可。   现在依次介绍这几个新的层:   1. Application   应用层在最上面,其针对实际中的

文档评论(0)

xznh + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档