三层VB.NET版总结

前端之家收集整理的这篇文章主要介绍了三层VB.NET版总结前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

今天来说一下三层架构,想必学过三层架构的有志之士都知道我所说的不是物理上的三层架构,而是业务逻辑上的三层架构。三层架构层次化分为表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。

这里我先说一下刚开始接触三层时的感受啊,刚开始学习三层架构时有点蒙。至于蒙的原因嘛?就是不知道各层次间到底是怎么串联起来的。

下面转入正题:

三层架构的区分层次的目的即为了“高内聚,低耦合”的思想。其中

表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。

业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除修改、更新、查找等。

下面通过一个vb.NET编写系统登录的小例子将三层之间的联系简单说明一下。

D层:

Imports System.Data.sqlClient
Imports System.Data
Public Class UserDAL
    Public Function SelectUser(ByVal users As UserEntity.LoginEntity) As UserEntity.LoginEntity '查询用户
        Dim com As New sqlCommand    '定义命令字符串
        Dim conn As New sqlConnection   '定义打开连接数据库
        Dim myName As String '定义个用户名接受变量
        conn = New sqlConnection(Dbutil.strConnstring()) '实例化连接字符串

        com.Connection = conn '将字符串连接赋给COM命令
        'com.CommandText = "select * from T_User  where PassWord=@PassWord and UserName=@UserName"
        com.CommandText = "select password from T_User  where UserName=@UserName"
        com.CommandType = CommandType.Text  '命令类型,默认是sql语句
        com.Parameters.Add(New sqlParameter("@UserName",users.Luser)) '将实体给@UserName
        'com.Parameters.Add(New sqlParameter("@PassWord",users.Lpassword)) '将实体给@PassWord
        conn.Open() '打开数据库


        Dim Reader As sqlClient.sqlDataReader '定义读取数据表
        Reader = com.ExecuteReader() '执行读取

        Dim luserName As New UserEntity.LoginEntity  '实例化实体类
        While (Reader.Read())
            luserName.Luser = Reader.GetString(Reader.GetOrdinal("UserName"))
            luserName.Lpassword = Reader.GetString(Reader.GetOrdinal("PassWord"))
        End While
        conn.Close() '关闭连接
        Return luserName   '将LuserName返回给实体
    End Function

End Class
Imports System.Data.sqlClient
Imports System.Data

Public Class Dbutil '连接数据库
    Public Shared Function strConnstring() As String
        strConnstring = "server=192.168.24.150;Database=LoginUsre;User ID=sa;PassWord=123456"
    End Function
End Class
B层:
<span style="font-size:14px;">Imports System.Data
Imports System.Data.sqlClient
Public Class HandleBLL
    Public Function UserLogin(ByVal users As UserEntity.LoginEntity) As UserEntity.LoginEntity
        Dim uDal As New LoginADL.UserDAL() '实例化D层
        ' Dim sDal As New LoginADL.scoreDAL()
        Dim eDAL As New UserEntity.LoginEntity()
        eDAL = uDal.SelectUser(users) '查询数据表中是否有实体记录
        If IsNothing(eDAL.Luser) Then '如果没有
            Throw New Exception("登录失败")
        Else                            '如果有记录
            MsgBox("登录成功" + eDAL.Luser)

            'sDal.UpataUserscore(eDAL,10)
        End If

        Return eDAL  '返回查询

    End Function
  
End Class</span>
u层:
@H_404_51@
Public Class Form1

    Private Sub Btok_Click(sender As Object,e As EventArgs) Handles Btok.Click
        Try
            Dim Euser1 As New UserEntity.LoginEntity()  '定义一个接收表现参数
            Dim Euser2 As New UserEntity.LoginEntity()  '定义一个接收判断实体返回参数
            Dim mgr As New LoginBLL.HandleBLL() '实例B层
            Euser1.Luser = txtUserName.Text.Trim() '接收表现层用户名
            Euser1.Lpassword = txtPassWord.Text '接受密码

            Euser2 = mgr.UserLogin(Euser1) '调用B层,做判断
        Catch ex As Exception
            MessageBox.Show(ex.Message.ToString())
        End Try

    End Sub
End Class

E层(实体):
@H_404_51@
<span style="font-size:14px;">Public Class LoginEntity
    Dim UserName As String
    Dim PassWord As String
    Dim score As Integer
    Public Property Luser() As String

        Get
            Return UserName
        End Get
        Set(value As String)
            UserName = value
        End Set
    End Property
    Public Property Lpassword() As String

        Get
            Return PassWord
        End Get
        Set(value As String)
            PassWord = value
        End Set
    End Property
End Class</span>

下面说一下三层架构的优缺点:

优点:高可扩展性、可维护性高、有利于标准化、代码可重用、还提高了系统的安全性。

缺点:代码量多、工作量大、系统比较复杂,运行效率低。
原文链接:https://www.f2er.com/vb/258004.html

猜你在找的VB相关文章