亮剑.NET的系列文章之.NET实现三层架构(三)
生活随笔
收集整理的這篇文章主要介紹了
亮剑.NET的系列文章之.NET实现三层架构(三)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
? ? 最近一直在學習三層架構,前些天同樣也寫了一篇同樣的博客,今天主要是通過一個登錄的實例給大家講解每部分的作用和相應代碼的實現。 ? ? 先將實現三層架構的UML圖給大家,幫助大家更好的理解三層。 ? ? ? ? ? ? ?
1. UI作用
(1) 向用戶展示特定業務數據
(2) 采集用戶的輸入信息和操作
2. BLL作用
(1) 從DAL獲取數據,以供UI顯示
(2) 從UI獲取用戶指令和數據,執行業務邏輯 (3) 從UI獲取用戶指令和數據,通過DAL寫入數據
3. 實體(Entity)層
(1) 屬于哪一層很難界定,比較傾向于業務邏輯層,也可以是數據訪問層
(2) 目的:為了封裝數據的,數據為了在三個層次之間流暢的流轉
(3) 獨立于其他三個層次的,不會引用任何的層次,其他三層都需要引用實體層
4. DAL層
作用主要是與操作數據庫
(1) 從數據源加載數據(select)
(2) 向數據源寫入數據(insert/update)
(3) 從數據源刪除數據(delete)
1. UI作用
(1) 向用戶展示特定業務數據
(2) 采集用戶的輸入信息和操作
Public Class frmLoginPrivate Sub btnOk_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOk.Click'定義實例Dim en_User As New Entity.en_UserInfoDim bl_User As New BLL.bl_Login'賦值en_User.UserID = txtUserName.Text.Trimen_User.Password = txtPassword.Text.Trim'采集用戶信息,展示登錄結果If bl_User.LoginManager(en_User) ThenMsgBox("登陸成功")ElseMsgBox("登錄失敗")End IfEnd SubPrivate Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.ClickMe.Close()End Sub
End Class
2. BLL作用
(1) 從DAL獲取數據,以供UI顯示
(2) 從UI獲取用戶指令和數據,執行業務邏輯 (3) 從UI獲取用戶指令和數據,通過DAL寫入數據
Imports Entity
Imports DAL.dal_LoginPublic Class bl_LoginPublic Function LoginManager(ByVal User As Entity.en_UserInfo) As BooleanDim dal_User As New DAL.dal_LoginDim en_User As New Entity.en_UserInfoen_User.UserID = User.UserID'調用D層的方法'en_User = dal_User.selectUser(en_User)en_User = dal_User.selectUser(User)'判斷操作If en_User.UserID.Trim = User.UserID And en_User.Password.Trim = User.Password ThenReturn TrueElseReturn FalseEnd IfEnd Function
End Class
3. 實體(Entity)層
(1) 屬于哪一層很難界定,比較傾向于業務邏輯層,也可以是數據訪問層
(2) 目的:為了封裝數據的,數據為了在三個層次之間流暢的流轉
(3) 獨立于其他三個層次的,不會引用任何的層次,其他三層都需要引用實體層
Imports EntityPublic Class en_UserInfo'聲明UserID屬性Private e_UserID As StringPublic Property UserID As StringGetReturn e_UserIDEnd GetSet(ByVal value As String)e_UserID = valueEnd SetEnd Property'聲明Password屬性Private e_Password As StringPublic Property Password As StringGetReturn e_PasswordEnd GetSet(ByVal value As String)e_Password = valueEnd SetEnd Property
End Class
4. DAL層
作用主要是與操作數據庫
(1) 從數據源加載數據(select)
(2) 向數據源寫入數據(insert/update)
(3) 從數據源刪除數據(delete)
Imports Entity
Imports System.Data.SqlClient
Imports System.DataPublic Class dal_Login'連接數據庫Dim strConn As String = "server =192.168.24.59;database=Login;uid=sa;pwd=123456"Dim sqlConnect As SqlConnection = New SqlConnection(strConn)'自定義檢查參數Function selectUser(ByVal User As Entity.en_UserInfo) As Entity.en_UserInfoDim read As SqlDataReaderDim en_User As New Entity.en_UserInfo'其實下面的這段程序就相當于dim sql as string ="select ID,UserName,PWD From Users Where UserName='"User.UserName"' And PWD='"User.PWD"'"'而寫成這個程序塊是為了防止Sql注入,即安全性考慮。'@UserName相當于傳了一個參數,("@UserName", User.UserName)相當于給參數名字傳遞了參數。Dim sql As String = "Select UserID,Password From UserInfo Where UserID=@UserID And Password=@Password"Dim sqlCmd As SqlCommand = New SqlCommand(sql, sqlConnect) '創建sqlCommand對象 'Dim UserDataTable As New DataTable '定義一個DataTable對象sqlCmd.CommandText = sql '獲取SQL語句的具體內容sqlCmd.CommandType = CommandType.Text '獲取上述SQL語句的具體類型,在此為SelectsqlCmd.Parameters.Add(New SqlParameter("@UserID", User.UserID)) '若用成eUser.UserName則會出現參數未傳遞的錯誤提示sqlCmd.Parameters.Add(New SqlParameter("@Password", User.Password))sqlConnect.Open()read = sqlCmd.ExecuteReader() '執行查詢語句,并生成一個DataReaderread.Read()'讀取查詢到的數據,并返回給相應的屬性While read.Read() '獲取數據庫中相應字段的數據'數組必須從零開始讀取,否則會超出其界限User.UserID = read.GetString(0)User.Password = read.GetString(1)End While'如果用戶存在的話,將數據庫表中檢索的記錄對應賦值給參數'User.UserID = read.Item("UserID")'User.Password = read.Item("Password")Return User '返回查詢到的實體sqlConnect.Close()End FunctionEnd Class
?
轉載于:https://www.cnblogs.com/snake-hand/archive/2013/06/15/3137687.html
總結
以上是生活随笔為你收集整理的亮剑.NET的系列文章之.NET实现三层架构(三)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 寄生虫电影里富人男主为啥要死
- 下一篇: 附子多少钱一克