一、三層框架
表現層:也叫檢視層,用html、css、js、jquery
業務邏輯層:也叫控制層,包含業務邏輯的實現部分
資料管理層:與資料庫直接互動的部分
二、組建三層框架(現有例項)
1、資料管理層
a、引入model類
建立專案之後在專案的同級目錄上建立model的目錄,相應的在儲存專案的硬碟上也建立model的目錄。然後把model.base複製到硬碟上也建立的model目錄下,並在專案的model下引入硬碟model.base線面現有的model.base.csproj模組。
b、在專案的model下面新建c#類庫模組,專案名稱為model.testdb,專案儲存位置為硬碟的model下面。此時硬碟和專案中都會產生model.testdb的目錄。
** model.testdb中的每個類與資料庫裡面的表一一對應的,類裡面的每個屬性對應表裡面的每個字段。
2、業務邏輯層
a、引入dal類
在專案和硬碟上建立dal目錄,把dal.base和utility複製到硬碟的dal目錄下。並在專案的dal下面引入這兩個目錄中的dal.base.csproj和utility.csproj模組。
b、在專案的dal下面新建c#類庫模組,專案名稱為dal.test,專案儲存位置為硬碟的dal下面。此時硬碟和專案中都會產生dal.test的目錄。
3、表現層(web層)
一開始建立**專案時產生的專案就是實現表現成邏輯的模組,無需特別建立。
四、編譯及引用
編譯之前為了便於管理把所有的編譯檔案統一存放到與專案同級的硬碟目錄reference之中。
1、編譯model.base
a、先開啟model.base專案的屬性頁面,指定程式集和命名空間的名稱,然後再指定生成-->輸出路徑為與專案同級的reference目錄。
b、在model.base上面點選右鍵選擇[生成]來編譯,編譯結束後確認reference目錄是否已有編譯檔案。
2、model.testdb是需要需要引用model.base的,開啟model.testdb專案-->引用上點選右鍵-->新增引用-->瀏覽查詢硬碟中存放編譯檔案的reference目錄-->選定要引入的編譯檔案-->確定。此時應該在model.testdb專案的引用中看到model.base的程式集com.model.base。
3、編譯model.testdb,參考【編譯model.base】。
4、編譯utility,參考【編譯model.base】。utility是包含.net預設功能外拓展的功能,屬於基類不需要引用其他模組。
5、dal.base是需要引用多個模組。
a、microsfot開頭的5個模組直接複製到儲存編譯檔案的reference目錄中。
b、引入包括5個microsfot開頭的模組外com.model.base和com.utility模組一起引用到dal.base模組中。
c、編譯dal.base,參考【編譯model.base】。
6、dal.test也是需要引用多個模組的。
a、引入com.model.base、com.dal.base、modeltserdb等三個模組一起引用到dal.base模組中。
b、編譯dal.test,參考【編譯model.base】。
7、在開始建立的web專案中需要引入上面說有模組
a、引入com.dal.base、dal.test、com.model.base、model.tserdb、com.utility等5個模組。
b、編譯web專案,參考【編譯model.base】。
--- 到此三層架構基礎組建完畢---
五、使用三層架構例項
1、在web.config裡面追加資料庫連線字串:con是預設連線串名稱,追加新的連線字串名稱時要在model.base下面的enums.cs中追加對應的列舉類資料就可以。
如:con = 1, //預設
sq_ruanmou= 2 //新追加的連線
2、對資料庫中的表結構全部轉化為model.testdb中對應的類。
a、設定建構函式和字段對應的屬性
本框架只支援乙個欄位的單一關鍵字段。多個字段組成的聯合關鍵字段無法處理。
public class rnews : basemodel //資料處理層中與資料表對應的類
public int newsid //設定表中每個字段對應的屬性
public string title
public string text
public datetime createdtime
public string newsclass
public int viewcount
}3、利用model.testdb中與表對應的類,在dal.test類中建立具有curd功能的泛型結構的對應類。
public class rnewsdal //業務邏輯層中與資料表對應的類
** m_rnewsdal就是在表現層(顯示層)用於curd的物件。
4、curd例項的應用
a、getmodel 獲取普通查詢的方法
1)可以傳primarykey對應的值
2)可以傳where後面的條件表示式部分
userinfor user = userinfordal.m_userinfordal.getmodel(string.format("username='' and pwd=''", username, pwd));
if (user == null) //getmodel返回的例項user為null時表示查詢沒有返回結果。
else
response.cookies["username"].value = username; //儲存cookie
response.redirect("rnewsm.aspx"); //轉移到新的制定頁面
}3)sql注入處理
a、通常使用傳遞引數的方式防止sql注入。
userinfor user = userinfordal.m_userinfordal.getmodel("username=@username and pwd=@pwd",listpm);
b、可以事先檢查輸入的內容裡面是否有非法字元的方式防止sql注入。
public static bool sqlinsert(string strs) //檢查輸入的內容裡面是否有非法字元的方法
}return b;
}** string.indexof(string):指定unicode字元或字串在此例項中的第乙個匹配項的從零開始的索引。如果未在此例項中找到該字元或字串,則此方法返回 -1。
** 呼叫檢測的語句:
if (websafe.sqlinsert(username) == false || websafe.sqlinsert(pwd) == false){}
--- 檢測結果false就表明有非法字串。
c mysql三層架構例項 三層架構例項
一 概要 這篇部落格,準備用乙個小demo來介紹應該實現三層架構。三層架構只是分層的一種經典形式,到底分幾層,要依具體情況而定,考慮到系統的複雜程度,和後期的可維護性,完全可以分四層,五層,甚至六層,七層。二 demo 1 實現語言 vb.net 2 需求 學校機房收費系統 中的乙個功能 操作員為學...
軟體架構 三層架構
三層系統的分層式結構 三層架構 3 tier architecture 通常意義上的三層架構就是將整個業務應用劃分為 區分層次的目的即為了 高內聚,低耦合 的思想。表現層 ui 通俗講就是展現給使用者的介面,即使用者在使用乙個系統的時候他的所見所得。業務邏輯層 bll 針對具體問題的操作,也可以說是...
三層架構 UI BLL DAL
通常意義上的三層架構就是將整個業務應用劃分為 表現層 ui 業務邏輯層 bll 資料訪問層 dal 區分層次的目的即為了 高內聚,低耦合 的思想。表現層 ui 通俗講就是展現給使用者的介面,即使用者在使用乙個系統的時候他的所見所得。業務邏輯層 bll 針對具體問題的操作,也可以說是對資料層的操作,對...