Tungsten Fabric SDN — SmartNIC vRouter
1009
2022-05-30
視頻課堂https://edu.csdn.net/course/play/7621
C#程序設計及宿舍管理系統實戰
https://edu.csdn.net/course/detail/27107
1.1??????????三層架構簡介
假如你在經營一個大飯店,大體上你會請三方面的人,一方面是負責飯店服務的服務員,一方面是負責烹飪、做飯的廚師,一方面是負責飯店蔬菜、肉類、調料等的采購員。
如果你這樣做了,那么飯店管理起來,就好比較好管理(簡單來說)。比如任何一方面的員工出現請假或離職的情況,可以找其他的服務員、廚師或采購員代替。
在企業中這種職責分離、業務獨立的部門劃分方法對于管理企業有很大的好處,同樣在程序中也需采用“職責分離、業務獨立的”的原則劃分模塊,更好的實現“高內聚、低耦合”的軟件設計思想。
1.2為什么要使用三層架構
那么我們為什么要使用分層開發呢,它有什么獨特的優勢呢?
.NET開發平臺為我們做開發提供了強大的技術支持,使我們的開發變得非常便捷,高效。通過code behind的強大支持,我們可以將頁面設計和代碼設計有效的分離,代碼編寫,頁面設計同時進行。
的確,僅從功能實現的基礎來說我們已經做得很好了,尤其對于一個簡單的應用來說,代碼量不是很多的情況下,這種一層結構開發完全夠用了,沒有必要搞得那么復雜。但是對一個復雜的大型系統來說這樣的設計的缺陷就很嚴重了。
在開發過程中我們會不停把代碼到處復制,以實現一些相似的功能。同樣的代碼為什么要寫那么多次?不但使程序變得冗長,更不利于維護,一個小小的修改或許會波及很多頁面。稍微不留神就會導致異常的產生,使程序不能正常運行。最主要的面向對象的思想沒有得到絲毫的體現,打著面向對象的幌子卻依然走著面向過程的老路。
意識到這樣的問題,我開始將程序中一些公用的處理程序寫成公共方法封裝在類中,供其它程序調用。象一些功能型的代碼集合,數據庫操作,如同SqlHelper那樣對數據操作進行合理封裝,把sql語句,參數列表作為參數,在數據庫操作過程中,只要傳入相應的參數就可以完成特定的數據操作,這就是我一開始的數據訪問層,再不用每次操作數據庫時都寫那些重復性的數據庫操作代碼。在新的應用開發中,數據訪問層可以直接拿來用。
面向對象的三大特性之一的封裝性在這里得到了很好的體現。似乎找到了面向對象的感覺,代碼量較以前有了很大的減少,而且修改的時候也比較方便。這下應該可以了吧?
試問一下,如果有一天數據庫供應商發生了變化,因為數據量的增加,數據庫有access變成了sql server?這下麻煩大了,原來的數據訪問層失效了,數據操作對象發生了變化,且頁面中涉及數據對象的地方也要進行修改,因為原來可能會使用OleDbDataReader對象將數據傳遞給顯示頁面,現在都得換成SqlDataReader對象,sql和access支持的數據類型也不一致,在顯示數據時進行的數據轉換可能也要進行修改。由sql向access的轉換所做的修改會更多。
還有一種情況,因為某種需要,我們要把Web形式的項目改造成windows應用,這時牽涉的修改有多大呢?如果在你的aspx.cs中放了很多處理代碼,或者還有一部分代碼存在于aspx中呢windows應用中可沒有aspx阿,是不是整個系統需要重新來做了?這都是設計不合理惹的禍。
1.3??????????三層架構的構成
我們通常說的三層架構包含表示層、業務層和數據層三層,對于應用系統來說,表示層和用戶交互并顯示數據,業務層負責訪問數據層并向表示層提交數據,數據層負責數據的存儲。下面來詳細闡述三層架構的含義及其組成:
n???????表示層
它主要是指與用戶交互的界面,它接收用戶的輸入,但并不包括任何實際的業務處理,它只是簡單地講數據轉交給業務層,同時負責展現業務層傳遞過來的數據,當后臺業務邏輯更新時,表示層就會顯示這些更新。表示層提供應用程序的用戶界面(UI),通常包括Windows窗體、Asp.NetWeb窗體。
n???????業務層
它代表了應用程序的核心功能,負責處理數據層的數據,實現業務邏輯,用于實現某種規則的業務處理以匹配特定公司的需要。例如,確定某個指定客戶是否被批準進行某項借貸活動的業務規則可以封裝在小型解決方案的客戶業務組件中。對于大型解決方案,所有與借貸有關的業務邏輯可能都封裝在單獨的一個借貸組件中。
n???????數據層
數據訪問層:有時候也稱為是持久層,其功能主要是負責數據庫的訪問,可以訪問數據庫系統、二進制文件、文本文檔或是XML文檔。簡單的說法就是實現對數據表的Select,Insert,Update,Delete的操作。如果要加入ORM的元素,那么就會包括對象和數據表之間的mapping,以及對象實體的持久化。
將三層架構與飯店的各個人員層相比較的圖如下:
三層結構的優點
1)從開發角度和應用角度來看,三層架構比雙層或單層結構都有更大的優勢。三層結構適合群體開發,每人可以有不同的分工,協同工作使效率倍增。開發雙層或單層應用時,每個開發人員都應對系統有較深的理解,能力要求很高,開發三層應用時,則可以結合多方面的人才,只需少數人對系統全面了解,從一定程度工降低了開發的難度
2)三層架構可以更好的支持分布式計算環境。邏輯層的應用程序可以有多個機器上運行,充分利用網絡的計算功能。分布式計算的潛力巨大,遠比升級CPU有效。美國人曾利用分式計算解密,幾個月就破解了據稱永遠都破不了的密碼
3)也是三層架構的最大優點是它的安全性。用戶端只能通過邏輯層來訪問數據層,減少了入口點,把很多危險的系統功能都屏蔽了
三層結構的缺點
“金無足赤,人無完人”,分層式結構也不可避免具有一些缺陷:
1、降低了系統的性能。這是不言而喻的。如果不采用分層式結構,很多業務可以直接造訪數據庫,以此獲取相應的數據,如今卻必須通過中間層來完成。
2、有時會導致級聯的修改。這種修改尤其體現在自上而下的方向。如果在表示層中需要增加一個功能,為保證其設計符合分層式結構,可能需要在相應的業務邏輯層和數據訪問層中都增加相應的代碼。
三層架構的搭建
2.2點擊新建項—》,選擇,應用程序配置文件
2.3打開app.config文件后,寫如下代碼:
/*在此先弱化了,業務邏輯層*/
第6步:表示層
這樣,整個完整、簡單的三層框架登錄已經基本完成。
請沒有完成的同學按照此步驟,務必做完。體驗三層框架之間類的調用與關系。
/*針對三層之中的各個“相關責任類”,添加斷點,進行測試,看看參數傳遞效果。*/
下面同學們,連接項目組長的數據庫服務器。
打開TCP/IP和其他服務
小結:
n???????三層結構與兩層結構的區別是什么?
n???????為什么要實現分層?各層的作用是什么?
n???????三層結構中各層之間相互依賴是如何實現的?
作業:
自己根據以前坐的賓館管理系統、汽車銷售系統等C/S系統,依據三層架構的思想,重新搭建新的框架。
C# 數據庫
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。