首頁»ASP.NET»分層開發思想與小籠包

分層開發思想與小籠包

來源:litianping 發布時間:2012-04-16 閱讀次數:

  早上吃早點的時候,突發靈感,結合吃的小籠包和日常的開發經驗來說一下分層的應用。 

  首先,談一下什么是三層架構,所謂的三層開發就是將整個業務應用劃分為表示層-業務邏輯層―數據訪問層-數據庫等,有的還要細一些,明確地將客戶端的表示層、業務邏輯訪問、和數據訪問及數據庫訪問劃分出來,十分有利于系統的開發,維護、部署和擴展。 

  軟件要分層,其實總結一句話,是為了實現“高內聚、低耦合”。采用“分而治之”的思想,把問題劃分開來各個解決,易于控制,易于延展,易于分配資源。  

  這種三層結構有什么優勢呢?  

  1. 通過將整個系統分為不同的邏輯塊,大大降低了應用系統開發和維護的成本。 

  三層結構將表示部分和業務邏輯部分按照客戶層和應用服務器相分離,客戶端和應用服務器、應用服務器和數據庫服務器之間的通信以及異構平臺之間的數據交換等都可以通過中間件或者相關程序來實現。當數據庫或者應用服務器的業務邏輯改變時,客戶端并不需要改變,反之亦然,從而大大提高了系統模塊的復用性,縮短了開發周期,降低了維護費用。 

  趣味理解: 

  假設飯店這樣來做小籠包:  

  一層蒸餃,  

  一層肉包,      

  一層素包。  

  首先這種方式我們可以讓做包子的分成不同的小組,來負責做不同的包子。當做好了每一種包子,他們可以很方便的知道,該放到哪個籠里,不至于挨個去查看該放在哪里,我們也很容易地將籠屜放到火上面去,而不會影響其他籠的加熱。當我們要吃肉包或蒸餃時,我們也很容易就能找到我們所需要的,非常節省時間和體力。把肉包或蒸餃拿走或者增加,并不影響素包的加熱。  

  如果我們把這些都放在一個大籠里,你覺得會怎么樣?會不會很亂,維護起來很浪費時間,不但找起來麻煩,而其每次揭開鍋都會對其他的有影響。   

  2. 將數據訪問和邏輯操作都集中到組件中,增強了系統的復用性。  

  如:將數據訪問集中到數據訪問層的組件中,從而減少了應用程序中的重復代碼,每個需要訪問數據庫、表的窗體都使用相同的組件。  

  如:一些共性的邏輯操作都集中封裝在邏輯層的組件中,每一個使用該方法的操作,可以共享來訪問該組件。  

  趣味理解:  

  簡單的理解,籠屜本身就是一個重用的例子,如果我們使用一次性的籠(像一次性筷子一樣理解),會浪費多少人工來做啊(重復編寫麻煩),并且會有很大的資源浪費(代碼冗余),最后還要進行垃圾處理(后期維護)。并且,如果籠屜和爐火的鍋按一種規范和標準(接口)來做,這樣的籠屜不但可以在這里用,也可以拿到別的地方用。(雖然這樣理解不太確切,簡單的這樣理解好了) 

  3. 系統的擴展性大大增強。 

  模塊化使得系統很容易在縱向和水平兩個方向拓展:一方面可以將系統升級為更大、更有力的平臺,同時也可以適當增加規模來增強系統的網絡應用。由于擺脫了系統同構性的限制,使得分布數據處理成為可能。在擴充或修改功能時,基本不會破壞原有結構的穩定性。  

  趣味理解: 

  隨著顧客的需要,我們現在需要增加新品種,如蒸饅頭,蒸地瓜,那么直接可以增加一層籠就是了,對其他籠不會有什么影響。   

  三層結構在營造企業競爭優勢中的作用主要體現在模塊化設計使得用戶在現有結構的基礎上實現了系統擴展,從而提高企業信息化的速度和業務水平;同時三層結構中中間件的出現使得用戶可以直接從市場上選擇合適的產品來構建系統,大大降低了開發周期和開發費用。   

  但分層結構也有缺點也不是越多越好,那樣管理很多層會比較麻煩,運行效率可能比較低。所以,一個具備良好層次結構的系統,其層的數目要恰到好處才行。

相關文檔:三層架構和養豬

QQ群:WEB開發者官方群(515171538),驗證消息:10000
微信群:加小編微信 849023636 邀請您加入,驗證消息:10000
提示:更多精彩內容關注微信公眾號:全棧開發者中心(fsder-com)
網友評論(共1條評論) 正在載入評論......
理智評論文明上網,拒絕惡意謾罵 發表評論 / 共1條評論
登錄會員中心
大发国际网址 永泰县| 拉孜县| 朝阳区| 麦盖提县| 镇雄县| 乾安县| 沧州市| 邹平县| 利川市| 共和县| 于都县| 湘潭县| 宁南县| 邵武市| 马鞍山市| 宜兰市| 台山市| 平原县| 安康市| 赫章县| 元谋县| 眉山市| 皋兰县| 团风县| 高清| 辉南县| 赣榆县| 隆安县| 旌德县| 庆阳市| 通海县| 赞皇县| 红河县| 石狮市| 富民县| 汝阳县| 明星| 奉化市| 天长市| 葫芦岛市| 沂南县| 洪泽县| 中西区| 巩留县| 漳平市| 冷水江市| 江永县| 博乐市| 图木舒克市| 永胜县| 北安市| 万宁市| 读书| 苏尼特左旗| 福海县| 临泽县| 焉耆| 沙田区| 镇安县| 佛山市| 穆棱市| 儋州市| 子洲县| 金堂县| 辽阳县| 晋江市| 平远县| 乐清市| 上虞市| 静乐县| 区。| 隆昌县| 迁西县| 双峰县| 扎鲁特旗| 垫江县| 禹州市| 定日县| 二连浩特市| 安仁县| 乌苏市| 察雅县| 西充县| 城市| 遵化市| 唐海县| 中山市| 青铜峡市| 白银市| 濉溪县| 聊城市| 浠水县| 高台县| 武功县| 闸北区| 安西县| 常山县| 姜堰市| 德令哈市| 平原县| 黄梅县| 淳化县| 法库县| 天镇县| 泰和县| 双辽市| 蒲城县| 延吉市| 徐汇区| 布尔津县| 固始县| 玉山县| 宁国市| 潮州市| 无为县| 日照市| 兖州市| 神池县| 石河子市| 五家渠市| 永年县| 丰城市| 乌兰浩特市| 平乡县| 永春县| 马边| 岳普湖县| 棋牌| 清苑县| 贵德县| 合江县| 武夷山市| 大厂| 确山县| 化州市| 双牌县| 泗水县|