摘 要:C#.NET三層架構體系是一種高效靈活的系統(tǒng)設計機制。本文首先介紹了使用三層架構所建立的數(shù)據(jù)庫系統(tǒng)所具有的應用優(yōu)勢,然后分別就表現(xiàn)層、業(yè)務邏輯層、數(shù)據(jù)層等三部分的邏輯功能及建立進行了研究與討論。
關鍵詞:C#;.NET;三層架構;數(shù)據(jù)庫
中圖分類號:TP311.52
隨著計算機及其相關軟件的應用領域和應用需求不斷拓展,數(shù)據(jù)庫管理系統(tǒng)及分層設計方式得到了重點關注。數(shù)據(jù)庫可以按照相應的用戶策略來對海量的數(shù)據(jù)信息進行管理與維護,數(shù)據(jù)庫的應用極大的提升了數(shù)據(jù)管理的自動化和智能化程度,可以在更短時間內(nèi)實現(xiàn)更高效的信息處理。模塊化分層設計則是現(xiàn)代系統(tǒng)設計與實現(xiàn)的最主要原則之一,其可以簡化實現(xiàn)復雜度,增強系統(tǒng)各功能的結(jié)構性、可用性以及可維護性,同時,系統(tǒng)分層設計條理更加清晰,擴展性和替換性更好,因此分層設計是系統(tǒng)設計的主流趨勢。
1 三層架構體系及其優(yōu)勢分析
傳統(tǒng)的系統(tǒng)結(jié)構是一種客戶/服務類型的二層結(jié)構,這種結(jié)構下的用戶端直接與數(shù)據(jù)庫服務器端進行數(shù)據(jù)通信,整個通信過程中缺乏一個統(tǒng)一的業(yè)務和數(shù)據(jù)訪問規(guī)則對用戶行為進行限制或管理,因而這種結(jié)構下的系統(tǒng)結(jié)構復雜,管理難度大,還容易因用戶的不當操作影響到數(shù)據(jù)庫功能及其相關內(nèi)容。
為進一步提升系統(tǒng)的安全性、可管理性,組件層作為中間層被引入到用戶層和數(shù)據(jù)庫層之間共同構成三層架構體系。該體系結(jié)構下,用戶層的應用程序和數(shù)據(jù)訪問請求等都需要經(jīng)由中間層按照預設的規(guī)則和策略審核和處理后才能夠被轉(zhuǎn)發(fā)到數(shù)據(jù)庫中執(zhí)行。這樣就避免了用戶與數(shù)據(jù)庫服務器的直接通信,因而該結(jié)構下的數(shù)據(jù)庫安全性能得到了大幅度提升。此外,中間層負責業(yè)務規(guī)則過濾、數(shù)據(jù)訪問控制、操作校驗等內(nèi)容,其可擴展性和可移植性更強,便于用戶根據(jù)實際使用需求便捷高效的對數(shù)據(jù)庫應用系統(tǒng)進行調(diào)整。
三層系統(tǒng)結(jié)構中,用戶端通過COM/DCOM相關組件與中間層建立通信連接,中間層按照用戶請求與相關策略與數(shù)據(jù)庫進行交互。具體的,中間層包括表示層、邏輯層以及數(shù)據(jù)訪問層等,各層負責如下內(nèi)容:表示層的主要對象為用戶,其可以接收用戶對數(shù)據(jù)庫應用系統(tǒng)的相關操作請求或數(shù)據(jù)讀寫請求,并接收上一層的數(shù)據(jù)返回給用戶,整個過程主要負責相關信息的傳遞,并不涉及數(shù)據(jù)的處理;業(yè)務邏輯層是表示層與數(shù)據(jù)訪問層的承接層,其主要負責上下層之間的數(shù)據(jù)傳遞與邏輯處理,是具體的應用實現(xiàn)層;數(shù)據(jù)訪問層主要負責與數(shù)據(jù)庫進行交互,其一方面接收業(yè)務邏輯層傳輸過來的請求指令并將其轉(zhuǎn)化為數(shù)據(jù)庫系統(tǒng)可識別的指令傳遞給數(shù)據(jù)庫供其執(zhí)行相關操作,如數(shù)據(jù)訪問、修改、存儲等,另一方面可以將數(shù)據(jù)庫的返回信息傳遞給業(yè)務邏輯層供其轉(zhuǎn)化為客戶端可識別的信息傳遞給用戶。
2 三層架構的.NET數(shù)據(jù)庫應用系統(tǒng)數(shù)據(jù)邏輯訪問與表示
在.NET環(huán)境下的數(shù)據(jù)庫應用系統(tǒng)可以分為表示層、業(yè)務邏輯層以及數(shù)據(jù)層三層。其中在數(shù)據(jù)層中又存在邏輯與數(shù)據(jù)兩種屬性,為提升系統(tǒng)的區(qū)分度可以將數(shù)據(jù)層中的數(shù)據(jù)分為數(shù)據(jù)訪問邏輯組件和業(yè)務實體組件兩類。前者是指針對數(shù)據(jù)庫的,可執(zhí)行檢索與保存等操作的業(yè)務邏輯;后者是指具體的可實現(xiàn)具體應用效果的實體數(shù)據(jù)。
2.1 數(shù)據(jù)訪問邏輯組件
該組件是調(diào)用程序?qū)?shù)據(jù)庫具體操作的具體方法描述,包括數(shù)據(jù)記錄創(chuàng)建、數(shù)據(jù)記錄讀取和調(diào)用、數(shù)據(jù)記錄更改與修訂、實體業(yè)務數(shù)據(jù)的錄入與更新、數(shù)據(jù)記錄的刪除等。此外,該組件還應該提供業(yè)務實體數(shù)據(jù)庫的篩選與查找邏輯方法等功能。
實際應用本邏輯組件對某一數(shù)據(jù)庫數(shù)據(jù)進行訪問時需要標明訪問的對象、訪問對象中的具體目標以及需要執(zhí)行的具體操作。為便捷高效的完成數(shù)據(jù)庫組表數(shù)據(jù)操作可以在本組件的基礎上結(jié)合業(yè)務實體組件共同完成。
2.2 業(yè)務實體組件
該組件使用多個相互獨立的數(shù)據(jù)表來存放某些具體業(yè)務的相關數(shù)據(jù),同時為這些數(shù)據(jù)表之間建立關聯(lián),使用主鍵和外鍵來進行相互間的調(diào)用。在.NET應用程序中,該組件屬于自定義類,需要用戶根據(jù)使用需求將所建立的數(shù)據(jù)表與實體功能和業(yè)務建立關聯(lián)。其中,自定義參數(shù)中需要包含數(shù)據(jù)存儲字段、屬性、業(yè)務邏輯特性等內(nèi)容,以便于根據(jù)上述參數(shù)確定應用程序與數(shù)據(jù)之間的調(diào)用關系。
實際應用中,本組件包含以下幾部分操作:用戶信息的更新與錄入;用戶訂單列表;訂單創(chuàng)建、變更以及刪除;新的產(chǎn)品或功能信息等。
3 C#語言的三層數(shù)據(jù)庫應用系統(tǒng)建立
以ADO.NET為例,其提供了兩種基于數(shù)據(jù)庫的應用系統(tǒng)建立方法,一種方法只提供數(shù)據(jù)讀取操作,另一種方法除了數(shù)據(jù)讀取操作外還允許用戶對數(shù)據(jù)庫相關內(nèi)容執(zhí)行修改、刪除等操作。顯然,第二種方法靈活性更高,應用更為廣泛。三層數(shù)據(jù)庫應用系統(tǒng)分為數(shù)據(jù)訪問層、業(yè)務邏輯層以及表現(xiàn)層三部分,每部分的具體建立方式如下所述。
3.1 數(shù)據(jù)訪問層的建立與參數(shù)設置。
該層建立時首先需要根據(jù)系統(tǒng)要求添加新的項目,同時對所涉及的數(shù)據(jù)集進行篩選;篩選完畢后可以將所選擇的數(shù)據(jù)集與數(shù)據(jù)庫系統(tǒng)建立連接;之后可以將數(shù)據(jù)集中拖入數(shù)據(jù)表,對該步驟操作過程中生成的信息指令等內(nèi)容執(zhí)行復制操作,以便于后續(xù)的數(shù)據(jù)庫代碼修改;最后對代碼中的GetData()函數(shù)配置進行修改,以便于允許用戶通過數(shù)據(jù)鏈表查找與對比外鍵關鍵字段,這樣可以提高系統(tǒng)的易用性。
具體來說,針對select * from bisdevice語句可以執(zhí)行如下修改:SELECT a.用戶ID,a.用戶名,b.所在部門,c.職位屬性 FROM bisxingming a left join bisgongzuobumen b on b.用戶ID=a.所在部門 ID left join biszhiyeshuxing c on c.職位屬性ID=a.職位屬性ID。
3.2 業(yè)務邏輯層的建立與參數(shù)設置
該層是整個中間層的承接層,根據(jù)實際的系統(tǒng)應用需求不同可以進行靈活設定。該層的引入大大提升了整個數(shù)據(jù)庫應用系統(tǒng)的靈活性。
以添加新項并向該項目中添加新的類別的實現(xiàn)為例,可以編寫如下代碼來實現(xiàn)。
Public dsyonghu.yonghuDataTable
GetxingmingBybumenIDshenfenID(int 用戶部門標識, int 用戶身份標識)
{if (用戶部門標識<0用戶身份標識<0) return Adapter.Getxingming();
else if (用戶部門標識>0用戶身份標識<0) return Adapter.GetxingmingBybumenID(用戶部門標識);
else if (用戶部門標識<0用戶身份標識>0) return Adapter.GetxingmingByshenfenD(用戶部門標識);}
通過上述內(nèi)容即可完成新項目、新數(shù)據(jù)表的添加與分配操作,對用戶身份完成讀取相關操作。
3.3 表現(xiàn)層的建立與參數(shù)設置
該層中不同的參數(shù)與相應的數(shù)據(jù)表可以建立對應的映射,通過調(diào)用參數(shù)來查看數(shù)據(jù)庫中相關內(nèi)容。實際設計中可以在編程軟件中對相關字段進行修改實現(xiàn)關聯(lián)的建立。
3.4 數(shù)據(jù)的操作與執(zhí)行
上述步驟基本實現(xiàn)了數(shù)據(jù)庫相關內(nèi)容的查詢操作,但是實際應用中還需要對某些特定的參數(shù)或表格信息進行添加、修改或刪除等,此時需要執(zhí)行的操作為:通過DetailView空間對需要修改的字段進行編輯,將其屬性變?yōu)槟0?,然后對該模板信息進行設置與修改即可完成相應的操作添加。
但是需要說明的是,對于某些需要選取的項目,其建立過程中需要將文本輸入控件TextBox刪除,替換為可選取的列表控件ListBox,為列表添加相關信息后將每一選項與具體的數(shù)據(jù)庫表建立連接。
4 總結(jié)
三層系統(tǒng)架構體系安全性更高,系統(tǒng)設計實現(xiàn)更為靈活,可擴展性更強,是一種主流的系統(tǒng)設計方式。在.NET平臺中應用C#設計開發(fā)數(shù)據(jù)庫應用系統(tǒng)可以根據(jù)實際使用需求將相關功能劃分到表示層、業(yè)務邏輯層以及數(shù)據(jù)層中。這種方式下的數(shù)據(jù)庫應用系統(tǒng)具有良好的可用性和可維護性。
參考文獻:
[1]王海燕.C#.NET下三層架構數(shù)據(jù)庫應用系統(tǒng)開發(fā)[J].計算機技術與發(fā)展,2012(6).
[2]李紅芹.基于三層架構的.NET數(shù)據(jù)庫業(yè)務系統(tǒng)開發(fā)[J].計算機與現(xiàn)代化,2009(10).
[3]韓美芳.淺談.NET三層架構的構建方法[J].科技創(chuàng)新導報,2009(25).