diogin - PHP Web 應(yīng)用組織與結(jié)構(gòu)_第1頁
diogin - PHP Web 應(yīng)用組織與結(jié)構(gòu)_第2頁
diogin - PHP Web 應(yīng)用組織與結(jié)構(gòu)_第3頁
diogin - PHP Web 應(yīng)用組織與結(jié)構(gòu)_第4頁
diogin - PHP Web 應(yīng)用組織與結(jié)構(gòu)_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、PHP Web 應(yīng)用組織與結(jié)構(gòu)張景埕 2010.12.191現(xiàn)代互聯(lián)網(wǎng)應(yīng)用程序PC 端QQ/Thunderbird/迅雷/TortoiseSVN/Firefox/.手機(jī)/MID 端UCWeb/GGBook/Angry Birds/新浪微博手機(jī)端/.Web 端新浪微博/Gmail/開心網(wǎng)/Facebook/美團(tuán)/.2Web 應(yīng)用的優(yōu)勢基于瀏覽器,具有統(tǒng)一的平臺(tái)和 UI 體驗(yàn)無需安裝,只要有瀏覽器,隨時(shí)隨地使用總是使用應(yīng)用的當(dāng)前最新版本,無需升級(jí)數(shù)據(jù)持久存儲(chǔ)在云端,基本無需擔(dān)心丟失新一代 Web 技術(shù)提供了更好的用戶體驗(yàn)3為什么選擇 PHP 開發(fā) Web 應(yīng)用開源,免費(fèi),簡單,成熟,門檻低開發(fā)速度

2、快,部署方便,豐富的擴(kuò)展靈活,易伸縮,勝任大型網(wǎng)站成功案例多,人才供求旺盛4一、Web 應(yīng)用基本組件50. Web 應(yīng)用基本組件概要圖Web瀏覽器Web服務(wù)器圖片服務(wù)器應(yīng)用服務(wù)器數(shù)據(jù)服務(wù)器調(diào)度服務(wù)器遠(yuǎn)程服務(wù)HTTP應(yīng)用通信文件傳輸服務(wù)協(xié)議數(shù)據(jù)協(xié)議61. Web 瀏覽器跟后端 Web 服務(wù)器交互,呈現(xiàn) Web 應(yīng)用解析并渲染服務(wù)端輸出的 HTML/CSS提供豐富的 API,供超文本內(nèi)嵌的 JavaScript 調(diào)用以實(shí)現(xiàn)各種交互效果瀏覽器 API = 下一代 Win32 API ?RIA 的主戰(zhàn)場,各類創(chuàng)新應(yīng)用的核心平臺(tái)產(chǎn)品:Firefox/IE/Chrome/Opera/Safari/.72.

3、 HTTPWeb 應(yīng)用程序的基石瀏覽器與 Web 服務(wù)器交互的唯一“語言”TCP 可靠通信、無狀態(tài)、請(qǐng)求/響應(yīng)式簡單易讀,定義明確pipeline 等特性進(jìn)一步加速83. Web 服務(wù)器服務(wù)于瀏覽器、Web 蜘蛛等客戶端對(duì)靜態(tài)文件請(qǐng)求,直接發(fā)送文件(sendfile)對(duì)動(dòng)態(tài)程序請(qǐng)求,通常轉(zhuǎn)發(fā)(FastCGI, uwsgi, SCGI, AJP, .)給應(yīng)用服務(wù)器大量擴(kuò)展模塊,支持各種功能和特性定制(rewrite,headers,proxy,cache.)產(chǎn)品:Apache/nginx/lighttpd/.94. 應(yīng)用服務(wù)器接收 Web 服務(wù)器轉(zhuǎn)發(fā)過來的動(dòng)態(tài)程序請(qǐng)求,實(shí)現(xiàn)服務(wù)端程序邏輯與后端數(shù)

4、據(jù)服務(wù)器和遠(yuǎn)程服務(wù)交互PHP 大展身手的主戰(zhàn)場Python, Ruby, Java, C#, Perl, C, C+ . 各種技術(shù)勢力割據(jù)著這塊市場產(chǎn)品:php-fpm/uWSGI/tomcat/Mongrel/.105. 圖片服務(wù)器小型網(wǎng)站非必須,中大型網(wǎng)站上是標(biāo)配“因材施教”思想貫徹的產(chǎn)物epoll/kqueue/sendfile 驅(qū)動(dòng)的高性能服務(wù)分發(fā)到各地的 CDN 進(jìn)一步加速通過基于高速通道和協(xié)議的分布式文件系統(tǒng)從應(yīng)用服務(wù)器傳輸服務(wù)產(chǎn)品:nginx/lighttpd/.存儲(chǔ)/文件分發(fā)產(chǎn)品:NFS/MogileFS/FTP/ WebDAV/rsync/Hadoop/.116. 數(shù)據(jù)服務(wù)器

5、Web 應(yīng)用數(shù)據(jù)的最終歸宿關(guān)系型、鍵值型、文檔型、列型.會(huì)話存儲(chǔ)服務(wù)器存放著各瀏覽器會(huì)話數(shù)據(jù)搜索引擎存放著關(guān)鍵字倒排索引數(shù)據(jù)分布式緩存存放著需要加速訪問的數(shù)據(jù)產(chǎn)品:MySQL/PostgreSQL/Tokyo Tyrant/ Redis/MongoDB/Cassandra/Sphinx/ Memcached/.127. 遠(yuǎn)程服務(wù)郵件 MTA (自建或用第三方)手機(jī)短信網(wǎng)關(guān) (通常由第三方提供)第三方網(wǎng)站的開放 API (REST, SOAP, .)各種其它服務(wù)138. 調(diào)度服務(wù)器監(jiān)視、管理服務(wù)器群的狀態(tài)運(yùn)行后臺(tái)持久任務(wù)進(jìn)程,諸如數(shù)據(jù)挖掘,會(huì)話清掃,緩存數(shù)據(jù)預(yù)生成,等等14二、PHP Web 應(yīng)

6、用運(yùn)行時(shí)分析15Web 服務(wù)端各組件進(jìn)程層面剖析文件cachesearchdata應(yīng)用服務(wù)器進(jìn)程Web 服務(wù)器進(jìn)程各種通信協(xié)議應(yīng)用通信協(xié)議文件傳輸協(xié)議圖片服務(wù)器進(jìn)程service調(diào)度器文件服務(wù)器進(jìn)程代碼加載文件訪問16PHP 應(yīng)用服務(wù)器進(jìn)程剖析PHP源代碼PHP 執(zhí)行流往期的請(qǐng)求與響應(yīng)loadPHP 解釋器工作進(jìn)程當(dāng)前請(qǐng)求與響應(yīng)未來的請(qǐng)求與響應(yīng)應(yīng)用通信協(xié)議,如 FastCGI17PHP 解釋器的邏輯結(jié)構(gòu)SAPI (殼)PHP 外圍(文件加載,網(wǎng)絡(luò))Zend 引擎(編譯,運(yùn)行)擴(kuò)展 A擴(kuò)展 B.擴(kuò)展 NTSRM (線程資源管理,對(duì) PHP 代碼屏蔽線程,確保內(nèi)部線程安全)18三、PHP Web

7、應(yīng)用設(shè)計(jì)190. 設(shè)計(jì)要素設(shè)計(jì)思想應(yīng)用組織基本功能附加特性目錄結(jié)構(gòu)設(shè)計(jì)樣例201. 設(shè)計(jì)思想Modular - 開發(fā)基本原則MVC - 基本架構(gòu)模式KISS/YAGNI - 簡潔直接,防止過度設(shè)計(jì)DRY - 避免重復(fù),盡量復(fù)用Design Patterns - 可選的設(shè)計(jì)模式DDD/RDD - 可選的應(yīng)用開發(fā)參考原則212. 應(yīng)用組織項(xiàng)目(project)系統(tǒng)(system)應(yīng)用(application)模塊(module)控制器(controller)操作(action)方法(method)223. 基本功能控制器與操作(controller & action),模板(view/templa

8、te),輔助函數(shù)(helper)來訪者(visitor/request & response),角色(role),會(huì)話(session)配置(config),URL解析與創(chuàng)建(router),目標(biāo)分派(dispatcher)過濾器(filter),表單(form)領(lǐng)域模型(model),領(lǐng)域服務(wù)(service)基礎(chǔ)服務(wù)(db, cache, mailer, search, .)234. 附加特性團(tuán)隊(duì)開發(fā)友好(例如不會(huì)造成配置文件沖突)易于集成第三方代碼為伸縮而設(shè)計(jì)(把握好度,防止過度設(shè)計(jì)),例如動(dòng)靜態(tài)資源分離,多域名,各服務(wù)器切換成分布式集群,等等運(yùn)行模式,調(diào)試日志,錯(cuò)誤日志考慮用 PHP

9、輸出 CSS,JavaScript,進(jìn)行更靈活的控制245. 目錄結(jié)構(gòu)不同的目錄結(jié)構(gòu)反映不同的設(shè)計(jì)觀和需求,因此有不同的目錄層次盡量簡化目錄結(jié)構(gòu)和目錄層次使用大眾化的、簡短的、明確的名字256. 設(shè)計(jì)樣例266. 設(shè)計(jì)樣例之 app/ 目錄276. 設(shè)計(jì)樣例之控制器代碼286. 設(shè)計(jì)樣例之 views/ 目錄296. 設(shè)計(jì)樣例之 layout 模板306. 設(shè)計(jì)樣例之 page 模板316. 設(shè)計(jì)樣例之 widgets/ 目錄326. 設(shè)計(jì)樣例之 config/ 目錄custom.php - 本地環(huán)境定制的配置參數(shù)default.php - 所有環(huán)境通用的配置參數(shù)routes.php - URL 映射規(guī)則配置參數(shù)通常采用平坦的鍵值方式,也可以采用樹狀的鍵值方式URL 映射配置需要便于匹配和創(chuàng)建336. 設(shè)計(jì)樣例之 data/ 目錄log/ - 系統(tǒng)各類日志share/ - 共享的靜態(tài)數(shù)據(jù)tmp/ - Web 應(yīng)用運(yùn)行期生成的臨時(shí)文件var/ - Web 應(yīng)用操作的數(shù)據(jù)346. 設(shè)計(jì)樣例之其它考慮復(fù)雜度如何?應(yīng)用代碼越來越多,需要多級(jí)目錄,怎么處理與重構(gòu)?form 太難用,不靈活,咋整?我不喜歡用 PHP 做模板語言,我

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論