三层架构
三层架构(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.Click
Dim bllUserinfo As New ChargeSystemBLL.bll_User_info
Dim modelUserinfo As New DataModel.dm_User_info '获取用户名和密码
modelUserinfo.UserID = txtUID.Text
modelUserinfo.UserPWD = txtPWD.Text
Try
'检测用户是否存在
If bllUserinfo.IsExist(modelUserinfo) = False Then
MsgBox("This user is not belong to database", MsgBoxStyle.OkOnly, "User is inexistent")
Exit Sub
End If
Catch ex As Exception
MsgBox("发生错误:" & ex.Message & "请与管理员联系以解决问题", MsgBoxStyle.OkOnly, "抱歉")
Exit Sub
End Try
End 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_info
Private _userid As String
Public Property UserID As String
Get
Return _userid
End Get
Set(ByVal value As String)
_userid = value
End Set
End Property
End Class
数据传递
用户在UI层输入数据,输入的数据计入Entity中,DAL层使用Entity中的数据对数据库进行增删改查操作,返回的结果传递给BLL层,BLL层经过处理结果返回给UI层.
文尾
这只是最简单的三层,没有添加设计模式等其他因素,仅供辅助理解三层。
如果哪里表达不清楚,或是有误,欢迎指正。