- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
=====================================================================
WEB 程序的架构基本上可以分成以下三类:
(一) 基于“WEB页面/文件”,例如CGI 和PHP/ASP 程序。程序的文件分别存储在不同的目录里,
与URL 相对应。当HTTP 请求提交至服务器时,URL 直接指向某个文件,然后由该文件来处理请求,并
返回响应结果。
比如http://www.website.conm/news/readnews.php?id=1234
可以想像,我们在站点根目录的news 目录下放置一个readnews.php 文件。
这种开发方式最自然,最易理解,也是PHP 最常用的方式。要注意产生的URL 对搜索引擎不友好,不过
你可以用服务器提供的URL 重写方案来处理,例如Apache 的mod_rewrite。
(二) 基于“动作”(Action)。这是MVC 架构的WEB 程序所采用的最常见的方式。目前主流的WEB
框架像Struts、Webwork(Java) ,Ruby on Rails(Ruby),Zend Framework(PHP)等都采用这种设计。URL
映射到控制器(controller)和控制器中的动作(action),由action 来处理请求并输出响应结果。这种设计和上
面的基于文件的方式一样,都是请求/响应驱动的方案,离不开HTTP。
比如/news/read/id/1234
可以想像在实际代码中,我们会有一个控制器newsController,其中有一个readAction。不同框架可能默
认实现方式稍有不同,有的是一个Controller 一个文件,其中有多个Action ,有的是每个Action 一个文件。
当然这些你都可以自己控制,题外话。
这种方式的URL 通常都很漂亮,对搜索引擎友好,因为很多框架都自带有URL 重写功能。可以自由规定
URL 中controller、action 及参数出现的位置。
另外,还有更直接的基于URL 的设计方案,那就是REST。通过人为规定URL 的构成形式(比如Action
限制成只有几种)来促进网站之间的互相访问,降低开发的复杂性,提高系统的可伸缩性。REST 对于Web
Services 来说是一个创新。
虽然本文讨论的是单个项目所采用的架构,而REST 是为了解决网站之间的通讯问题,但REST 的出现,
会对单个项目的架构造成影响(很显然你在开发时就要构造规范的URL)。将来混用REST 和MVC 应该
也是一种趋势。RoR 提供很好的REST 支持,Zend Framework 也提供了Zend_Rest 来支持REST,包括
Server 和Client。
(三) 基于“组件” (Component ,GUI 设计也常称控件)、事件驱动的架构,最常
见的是微软的.NET。基本思想是把程序分成很多组件,每个组件都可以触发事件,调用特定的事件处理器
来处理(比如在一个HTML 按钮上设置onClick 事件链接到一个PHP 函数)。这种设计远离HTTP,HTTP
请求完全抽象,映射到一个事件。
事实上这种设计原本最常应用于传统桌面GUI 程序的开发,例如Delphi,Java Swing 等。所有表现层的
组件比如窗口,或者HTML 表单都可以由IDE 来提供,我们只需要在IDE 里点击或拖动鼠标就能够自动添
加一个组件,并且添加一个相应的事件处理器。
这种开发方式有几个优点:
复用性 -代码高度可重用。
易于使用 -通常只需要配置控件的属性,编写相关的事件处理函数。
我个人也挺喜欢这种方式,PEAR 就提供了相当强大的HTML_QuickForm,用于在页面添加表单元素及其
事件处理函数,还可以与Smarty 等模板引擎相结合。这对于项目开发来说是一个补充性的功能,在项目
中的某些部份使用QuickForm,有时可以大大加快开发。
而完全基于组件和事件驱动的开发框架对于PHP 来说也已经不新鲜,PRADO 就是一个这样的框架,曾经
得过Zend 编程大赛的头奖。但目前来说很显然Prado 所提倡的这种开发方式仍然没有被大部份PHP 程序
员所接受。为什么呢?
============================================================================
大型WEB 系统架构设计的总结
博客分类:
Java 相关
总结一下自己对大型WEB 系统架构设计的想法:
1. 一般大型W
您可能关注的文档
- 那一年面包飘香54513.ppt
- 大型矿井气载粉尘高效抑制技术及装备—中矿龙科.pdf
- 大型励磁系统的可控硅整流装置的设计.pdf
- 七年级历史上册 第8课 百家争鸣课件 新人教版.ppt
- 七年级历史上册 第8课 百家争鸣课件1 新人教版.ppt
- 七上期末复习6名著阅读.ppt
- 其他植物激素22362.ppt
- 大型设备(结构)整体安装技术+国内外发展状况及技术分类 - 副本.pdf
- 气体摩尔体积01961.ppt
- 群落的演替(文科).ppt
- 人教版必修5课件:unit 5 first aid-warming up & reading.ppt
- 大型游艇法规(2010-1-20).pdf
- 大型综合商业类建筑空调设计20110919.pdf
- 人教版高中语文必修1-表达交流1《心音共鸣——写触动心灵的人和事》 课件 (共34张PPT).ppt
- 日 本 明 治 维 新 优质课课件.ppt
- 大学计算机python基础课件2015lecture03.pdf
- 大学计算机python基础课件2015lecture04.pdf
- 日本餐桌礼仪.pptx
- 大学计算机python基础课件2015lecture07.pdf
- 大学计算机python基础课件2015lecture18.pdf
原创力文档


文档评论(0)