三層架構
三層架構(3-tier application) 就是將整個業務應用劃分為:表現層(UI)、商務邏輯層(BLL)、資料訪問層(DAL),區分層次的目的即為了“高內聚,低耦合”的思想,方便程式的擴充和維護。
展示層(UI)
通俗講就是展現給使用者的介面,即使用者在使用一個系統的時候他的所見所得,主要對使用者的請求接受,以及資料的返回,為用戶端提供應用程式的訪問。
商務邏輯層(BLL)
針對具體問題的操作,也可以說是對資料商務邏輯處理。主要負責對資料層的操作。也就是說把一些資料層的操作進行組合。
資料訪問層(DAL)
該層所做事務直接操作資料庫,針對資料的增添、刪除、修改、更新、尋找等。主要看你的資料層裡面有沒有包含邏輯處理,實際上他的各個函數主要完成各個對資料檔案的操作。而不必管其他動作。
包圖
Entity為實體類,它的作用是與資料庫表中的欄位一一對應,並在三層中傳遞資料的作用。
代碼說明
UI層
以登入驗證是否存在此使用者為例,登入按鈕代碼:
'確認操作Private Sub cmdOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdOk.ClickDim bllUserinfo As New ChargeSystemBLL.bll_User_infoDim modelUserinfo As New DataModel.dm_User_info '擷取使用者名稱和密碼modelUserinfo.UserID = txtUID.TextmodelUserinfo.UserPWD = txtPWD.TextTry'檢測使用者是否存在If bllUserinfo.IsExist(modelUserinfo) = False ThenMsgBox("This user is not belong to database", MsgBoxStyle.OkOnly, "User is inexistent")Exit Sub End IfCatch ex As ExceptionMsgBox("發生錯誤:" & ex.Message & "請與管理員聯絡以解決問題", MsgBoxStyle.OkOnly, "抱歉")Exit SubEnd TryEnd Sub
BLL層
Public Class bll_User_info Dim sqlUserInfo As New ChargeSystemDAL.dal_User_info '查看是否存在此使用者 Public Function IsExist(ByVal modelUserInfo As DataModel.dm_User_info) As Boolean Return sqlUserInfo.IsExist(modelUserInfo) End Function End Class
DAL層
Dim model_User_info As New DataModel.dm_User_info '連接字串 Dim connString As String = _ "Persist Security Info=true;Data Source=192.168.24.158;Initial Catalog=CR_Charge_SYS;User ID=sa;PWD=123456;" '查看是否存在此使用者 Public Function IsExist(ByVal model_User_info As DataModel.dm_User_info) As Boolean Dim sqlconn As New SqlConnection(connString) Dim sqltxt As String = _ "select * from User_info where UserID = @userID" Dim sqlcmd As New SqlCommand(sqltxt, sqlconn) '添加參數 Dim sqlParam As New SqlParameter("@userID", model_User_info.UserID) sqlcmd.Parameters.Add(sqlParam) '開啟串連 sqlconn.Open() '閱讀資料 Dim sqlReader As SqlDataReader sqlReader = sqlcmd.ExecuteReader sqlReader.Read() Try If sqlReader.HasRows = True Then Return True Else Return False End If Catch ex As Exception MsgBox(ex.Message) Return False Finally sqlconn.Close() sqlconn = Nothing sqlReader.Close() End Try End Function
Entity
Public Class dm_User_infoPrivate _userid As StringPublic Property UserID As StringGetReturn _useridEnd GetSet(ByVal value As String)_userid = valueEnd SetEnd PropertyEnd Class
資料傳遞
使用者在UI層輸入資料,輸入的資料計入Entity中,DAL層使用Entity中的資料對資料庫進行增刪改查操作,返回的結果傳遞給BLL層,BLL層經過處理結果返回給UI層.
文尾
這隻是最簡單的三層,沒有添加設計模式等其他因素,僅供輔助理解三層。
如果哪裡表達不清楚,或是有誤,歡迎指正。