三层架构初探

三层架构

    三层架构(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层.

文尾

    这只是最简单的三层,没有添加设计模式等其他因素,仅供辅助理解三层。
如果哪里表达不清楚,或是有误,欢迎指正。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值