日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

大话设计模式(十一 三层架构,分层开发)

發(fā)布時(shí)間:2025/3/21 asp.net 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大话设计模式(十一 三层架构,分层开发) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

(續(xù)上篇)

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

下面圖源自Bruce Zhang博客



? “如果是要細(xì)化,可能結(jié)構(gòu)就會(huì)變得很復(fù)雜。比如給你看看PetShop4的結(jié)構(gòu)圖。”大鳥(niǎo)繼續(xù)說(shuō)道。

“啊,上面那圖我是明白了,下面這圖看得暈暈乎乎的,哪有這樣復(fù)雜的玩具,大鳥(niǎo)又在故弄玄虛,快點(diǎn)解釋一下?”小菜疑惑的說(shuō)。
?????? “第一次看到就完全看明白,那不就成天才了。學(xué)習(xí)它還需要慢慢來(lái),以后再說(shuō)。你現(xiàn)在應(yīng)該對(duì)改寫(xiě)商場(chǎng)收銀系統(tǒng)有點(diǎn)數(shù)了吧,應(yīng)該怎么做呢?”
?????? “應(yīng)該原來(lái)的解決方案分為三個(gè)項(xiàng)目,一個(gè)UI項(xiàng)目,目前是WinForm的程序,一個(gè)BLL項(xiàng)目,用來(lái)把算法類(lèi)都封裝,還有一個(gè)DAL項(xiàng)目,用來(lái)訪(fǎng)問(wèn)配置文件。對(duì)嗎?”
????? “嗯,差不多了,快去改吧,口說(shuō)容易,實(shí)踐中會(huì)有很多細(xì)節(jié)問(wèn)題等著你去解決的。”
????? “好的,不過(guò)今天不行了,我前幾天面試的一家公司給我Offer了,我明天就要去第一天上班,明晚我再去改寫(xiě)這個(gè)程序。”小菜說(shuō)道。
????? “恭喜恭喜,就是你之前提到了那家做物流軟件的公司嗎?找到工作你得請(qǐng)客啦。”
????? “No problem,不過(guò)等我發(fā)工資吧。就是那一家。感覺(jué)公司還是很大的。”
????? “那你快去休息吧,第一天要好好表現(xiàn)哦!”
(待續(xù))
應(yīng)一些回復(fù)朋友的要求,專(zhuān)門(mén)寫(xiě)了關(guān)于Web架構(gòu)方面的文章,本篇還只是簡(jiǎn)單介紹。其實(shí)這些都不是新鮮的東西,如果你認(rèn)為自己的確是小菜,我建議你去下載上一篇的代碼來(lái)根據(jù)本篇的介紹去改寫(xiě),編程是實(shí)踐性很強(qiáng)的技術(shù),理解不等于會(huì)應(yīng)用的。 出處:http://www.cnblogs.com/cj723/archive/2007/03/26/688048.html

總結(jié)

以上是生活随笔為你收集整理的大话设计模式(十一 三层架构,分层开发)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。