小菜編程成長記(十 三層架構,分層開發)

作者: 伍迷  來源: 博客園  發布時間: 2008-09-10 17:34  閱讀: 8329 次  推薦: 0   原文鏈接   [收藏]  
 
[1] 小菜編程成長記(十 三層架構,分層開發)
[2] 小菜編程成長記(十 三層架構,分層開發)

系列文章導航:

四大發明之活字印刷——面向對象思想的勝利

小菜編程成長記(一 面試受挫——代碼無錯就是好?)

小菜編程成長記(二 代碼規范、重構)

小菜編程成長記(三 復制VS復用)

小菜編程成長記(四 業務的封裝)

小菜編程成長記(五 體會簡單工廠模式的美妙)

小菜編程成長記(五 體會簡單工廠模式的美妙)

小菜編程成長記(五 體會簡單工廠模式的美妙)

小菜編程成長記(六 工廠不好用了?)

小菜編程成長記(七 用“策略模式”是一種好策略)

小菜編程成長記(八 反射——程序員的快樂!)

小菜編程成長記(九 會修電腦不會修收音機?——聊設計模式原則)

小菜編程成長記(十 三層架構,分層開發)

小菜編程成長記(十一 無熟人難辦事?——聊設計模式迪米特法則)

小菜編程成長記(十二 有了門面,程序員的程序會更加體面!)

小菜編程成長記(十三 設計模式不能戲說!設計模式怎就不能戲說?)

 

續上篇)

   “大鳥,我們繼續討論吧!”小菜很沮喪的說。
       “小伙子,不會修收音機也是很正常的,沒什么大不了的,用不著喪著一個臉。好象失戀一樣,男人再強也要學會說‘不’。”大鳥安慰著說,“如果你的目標是要成為修理電器專家,那么你連收音機都不會修,那是很郁悶的事。但你現在的目標是什么?”
  “我想成為軟件架構師,編程專家。”小菜毫不含糊的說。

  “就是,你的人生目標很明確,別的方面弱一些有什么關系呢。”大鳥繼續說道,“現在電視節目《波士堂》里請來的嘉賓,全是中國的大企業家,許多人身家上億,節目中都要求他們要有一個Boss秀,難道真的要把他們的才藝去和人家藝術家比嗎,我看老板們唱歌雖很業余,但卻也感覺得到他們那份認真和情趣——原來億萬富翁也是會唱歌,會跳舞,會食人間煙火的。至于他們歌唱得是不是跑調沒有人在意的,明白嗎?”
      “我明白!,我一定要好好努力,成為編程專家。”,小菜說,“我們言歸正傳,你說我那程序用了反射后,還有什么需要修改的呢?”
      “嗯,好!”大鳥清了清嗓子,開始上課,“如果你的程序再也不修改了,或者就是改改打折的額度和返利額度,那么你的代碼是足夠可以了。不過需求卻是會不斷產生的。比如說,現在這個程序是單機版的程序,如果需要商場多層樓的所有收銀機都要使用,那該怎么辦?”
      “那用XML的配置文件就不合適了,應該用數據庫會比較好!”
      “那么老板聽說了C/S架構的壞處,更新麻煩,不夠安全等等,他也不是傻瓜,每次更新都需要針對每臺機器部署,一次就半天,那些工作時間他是需要給程序員付薪水的。所以他提出要改為B/S架構,客戶端用瀏覽器支持,你怎么辦?”
      “那需要改界面了,把應用程序改成Web程序。”
      “就你現在的代碼,改起來容易嗎?”
      “好象不容易,需要重新寫,盡管可以復制一些代碼過去,不過要重新寫的東西還是很多的。”
      “好,那你有沒有發現,我說了這么多的需求變動,但系統中有一些東西一直沒有變,是哪些?”
      “我知道,是策略模式用到的那幾個類,也就是正常收費、打折消費、返利消費等算法是沒有變化的。”
      “是呀,其實不是算法不會變,而是之前我們已經考慮它很多了,用了策略模式,用了反射技術使得它的變化相對穩定。你剛才也說,要把應用程序改為Web是需要復制粘貼的,可實際上,改改界面和這些算法有什么關系?”
      “沒有關系。”     
      “還有,把配置文件改為數據庫訪問,這其實是讀取寫入數據的操作,和算法又有什么關系呢?”
      “也沒有關系,我知道了,你是說,他們之間完全可以分離開,互不影響,改動其一,不要影響其它兩者?哦,這是不是就是所謂的三層架構?”
      “對,說得好,就是三層架構。三層架構或者分層開發說起來容易,在程序開發時的初學者還是有很多的誤解。比如有些初學者以為,DBServer-WebServer-Client是三層架構,其實這是物理意思上的三層架構,和程序的三層架構沒有什么關系。還有人以為,WinForm界面的窗體或者WebForm的aspx是最上一層,它們對應的代碼后置(codebehind)文件Form.cs或aspx.cs是第二層,然后再有一個訪問數據庫的代碼,比如ado.cs或SqlHelper.cs是最下一層,這其實也是非常錯誤的理解。再有,很多人認為MVC模式(Model-View-Controler)就是三層架構,這是比較經典的錯誤理解了。總之,盡管三層架構不算難,不過由于現在很多數書籍材料的講解不透,所以讓我們初學者都概念模糊,理解有誤,非常的可惜的。”
      “啊,我一直以為MVC就是三層架構呀,看來真的弄錯了。那么三層具體是什么呢?”
      “我不是已經告訴你了嗎?你說說看,不管是應用程序WinForm,還是網頁程序Aspx,它們主要用來干嗎的?”
      “用來界面顯示和處理的,對的,它們可以看作是一層。叫界面層?”
      “界面層這種叫法可以,或者叫UI層、表現層都可以。”
      “訪問配置文件或處理數據庫是不是就是數據層了?”
      “哈,三層架構是不是不難理解呀!說得很對,不過名稱應該叫做數據訪問層(Data Access Layer)或簡稱DAL層。”
      “那么第三個層就是那些算法類了,這叫什么層呢?”
      “這些算法是誰制定的?由誰來決定其變化?”
      “當然是需求提出者,即軟件系統所有者制定的,他們要改算法,我們開發就得改。這都是他們的業務算法呀!”
      “哈,好,你說到了一個詞,業務(Business)或叫商務,這其實是軟件的核心,我們就是根據業務規則來開發軟件提供服務的,所以這個層叫做業務邏輯層(Business Logic Layer)。不過它應該是中間的一層,介于另兩者之間。”
      “哦,所謂的三層開發,就是關于表現層、業務邏輯層和數據訪問層的開發。那么他們之間的關系呢?”
      “你需要知道,這其實只是大方向的分層,每個層中都有可能再細分為多個層次和結構。比如PetShop4,這是微軟用它來展示.Net企業系統開發的能力的范例,PetShop盡管作為對大型軟件系統開發的樣例還是不夠,但可以理解為兒童的智力玩具。不過對于初學編程的小菜你來說,玩具卻是最好的學習道具。”

[第1頁][第2頁]
0
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()