應用web框架模塊設計三國演義篇

jopen 9年前發布 | 13K 次閱讀 Web框架

從事web開發已經10年時間,近幾年也一直從事微博應用產品的研發。從原生php寫網站到使用cms bbs整合的大型站點從使用各種流行的開源開發框架到成熟穩定的平臺級框架下做研發。這期間對應用型web開發框架設計有一些自己的理解和見解,在這里和大家一起分享交流一下。

為了讓大家對框架的各個模塊有較深的理解,我對模塊職能角色匹配了三國人物,在這里純屬為了增加大家的趣味性理解,如有不同見解可以在后面使勁得拍磚:)。

一個較成熟的框架圖如下:

應用web框架模塊設計三國演義篇

三國人物和各個模塊角色匹配如下:

一、單一入口(index.php)---門神關羽


應用web框架模塊設計三國演義篇

一夫當關、萬夫莫開。這也是為啥諸葛亮把關羽安排在荊州這個戰略要地的原因。因為所有的請求都得經過它。它對請求安全、框架整體型起到至關作用。

二、路由(Router)--引路人徐庶


應用web框架模塊設計三國演義篇

徐 庶的成名之作就是把諸葛亮引薦給了劉備,從此使劉備的事業蒸蒸日上。其實這里最主要說說他的“引路”的作用。一個項目的代碼往往要承載各種的業務職能 (PC、H5、Api、Manage等等)需要。部署肯定是只有一個物理目錄,只不過需要配置不同的主機頭和別名,或者同一個域名下Uri 需要映射到不 同規則的Controler。引路的路由模塊對系統的遷移升級和適應業務擴展起到關鍵作用。但同時提醒一下,這個地方也是經常是因為變更而導致線上故障問 題點。所以設計時保持大模塊劃分下,細節盡量保持簡單

三、控制層(Controler)--掌柜曹操

應用web框架模塊設計三國演義篇

曹操就不需要過多文字對他畫像了。識人、決策、控制這些是Controler工作職能三要素。首先它要對所有的(GET、POST)傳 入參數做驗證,安全過濾、合法性(識人品),然后進行業務判斷(決策)、需要調用哪個業務方法(控制),最后響應按不同格式輸出(json、html、二 進制)。基本干這些活就夠了。大體上就是客戶帶著買賣來了,掌柜的先看看人咋樣,人靠譜、具備買賣達成的條件、前柜收錢后柜出貨,買賣成交。這一層注意的 地方就是不要有太多的業務邏輯在里面否則后柜的業務模型層的諸葛亮會很尷尬,搞的自己一堆業務邏輯在里面,代碼看起來很混亂,基本是自己找累。所以設計控 制層一定要明確自己的三個職責。

四、業務模型層(Business Model)--勞模諸葛亮

應用web框架模塊設計三國演義篇

Business Model 這 個職能非諸葛亮莫屬,諸葛亮在三國演義中絕對是一位日理萬機的勞模。整個項目的業務里外大小事務均得有它來完成,所以這一層需要對各種的業務需求有深刻理 解后再進行代碼編寫,寫好的類與函數既要抽象可重用也要滿足不同的業務場景需要。對于這一層雖然抽象和重用很重要,但是最重要的是條例清晰閱讀性好。產品 需求變更和開發人員的變化在這一層體現非常明顯。

五、表示層(View)--戰神呂布

應用web框架模塊設計三國演義篇

這一層基本是模板渲染了,有很部分框架使用smart模板,也有部分框架使用自己的模板語法。微博目前使用的是yaf框架模板引擎,它書寫語法是和原生php編寫是一樣的,書寫起來直接簡單,性能也超優,值得推薦給大家使用。

六、異步處理(Queue、Cron)--幕后英雄趙云

應用web框架模塊設計三國演義篇

大 型網站特別是像微博這樣高并發請求的產品。異步處理肯定是必要的,運行方式有兩種:1、隊列處理、2、定時任務執行。趙云經常是在諸葛亮授意下默默的去完 成一些看不見但又是絕對重要的任務。這塊應該有注意二點:隊列監控、日志收集。它們對線上提前發現問題和解決問題提供有力的保障。

七、接口層(Api)--外交官魯肅

應用web框架模塊設計三國演義篇

一 個平臺級產品在技術支撐上部門和人員需要拆解,每個部門和每個業務都會有自己獨立的服務模塊。他們之間是需要相互依賴、相互調用的,友好、橋梁這就是魯肅 外交官的作用,同是也是接口層(Api)設計的理念和原則。作為項目自身Api層的編寫需要內接口聲明和注釋說明清晰、對外需要保證雙方的調用穩定性。 孫、劉兩家聯合據曹魯肅功不可沒。

八、數據層(Data)--后方夏侯敦

應用web框架模塊設計三國演義篇

兵 馬未動,糧草先行。在我每次啟動新項目研發時有個習慣:就是首先把數據層設計封裝好。存儲類型選擇(mysql、redis、其它),如何分庫、分表,緩 存的策略和命中率評估、crud接口設計。數據層質量高低對以后需求變更和系統擴容影響很大,同時它也是強有力的后方保障層。

九、緩存層(MC)--良將張遼

應用web框架模塊設計三國演義篇

張遼是一位不可多得良將正如Memcach讀寫性能一樣。這一層基本和數據層統一做設計和規劃,除了數據庫數據緩存、也可以做接口緩存、業務數據緩存。但每份緩存最好有統一的更新和清除接口,雖然多謝幾行代碼但管理起來很方便。

十、通用類庫(Class Library)--謀士郭嘉

應用web框架模塊設計三國演義篇

郭嘉也算是謀士智囊團的代表人物。各種的類庫都可以放在里面例如:DB、MC、HTTP、字符串處理、安全過濾、類型轉換、登錄驗證等等。

經過了人物演義后形成如下陣型結構:

應用web框架模塊設計三國演義篇

陣容隊形精英組合在三國打天下也無敵了,哈哈......

聊完了演義,最后還想和大家分享一下我對一款優秀的WEB開發框架特性理解和期待,總結有幾點:

1.框架結構清晰、書寫代碼簡單易上手

2.框架定義規范,降低出錯的概率

3.良好的可運維性

4.對第三方友好兼容

5.性能優越

6.強大功能集成

總之,“人力”和“電力”是互聯網公司最大的成本,一款優秀的開發框架可以把這兩個指標降到最低,并且讓每位程序員工作身心愉悅、編程能力神速提升,同時公司方面也能有很多的技術沉淀和積累。一舉多得、各方受益,豈不美哉。

來自: http://weibo.com/p/1001603887721239202407

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!