dioginphpweb应用组织与结构

上传人:shaoy****1971 文档编号:114886256 上传时间:2019-11-12 格式:PPT 页数:38 大小:667.81KB
返回 下载 相关 举报
dioginphpweb应用组织与结构_第1页
第1页 / 共38页
dioginphpweb应用组织与结构_第2页
第2页 / 共38页
dioginphpweb应用组织与结构_第3页
第3页 / 共38页
dioginphpweb应用组织与结构_第4页
第4页 / 共38页
dioginphpweb应用组织与结构_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《dioginphpweb应用组织与结构》由会员分享,可在线阅读,更多相关《dioginphpweb应用组织与结构(38页珍藏版)》请在金锄头文库上搜索。

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

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

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

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

5、/. 存储/文件分发产品:NFS/MogileFS/FTP/ WebDAV/rsync/Hadoop/.,6. 数据服务器,Web 应用数据的最终归宿 关系型、键值型、文档型、列型. 会话存储服务器存放着各浏览器会话数据 搜索引擎存放着关键字倒排索引数据 分布式缓存存放着需要加速访问的数据 产品:MySQL/PostgreSQL/Tokyo Tyrant/ Redis/MongoDB/Cassandra/Sphinx/ Memcached/.,7. 远程服务,邮件 MTA (自建或用第三方) 手机短信网关 (通常由第三方提供) 第三方网站的开放 API (REST, SOAP, .) 各种其它

6、服务,8. 调度服务器,监视、管理服务器群的状态 运行后台持久任务进程,诸如数据挖掘,会话清扫,缓存数据预生成,等等,二、PHP Web 应用运行时分析,Web 服务端各组件进程层面剖析,文件,cache,search,data,应用服务器进程,Web 服务器进程,各种通信协议,应用通信协议,文件传输协议,图片服务器进程,service,调度器,文件服务器进程,代码,加载,文件,访问,PHP 应用服务器进程剖析,PHP 源代码,PHP 执行流,往期的请求与响应,load,PHP 解释器工作进程,当前请求与响应,未来的请求与响应,应用通信协议,如 FastCGI,PHP 解释器的逻辑结构,SAP

7、I (壳),PHP 外围 (文件加载,网络),Zend 引擎 (编译,运行),扩展 A,扩展 B,.,扩展 N,TSRM (线程资源管理,对 PHP 代码屏蔽线程,确保内部线程安全),三、PHP Web 应用设计,0. 设计要素,设计思想 应用组织 基本功能 附加特性 目录结构 设计样例,1. 设计思想,Modular - 开发基本原则 MVC - 基本架构模式 KISS/YAGNI - 简洁直接,防止过度设计 DRY - 避免重复,尽量复用 Design Patterns - 可选的设计模式 DDD/RDD - 可选的应用开发参考原则,2. 应用组织,项目(project) 系统(syste

8、m) 应用(application) 模块(module) 控制器(controller) 操作(action) 方法(method),3. 基本功能,控制器与操作(controller & action),模板(view/template),辅助函数(helper) 来访者(visitor/request & response),角色(role),会话(session) 配置(config),URL解析与创建(router),目标分派(dispatcher) 过滤器(filter),表单(form) 领域模型(model),领域服务(service) 基础服务(db, cache, mail

9、er, search, .),4. 附加特性,团队开发友好(例如不会造成配置文件冲突) 易于集成第三方代码 为伸缩而设计(把握好度,防止过度设计),例如动静态资源分离,多域名,各服务器切换成分布式集群,等等 运行模式,调试日志,错误日志 考虑用 PHP 输出 CSS,JavaScript,进行更灵活的控制,5. 目录结构,不同的目录结构反映不同的设计观和需求,因此有不同的目录层次 尽量简化目录结构和目录层次 使用大众化的、简短的、明确的名字,6. 设计样例,6. 设计样例之 app/ 目录,6. 设计样例之控制器代码,6. 设计样例之 views/ 目录,6. 设计样例之 layout 模板,

10、6. 设计样例之 page 模板,6. 设计样例之 widgets/ 目录,6. 设计样例之 config/ 目录,custom.php - 本地环境定制的配置参数 default.php - 所有环境通用的配置参数 routes.php - URL 映射规则 配置参数通常采用平坦的键值方式,也可以采用树状的键值方式 URL 映射配置需要便于匹配和创建,6. 设计样例之 data/ 目录,log/ - 系统各类日志 share/ - 共享的静态数据 tmp/ - Web 应用运行期生成的临时文件 var/ - Web 应用操作的数据,6. 设计样例之其它考虑,复杂度如何? 应用代码越来越多,需要多级目录,怎么处理与重构? form 太难用,不灵活,咋整? 我不喜欢用 PHP 做模板语言,我想用 Smarty,怎么弄?() 性能如何?伸缩能力如何? 等等,PHP Web 开发感受,不守旧,多体验新思路,创新是发展的绝对动力 抓本质需求,直接有力,不把事情复杂化 开发着眼于如何减少代码量,而不是如何增加代码量 使用最富表现力又最简短的名称 说说你的开发感受? :-),Q & A,谢谢大家!,张景埕 ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 职业教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号