論基于ASP.NET的企業(yè)進銷存儲管理信息系統(tǒng)的設計與實現(xiàn)
論基于ASP.NET的企業(yè)進銷存儲管理信息系統(tǒng)的設計與實現(xiàn)
1 背景
在應用系統(tǒng)開發(fā)過程中,C/S兩層體系結構的開發(fā)模式得到了廣泛的應用。其應用程序邏輯通常只分布在客戶和服務器兩端,它采用由客戶端發(fā)出數(shù)據(jù)資源訪問請求,然后服務器端將結果返回到客戶端的信息傳遞機制,對系統(tǒng)的性能、升級與維護等有很大制約。隨著面向對象技術、分層建模技術和網(wǎng)絡瀏覽器導航技術的逐步成熟,B/S模式的多層應用體系結構得到了越來越多的應用。應用系統(tǒng)開發(fā)模式從原來的兩層結構向三層甚至N層結構的轉變,主要是在客戶端和服務器之間加入了一個被稱為“應用服務器”的一層或多層應用服務程序,使原來集成表示層處理和業(yè)務邏輯處理的臃腫胖客戶端得以釋放,演變?yōu)楸硎緦雍蜆I(yè)務邏輯層分開實現(xiàn)的模式,使開發(fā)人員在保證為用戶提供必要功能操作的簡潔界面前提下,將主要精力集中在系統(tǒng)核心業(yè)務邏輯的分析、設計和開發(fā)上;從C/S模式到B/S模式的轉變,使得原客戶端維護工作發(fā)生了翻天覆地的變化。C/S模式應用程序的客戶端要求管理人員在每個客戶端計算機系統(tǒng)上安裝客戶端程序,當需要維護系統(tǒng)時,管理人員需要到客戶端的用戶那里一個一個地解決問題;而B/S模式只需用戶在自己的電腦系統(tǒng)中安裝瀏覽器軟件(該軟件通常在操作系統(tǒng)中可附帶自動安裝),應用系統(tǒng)的全部程序可以集中放在服務器中由管理人員統(tǒng)一管理維護,這可以大大節(jié)省系統(tǒng)維護的開銷。在多層結構模式的B/S系統(tǒng)架構中,B/S的三層結構是目前流行的架構設計模式,它由表示層、業(yè)務邏輯層和數(shù)據(jù)訪問層3個層次結構組成。微軟公司的ASP.NET充分地發(fā)揮了面向對象的技術特點,能輕松實現(xiàn)三層結構的B/S系統(tǒng)架構,并在很大程度上提高開發(fā)效率,增強系統(tǒng)的可維護性和擴展性。本文研究如何基于ASP.NET(C#)技術實現(xiàn)三層結構應用系統(tǒng)的設計。
2 三層結構系統(tǒng)模型
選擇合適的系統(tǒng)體系架構是一項影響整個應用系統(tǒng)設計的關鍵工作。架構設計主要完成定義和說明包(子系統(tǒng)),以及包與包之間的依賴關系與通信機制。B/S模式的三層結構是一種簡單、成熟,并得到普遍應用的應用程序架構,它將應用程序結構劃為分3個相對獨立層,包括用戶表示層、業(yè)務邏輯層和數(shù)據(jù)訪問層。每一層只實現(xiàn)該層內相對獨立的功能,而當任何一層發(fā)生變化時,只要保持層間接口關系不變,則其他各層都不會受到影響。三層結構是一種嚴格的分層協(xié)作, 即數(shù)據(jù)訪問層只能被業(yè)務邏輯層訪問, 業(yè)務邏輯層只能被表示層訪問。用戶通過表示層將請求傳送給業(yè)務邏輯層, 業(yè)務邏輯層完成相關業(yè)務規(guī)則和邏輯, 并通過數(shù)據(jù)訪問層訪問數(shù)據(jù)庫獲得數(shù)據(jù), 然后按照相反的順序依次返回, 將數(shù)據(jù)顯示在用戶界面層。
2.1 用戶表示層(USL)
用戶表示層也叫用戶界面層,封裝人機界面的所有表單和組件,是應用系統(tǒng)與系統(tǒng)用戶之間的直接接口。主要用于顯示由業(yè)務邏輯層動態(tài)傳送過來的數(shù)據(jù)信息,結合使用相應的HTML標記和樣式表定義來實現(xiàn);用戶錄入數(shù)據(jù)信息并通過簡單的校驗后,經由數(shù)據(jù)接口傳送給業(yè)務邏輯層下載論文。
2.2 業(yè)務邏輯層(BLL)
業(yè)務邏輯層主要完成對應用系統(tǒng)相關業(yè)務規(guī)則和邏輯的封裝,在為用戶表示層訪問提供功能調用的同時,它又通過調用數(shù)據(jù)訪問層所提供的功能來訪問數(shù)據(jù)庫。業(yè)務邏輯層主要根據(jù)系統(tǒng)設計的需要,通過構建系統(tǒng)的關鍵對象類,實現(xiàn)系統(tǒng)的大部分邏輯控制功能。
2.3 數(shù)據(jù)訪問層(DAL)
數(shù)據(jù)訪問層只能被業(yè)務邏輯層訪問,并且系統(tǒng)只通過它訪問數(shù)據(jù)庫來獲取數(shù)據(jù)。當數(shù)據(jù)訪問層根據(jù)業(yè)務邏輯層的要求與數(shù)據(jù)庫進行交互時,主要完成從數(shù)據(jù)庫中提取數(shù)據(jù)庫記錄的查詢和插入、修改與刪除數(shù)據(jù)庫記錄的更新數(shù)據(jù)功能。眾所周知,數(shù)據(jù)庫訪問是動態(tài)信息管理應用系統(tǒng)中最頻繁、最消耗資源的操作,所以必須優(yōu)化對數(shù)據(jù)庫的訪問策略,以提高系統(tǒng)的性能和可靠性。B/S模式的三層結構是一種嚴格的分層定義,它首先將應用系統(tǒng)復雜的開發(fā)工作劃分為相對簡單的小分塊,然后在每一層中只實現(xiàn)系統(tǒng)相應層的功能設計,層間的交互由相鄰層對應的功能模塊進行調用,信息傳遞只由接口進行傳送。
數(shù)據(jù)訪問層一般由兩部分組成:業(yè)務實體和數(shù)據(jù)操作。Microsoft公司提供的標準術語稱為業(yè)務實體組件和數(shù)據(jù)訪問邏輯組件。在三層結構中,數(shù)據(jù)訪問層是唯一與數(shù)據(jù)庫打交道的層,所以該層的設計要盡量以提高速度和安全為目標。
業(yè)務實體組件體現(xiàn)的是現(xiàn)實生活中的業(yè)務數(shù)據(jù),而數(shù)據(jù)訪問邏輯組件則是在數(shù)據(jù)庫中檢索數(shù)據(jù)或把業(yè)務實體數(shù)據(jù)保存到數(shù)據(jù)庫。
2.3.1 數(shù)據(jù)訪問邏輯組件
數(shù)據(jù)訪問邏輯組件,簡單來講就是實現(xiàn)對數(shù)據(jù)庫中數(shù)據(jù)進行操作的組件,以及實現(xiàn)數(shù)據(jù)相關操作所需的業(yè)務邏輯。數(shù)據(jù)訪問邏輯組件的主要功能如下:
(1)在數(shù)據(jù)庫中添加記錄。
(2)讀取數(shù)據(jù)庫的記錄,并以業(yè)務實體數(shù)據(jù)的形式返回給調用者。
(3)將調用者修改的業(yè)務實體數(shù)據(jù)更新到數(shù)據(jù)庫。
(4)刪除數(shù)據(jù)庫中的記錄。
并不是所有的數(shù)據(jù)庫表都由一個數(shù)據(jù)訪問邏輯組件操作,其實,一個邏輯組件封裝的是對數(shù)據(jù)庫中的一個表或一組相關的表的操作。
2.3.2業(yè)務實體組件
業(yè)務實體是以數(shù)據(jù)的形式表示現(xiàn)實生活中的業(yè)務模型。業(yè)務實體的屬性與數(shù)據(jù)庫中的表有一一對應的關系,每個數(shù)據(jù)庫訪問組件都對應一個業(yè)務實體。
2.3.2.1業(yè)務實體的特點
(1)提供對業(yè)務數(shù)據(jù)及相關功能進行編程訪問。
(2)可以使用具有復雜架構的數(shù)據(jù)來創(chuàng)建,這些復雜的數(shù)據(jù)一般表現(xiàn)為數(shù)據(jù)庫中可以作為業(yè)務流程中的輸入輸出的相關聯(lián)的多個表。
(3)可以作為業(yè)務流程中的輸入輸出參數(shù)來傳遞整體數(shù)據(jù)。
(4)業(yè)務實體不參與事務處理,只是事務處理過程中的一部分數(shù)據(jù),事務處理由數(shù)據(jù)訪問層完成。
2.3.2.2業(yè)務實體的表現(xiàn)形式
在應用程序中,業(yè)務實體有很多種表現(xiàn)方式。有以數(shù)據(jù)為中心的表示方式,也有面向對象的表示方式。具體包括以下幾種方式。
(1)XML:使用XML字符串或XML文檔對象模型來表示。
(2)DataSet:DataSet是緩存在內存中一個或多個表的集合,一般來源于數(shù)據(jù)庫或XML文檔。
(3)自定義業(yè)務實體組件:一種自定義的類庫,用于保存業(yè)務流程中的數(shù)據(jù)。包含一些數(shù)據(jù)表中的字段和其他公共屬性。
本文采用第三種方法:自定義業(yè)務實體組件。業(yè)務實體可以被數(shù)據(jù)訪問組件調用,也可以被業(yè)務邏輯層調用,通常的三層結構將業(yè)務實體包括在數(shù)據(jù)訪問層中,如圖1所示。
有的系統(tǒng)把業(yè)務實體單獨放在一層中,如圖2所示,這兩種方式都正確,關鍵要看設計者的意圖以及實際的開發(fā)項目,本文采用第二種形式。
3 三層結構優(yōu)缺點
3.1 三層結構的優(yōu)點
(1)提高程序的可維護性:三層架構層次分明,一旦運行出現(xiàn)問題,可以快速判斷是哪一層的問題,利于維護。
(2)可以合理開發(fā):因為三層之間除了調用沒有其他關聯(lián),只需要先把三層之間的接口定義好,程序員可以并行開發(fā),提高了開發(fā)的速度。
(3)提高系統(tǒng)的安全性:每層都有安全設置,即使表示層被攻破,下一層的安全還有保障。
(4)提高系統(tǒng)的擴展性:三層結構最大的好處是在擴展應用系統(tǒng)時,改動的部分不會影響到大局,比如要給這個系統(tǒng)增加Oracle數(shù)據(jù)庫的功能,只需要改動數(shù)據(jù)層就可以了,其他層保持不變。
3.2 三層結構的缺點
三層結構開發(fā)模式的一個非常明顯的缺點就是其執(zhí)行速度不夠快。當然這個“執(zhí)行速度”是相對于非分層的應用程序來說的。 “三層結構”開發(fā)模式,不適用于對執(zhí)行速度要求過于苛刻的系統(tǒng),如在線訂票、在線炒股等。它比較適用于商業(yè)規(guī)則容易變化的系統(tǒng)。
4 ASP.NET的三層設計和實現(xiàn)
基于以上對B/S三層結構的介紹,下面引用一個基于ASP.NET技術的B/S三層結構模式的進銷存管理系統(tǒng)的開發(fā)設計方法,介紹ASP.NET應用系統(tǒng)三層結構的具體實現(xiàn)。ASP.NET的三層結構應用程序目錄結構如圖3所示,目錄BLL業(yè)務邏輯層,DAL為數(shù)據(jù)訪問層,DBUtility存儲的是一些常用的類和方法,Model為業(yè)務實體層,JXC為用戶表示層。
(1)Model(業(yè)務實體層):都是一些屬性,業(yè)務實體的屬性與數(shù)據(jù)庫中的表為一一對應的關系,每個數(shù)據(jù)庫訪問邏輯組件對應一個業(yè)務實體。
(2)DBUtility公共類:數(shù)據(jù)庫操作的一些類庫,其中包括pubconstant.cs類(實現(xiàn)從web.config獲取數(shù)據(jù)庫連接字符串)、DbHelperSQL.cs 數(shù)據(jù)庫助手類、對數(shù)據(jù)訪問的類。
(3)DAL(數(shù)據(jù)訪問層)的實現(xiàn):對應著數(shù)據(jù)庫中的表,實現(xiàn)對表常用的操作,如增刪改等常用操作。
(4)BLL(業(yè)務邏輯層)的實現(xiàn):創(chuàng)建每個類,每個類對應著數(shù)據(jù)庫的每張表,完成數(shù)據(jù)表的一些業(yè)務邏輯,完成對數(shù)據(jù)層的調用過程。
(5)JXC(用戶表示層):界面的編寫。
5 總結
以上介紹了應用基于ASP.NET技術的三層結構模式來設計和實現(xiàn)B/S結構應用系統(tǒng)的總體方法。通過介紹示例的具體分層規(guī)劃,體現(xiàn)了利用ASP.NET技術編寫三層結構的清晰邏輯,并有效地實現(xiàn)了系統(tǒng)中各功能層的相對獨立,使系統(tǒng)具有更強大的靈活性、可擴展性和可維護性;而且系統(tǒng)分層管理使分級分布部署成為現(xiàn)實,可極大地提高系統(tǒng)的性能和安全性,滿足日益壯大的B/S模式應用系統(tǒng)的需求。借鑒此方法還可以開發(fā)企業(yè)其他各類應用系統(tǒng),提高企業(yè)的信息化水平。