php程式設計雲平台 PHP系統設計與雲架構

2021-10-22 21:13:42 字數 2465 閱讀 8299

這要回顧到10年前, 我入手了一本 wrox 的 professional php4.

這本書我印象深刻, 因為它一共有十乙個作者在寫: 當時看到它有一篇單元 「多層式架構開發」 ,讓我對整個 web 架構開發的視野完全開啟.

不過我得承認我以前很嘴賤, 常說 smarty template 是玩具.

ps : smarty template 採用 tpl php var 的方式來做少了這一層,常會極端的用些言語說它不好.

你可以參考這二本書, 會發現這一層放入這個設計會讓你未來工作變的輕鬆很多.

… homas/dp/1861006918

… p;keywords=php4+xml

#回到正題-

這一層專門用來處理 content logic layer 處理好的資料, 利用 xml , json 等標準化的介面語言, 來規範你的 content logic layer 按照你的 convention (規範)來吐出資料給 presentation logic layer

a.這樣做有什麼好處:

1.一致性高:

也因為這樣, 你的 presentation layer 有著標準化的格式, 所以你在使用 ajax , as , php sdk 等…做畫面邏輯串接時,

你的畫面邏輯的程式將會變的一致性很高, 因為都是參考同樣的格式, 讓你的畫面邏輯的程式不會亂長.

工程師因為熟悉相同的介面格式, 工作起來將會非常的輕鬆.

2.可重複利用性高:

在你享受 presentation layer 有著標準化的格式的好處時, 你會發現,你可以把畫面邏輯也整理起來重複利用,

這時你會發現你少寫好多好多的程式碼.

例如: 換頁邏輯, 表單的呈現………..等等等, 只要另外塞 css 進來就好了. 根本不用寫什麼程式.

3.跨平台性高:

啥咪?還有.是的!!!大家記得 rss 嗎? rss就是利用了 presentation layer 這個特性讓各種平台都可以串接 blog 的文章內容, 讓你的系統有著強大的誇平台性整合能力.

4.雲端應用:

是的即然跨平台性高了, 也就是你完成這個需求的同時, 你所有的系統內容的呈現可以丟給任何雲端平台的整合!

b.使用心得:

這個設計, 會讓你的系統架構非常靈活, 靈活到什麼程度?

以往一組新增/修改/刪除/換頁/搜尋, 只要寫完一次而且完整的從下到上每一層整合上來.

我幾乎不用二次開發, 直接套用之前寫好的 content logic , presentation logic 就可以完成乙個需求.

一天可以完工三十幾組新增/修改/刪除/換頁/搜尋的串接, 所以我當時消耗需求的速度比起一般沒有用這個設計技巧快上非常的多.

而大家心裡會有疑問, 這不就是以前 ruby & cake php 的特性嗎?是的!!就這個理念!

不過有差異, 就是 cake php 在做畫面邏輯時, 它並不會真的把這層切開, 而是將 mvc 裡的 v 和 c 有效化的重複利用, 但是一但要使用雲端應用和誇平台時,

之前寫過的程式無法直接透過 presentation layer 拉出去給第三方平台做串接.

雖然省了 orm 那一層的重複開發, 但是 content layer 和 presentation layer 還是要在手工調整的.

而一但一調整, 就會產生, debug ,開發, 穩定性, 和你又多了一堆code 要維護的工作….

4. 表現邏輯層 :

這一層講起來輕鬆多了, 因為大家己經有了非常多的 ajax , xsl , facebook sdk , ios , android , flash as 的串接經驗.

沒錯, 這裡就是把之前辛苦定義並且做好的 presentation layer 吐出來的格式做應用.

你可以透過~http , socket server 等等..將你的 presentation layer 的 json , xml 吐出來, 並且交給你的畫面邏輯程式去串接.

這麼一來你也輕鬆完成了乙個雲端的整合介面, 讓你寫的 php 可以廣泛的使用在任何不同的平台上.

5. 單元測試/壓力測試/整合測試:

在我開發每一層的元件時, 我都會要求工程師, 做單元測試(unit test), 壓力測試( stress test ), 整合測試( integration test )

a.單元測試(unit test): 你可以使用 phpunit 或是自己寫, 針對你的乙個函式的進和出的測試, 並且預先寫好 test case ,確保每一層的函式庫都是非常穩定而且沒有問題的, 來讓你管理程式的品質.

b.壓力測試(stess test): 針對每乙個函式庫的邏輯, 在做 unit test 的同時, 將 stress test 的 test case 喂進去, 並且記錄每乙個函式處理 test 所消耗的時間.

c.整合測試(integration test): 你可以寫一支程式, 做 daily build 每天去檢查所有程式設計師 commit 到 svn 的程式碼是否有問題, 確保每個函式之間整合是正常的, 降低 debug 的工作量.

php雲掃墓平台

樹洞外鏈是一款免費開源的php外鏈網盤系統,介面簡潔友好,支援七牛 本地 遠端 阿里雲oss 又拍雲五種儲存方式,支援多使用者系統,支援自定義檔案上傳格式,檔案大小限制,多上傳方案策略。關於 樹洞外鏈 程式版本 2.4.6,版本代號 17 主題支援版本 12 作者部落格 樹洞 github專案主頁 ...

php 秒殺系統設計

1.基礎工具與只是介紹 1 壓測工具的安裝 2 壓測工具的使用 檢測介面的最大qps 3 nginx 限流配置 按連線數限速,併發數 ngx http limit conn module 按請求速率限速,按ip限制單位時間內的請求數 ngx http limit req module 限流配置 建立...

用PHP搭建你的雲平台

php開放平台,搭建雲平台的最佳選擇。基於開源的phalapi框架打造的商業軟體,官方出品。phalapi專業版官網 可購買商業授權和源 phalapi pro,是一套專注搭建雲平台的系統軟體,企業可以基於phalapi pro快速搭建自主的雲平台 baas saas paas等平台,也可以使用ph...