書摘-ASP.NET 多層式架構 與 兩層式架構 設計

【ASP.NET商業級資料庫網站開發實務】一書中,第一章的 1.3 節,討論了一些多層式架構與兩層式架構的差異,這一部份,是我寫這本書的重點,主要的目標,是希望 ASP.NET 開發人員,可以有一本討論實務開發經驗的參考書,瞭解網站的開發是怎麼一回事。

整本書最主要的關鍵在於第三章的 1.3 節所討論的兩張圖示,其中第一張圖長得像這個樣子:


如果你採用一般書籍討論的 SqlDataSource 來實作資料庫網站,使用的是右邊這種架構,程式碼都寫在網頁的後置程式碼檔案,看了本書,你會知道如何透過左邊的方式來實作相同的功能,同時瞭解它的好處。

其實光看圖就可以知道,因為嵌入了一層「中間層類別」,作為底層資料來源的緩衝,你的系統彈性就會變得很大,同時由於邏輯程式碼的分離,也讓系統更為容易維護。

當然,一個大型網站,這樣的拆解還是不夠的,因此有更複雜的作法,架構就如同底下這樣,原來的「中間層類別」,又被拆成兩層,當然,系統會更彈性,至於會不會更好維護,這可不一定,看架構設計的功力,不過,至少你知道了,寫網站,不是簡簡單的拉拉 SqlDataSource 這回事,也因此,這本書第一章的 1.1 節,開宗明義就定了這個標題:「滑鼠設定的神話」,讓讀者很清楚的明白為什麼需要閱讀這本書。


14 則留言:

Bibby 提到...

ASP.NET商業級資料庫網站開發實務
這本書我在過年時看完了..
現在的專案也用分層的分式來做..
感覺還蠻有fu的..

元件部份寫在頁面的cs
不干元件的部份就都寫在邏輯層..
資料庫的部份用寫在資料庫連接層

只是..有時..簡單的連接..還要分層..
就很ooxx..感覺麻煩麻煩..哈..^^..

康廷數位 提到...

Hi,Bibby:謝謝閱讀我們工作室的書,這本書考量到市場接受度,某些更複雜的主題事實上還是可以繼續討論,但是沒有放進來。

不過我希望開發人員,很快就可以將這本書消化之後,運用在實務上,因為.NET架構的關係,分層實作事實上已經不困難了,用點心就可以朝這條路上順利邁進了。

至於簡單的連接,其實也可以彈性一些來作,如果不是Loading很重的網頁,有些直接串接資料存取層也是OK的,就看自已的需要了。:)

bibby 提到...

我有個問題..這句話"如果不是Loading很重的網頁,有些直接串接資料存取層也是OK的"..是啥意思..我看完您的書後..感覺..分層的概念比較像是為程式的延展性和維護方便..呂大您說的loading重的網頁..是建議用分層來做ㄇ??還是..sqldatasource這些直接連接資料庫的控制項..效能沒有分層的好..^^||..麻煩呂大給點意見..

康廷數位 提到...

應該這樣說,如果你要開發的網站,是真正要上線運作的,而非學生作業或是展示用的,最好是分層處理,不要使用sqlDataSource這種東西。

分層有很多方式,這篇文章就提到了兩種,當你的系統愈來愈複雜,你會發現,沒有一種分層方法可以通用的,必須隨時根據需求來調整,但是基本上,資料存取層這種直接與底層資料來源溝通的程式碼,最好獨立出來,除了可以將資料來源與網頁層隔開,也可以在面對不同的資料庫時有比較彈性的空間。而中間層,就看需要下去再切割或是調整。

至於不是Loading很重的網頁,比如說只呈現公司聯絡資訊的簡單網頁,這類的網頁事實上,不用中間的邏輯層,也可以就透過資料存取層來存取,甚至直接透過快取來抓就好,反正資料很久才有可能變一次,總之,就是看你系統的設計,最大的重點是,絕對不要讓網頁直接跳過存取層就能夠與底層資料進行溝通,sqldatasource作的就是這種事。

最後,效能是一個很複雜的主題,影響的層面很廣,包含資料庫的調校,快取的運用,甚至硬體,所使用的sql語法,都會影響,架構設計的好壞,基本上對於你系統的延展性與維護上的影響會比較大一點。

匿名 提到...

ASP.NET 多層式架構 與 兩層式架構 設計????

這東西不是在java早就玩透~我不懂現在推這種干麻~~

是M$改邪歸正,還是後知後覺??

康廷數位 提到...

嗯嗯
感謝您的意見
我曾經維護大型Java專案一段不算短的時間
事實上,什麼平台語言都可以,
能解決問題就好了

M$改邪歸正,還是後知後覺,我是沒什麼概念
也不想去研究,
只是我的工作目前就是focus在.NET上面
我就去研究他,如此而已
將來如果我又接了Java的案子,或許又去玩Java啦

如果你覺得Java是神,能為你帶來財富與好運,或是可以靠他活得很好,那恭喜你,你很幸福,我從來就比較命苦,什麼都要碰,這也是沒辦法的事,哈。

匿名 提到...

程式設計不能只專寫一種語言~版主說的沒錯
我對版主沒有什麼意見啦!
只是純評論M$~~請別誤會。

在之前早期接觸的net1.1的案子,
看過很多新人快速的學習ASP.NET 也是件好事,但我也遇到寫了一年ASP.NET的PG,連基本的HTML Element都不熟!


也許版主會認為我是執迷不悟JAVA支持者,但我覺得ASP.NET是在成長中,但不是全部~往往我會遇到的.NET PG 在轉換JAVA的案子反而比較難上手,而JAVA 的PG轉寫ASP.NET反而比較快熟悉!

以版主的經驗而言,這問題會出在那呢??


PS:老實說ASP.NET 多層式架構的實作部份本人未接觸,有機會會去閱讀版主的書藉~~^^

康廷數位 提到...

哦哦,我也沒有什麼意思,可能是因為自己同時稍微碰過Java與.net,年紀也有了,對於這種技術的東西有點麻木了,感覺上,支持特定技術就像支持政治人物一樣,實在是很瞎的事。

怎麼說呢,學技術不過就是為了用來解決一些問題,甚至講白一點,就是混口飯吃,今天,一門技術可以讓我活得好,要我玩VB6玩到老也是OK呀。

聽到太多為了擁護自已喜歡的技術,拼到面紅耳赤的網友,說真的,發明技術的廠商都沒有這些擁護者來得有理想,一切不過就是商業行為,沒有能力龔斷市場的,才會反龔斷,偉大的是開放源碼本身,而非那些靠它來賺錢卻一天到晚嚷嚷別人龔斷的廠商。

有些偏了,總之,我想說的是,技術沒有好壞,只有合不合用的問題,能解決你手上問題的技術就是好技術,今天老闆要求你用Java,Java就是王道,客戶要求案子用.NET寫,.NET就是神,如此而已。

回到正題,其實PG在轉換Java與.net的過程中會有這樣的現象,與MS的技術屬性有關,她總是將東西包裝得很好入門,因此.NET的PG均非從核心基礎開始碰.NET,導致對.NET的認知有不少的偏差,Java的PG就不同,你應該可以發現,Java的PG在學完OOP觀念之前,都不碰視窗的,而是從純文字模式下去學整個Java類別庫,.NET的PG則剛好相反,大部份在還不認識Class這個單字的時候,就開始寫視窗系統了,甚至沒有任何OO概念,就是按兩下,產生事件處理程序,然後將程式碼填一填,系統就寫完了。這種程序的.NET開發人員,在轉向Java時一定是完全沒有頭緒。

反觀Java的PG,它們的物件觀念建立的徹底,因此,轉向.NET時,反正也是物件,寫WIN FORM用類別庫,寫ASP.NET還是在用類別庫,當然順理成章,轉換幾乎也就在無痛的情形下完成了。

至於多層式架構,其實也不是什麼MS推的架構,當程式言語朝向OO發展,這種分層設計模式就自然出現了,Java這麼作,.NET當然也是這麼作,而我的書只是將這種開發方式作比較有系統的說明而已。

匿名 提到...

我進業界剛滿一年。這種架構我是學自高雄的某個老師,這種架構是真的很棒,Debug超方便,結構分明,加上重構的技巧,程式變得更乾淨簡潔,寫程式變得很輕鬆就像老闆花錢請我去公司玩"思考遊戲"一樣。

康廷數位 提到...

其實稍微複雜一點的網站
差不多就會開始切割架構了
這樣網站的開發才能長長久久
否則網站一直擴充下去,真的會愈設計愈糟糕

這本書寫的都只是基礎而已,它的空間還很大
ASP.NET開發人員基本功瞭解之後
就應該朝向這個架構下去作發展

如果你有興趣,後面還有更強悍的LINQ可以進一步溶入你的專案中

我進業界剛滿一年 <= 年輕真好 ^^

Good Luck

匿名 提到...

非常喜歡高旭兄撰寫LINQ系列的技術書籍,把複雜抽象的技術寫得淺顯易懂,是目前業界寫得最好的作者之一,不輸給老外寫的技術書籍,我都有買,非常期待您出版Silverlight技術書籍,已經等很久了

康廷數位文教網 提到...

謝謝匿名兄:

雖然信誓旦旦不會放棄 Silverlight ,但是我一直覺得 MS 對 Silverlight 的態度相當的混沌不明,哎~~

而 Silverlight5 要到年底才釋出,我目前機器用 Silverlight4 在作專案又不敢亂裝,最快等專案有個段落也要到明年開春了,所以 Silverlight 的心得只能暫時透過 blog 發表,只是速度很摱,真的請多多包涵了 ~~

匿名 提到...

高旭兄提到"MS對Silverlight 的態度相當的混沌不明",意思是微軟會放棄它嗎? 但HTML5並沒有要涉足瀏覽器前端資料繫結,用javaScript則很難寫難除錯,速度又慢,程式設計師又不太喜歡不夠強悍的Adobe開發環境,目前要找最適合撰寫MVC架構的View,同時又容易實作瀏覽器前端資料繫結,又可以偵錯,也只有Silverlight! 何以"混沌不明"? 高旭兄可否稍微再透露一下...謝謝您

康廷數位文教網 提到...

這要說的話,需要相當長的文章,沒辦法在這以簡單回應的方式闡述我的想法,不然很容易被扭曲攻擊XD

接下來大約一兩個月後,這一部份的議題,我會有大量的文章出來,那個時候會有比較完整的論述,目前還無法貼出,請海涵

現在我只能說,Silverlight 是我目前每天用在實際開發的工具,它真的很強,很好用,至少未來兩三年找不到能取代他的開發環境了,但是先天的缺陷(這不能怪 MS ,大環境使然)讓這個技術的未來有很大陰影在

另外關於 MVC ,我完全沒在碰,這一部份就無法評論了 :)