diogin - PHP Web 应用组织与结构_第1页
diogin - PHP Web 应用组织与结构_第2页
diogin - PHP Web 应用组织与结构_第3页
diogin - PHP Web 应用组织与结构_第4页
diogin - PHP Web 应用组织与结构_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、PHP Web 应用组织与结构张景埕 2010.12.191现代互联网应用程序PC 端QQ/Thunderbird/迅雷/TortoiseSVN/Firefox/.手机/MID 端UCWeb/GGBook/Angry Birds/新浪微博手机端/.Web 端新浪微博/Gmail/开心网/Facebook/美团/.2Web 应用的优势基于浏览器,具有统一的平台和 UI 体验无需安装,只要有浏览器,随时随地使用总是使用应用的当前最新版本,无需升级数据持久存储在云端,基本无需担心丢失新一代 Web 技术提供了更好的用户体验3为什么选择 PHP 开发 Web 应用开源,免费,简单,成熟,门槛低开发速度

2、快,部署方便,丰富的扩展灵活,易伸缩,胜任大型网站成功案例多,人才供求旺盛4一、Web 应用基本组件50. Web 应用基本组件概要图Web浏览器Web服务器图片服务器应用服务器数据服务器调度服务器远程服务HTTP应用通信文件传输服务协议数据协议61. Web 浏览器跟后端 Web 服务器交互,呈现 Web 应用解析并渲染服务端输出的 HTML/CSS提供丰富的 API,供超文本内嵌的 JavaScript 调用以实现各种交互效果浏览器 API = 下一代 Win32 API ?RIA 的主战场,各类创新应用的核心平台产品:Firefox/IE/Chrome/Opera/Safari/.72.

3、 HTTPWeb 应用程序的基石浏览器与 Web 服务器交互的唯一“语言”TCP 可靠通信、无状态、请求/响应式简单易读,定义明确pipeline 等特性进一步加速83. Web 服务器服务于浏览器、Web 蜘蛛等客户端对静态文件请求,直接发送文件(sendfile)对动态程序请求,通常转发(FastCGI, uwsgi, SCGI, AJP, .)给应用服务器大量扩展模块,支持各种功能和特性定制(rewrite,headers,proxy,cache.)产品:Apache/nginx/lighttpd/.94. 应用服务器接收 Web 服务器转发过来的动态程序请求,实现服务端程序逻辑与后端数

4、据服务器和远程服务交互PHP 大展身手的主战场Python, Ruby, Java, C#, Perl, C, C+ . 各种技术势力割据着这块市场产品:php-fpm/uWSGI/tomcat/Mongrel/.105. 图片服务器小型网站非必须,中大型网站上是标配“因材施教”思想贯彻的产物epoll/kqueue/sendfile 驱动的高性能服务分发到各地的 CDN 进一步加速通过基于高速通道和协议的分布式文件系统从应用服务器传输服务产品:nginx/lighttpd/.存储/文件分发产品:NFS/MogileFS/FTP/ WebDAV/rsync/Hadoop/.116. 数据服务器

5、Web 应用数据的最终归宿关系型、键值型、文档型、列型.会话存储服务器存放着各浏览器会话数据搜索引擎存放着关键字倒排索引数据分布式缓存存放着需要加速访问的数据产品:MySQL/PostgreSQL/Tokyo Tyrant/ Redis/MongoDB/Cassandra/Sphinx/ Memcached/.127. 远程服务邮件 MTA (自建或用第三方)手机短信网关 (通常由第三方提供)第三方网站的开放 API (REST, SOAP, .)各种其它服务138. 调度服务器监视、管理服务器群的状态运行后台持久任务进程,诸如数据挖掘,会话清扫,缓存数据预生成,等等14二、PHP Web 应

6、用运行时分析15Web 服务端各组件进程层面剖析文件cachesearchdata应用服务器进程Web 服务器进程各种通信协议应用通信协议文件传输协议图片服务器进程service调度器文件服务器进程代码加载文件访问16PHP 应用服务器进程剖析PHP源代码PHP 执行流往期的请求与响应loadPHP 解释器工作进程当前请求与响应未来的请求与响应应用通信协议,如 FastCGI17PHP 解释器的逻辑结构SAPI (壳)PHP 外围(文件加载,网络)Zend 引擎(编译,运行)扩展 A扩展 B.扩展 NTSRM (线程资源管理,对 PHP 代码屏蔽线程,确保内部线程安全)18三、PHP Web

7、应用设计190. 设计要素设计思想应用组织基本功能附加特性目录结构设计样例201. 设计思想Modular - 开发基本原则MVC - 基本架构模式KISS/YAGNI - 简洁直接,防止过度设计DRY - 避免重复,尽量复用Design Patterns - 可选的设计模式DDD/RDD - 可选的应用开发参考原则212. 应用组织项目(project)系统(system)应用(application)模块(module)控制器(controller)操作(action)方法(method)223. 基本功能控制器与操作(controller & action),模板(view/templa

8、te),辅助函数(helper)来访者(visitor/request & response),角色(role),会话(session)配置(config),URL解析与创建(router),目标分派(dispatcher)过滤器(filter),表单(form)领域模型(model),领域服务(service)基础服务(db, cache, mailer, search, .)234. 附加特性团队开发友好(例如不会造成配置文件冲突)易于集成第三方代码为伸缩而设计(把握好度,防止过度设计),例如动静态资源分离,多域名,各服务器切换成分布式集群,等等运行模式,调试日志,错误日志考虑用 PHP

9、输出 CSS,JavaScript,进行更灵活的控制245. 目录结构不同的目录结构反映不同的设计观和需求,因此有不同的目录层次尽量简化目录结构和目录层次使用大众化的、简短的、明确的名字256. 设计样例266. 设计样例之 app/ 目录276. 设计样例之控制器代码286. 设计样例之 views/ 目录296. 设计样例之 layout 模板306. 设计样例之 page 模板316. 设计样例之 widgets/ 目录326. 设计样例之 config/ 目录custom.php - 本地环境定制的配置参数default.php - 所有环境通用的配置参数routes.php - URL 映射规则配置参数通常采用平坦的键值方式,也可以采用树状的键值方式URL 映射配置需要便于匹配和创建336. 设计样例之 data/ 目录log/ - 系统各类日志share/ - 共享的静态数据tmp/ - Web 应用运行期生成的临时文件var/ - Web 应用操作的数据346. 设计样例之其它考虑复杂度如何?应用代码越来越多,需要多级目录,怎么处理与重构?form 太难用,不灵活,咋整?我不喜欢用 PHP 做模板语言,我

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论