首页 > 代码库 > 三层架构-----实践篇

三层架构-----实践篇

上篇论述了三层的基本概念,作用,关系,现在展示下系统中用户登陆过程中简单应用三层结构设计思想。

      vb.NET的操作如下

       首先建立以下windows应用程序以及类库

               

  首先建立实体类

        

Public Class userInfo
    Private _username As String
    Public Property UserName As String
        Get
            Return _username

        End Get
        Set(ByVal value As String)
            _username = value

        End Set
    End Property
    Private _pwd As String
    Public Property Pwd As String
        Get
            Return _pwd

        End Get
        Set(value As String)
            _pwd = value
        End Set
    End Property
End Class
UI层,前提是引用实体类(model)和BLL

   

Public Class Form1

    Private Sub btnCancel_Click(sender As Object, e As EventArgs) Handles btnCancel.Click
        Me.Close()
    End Sub

    Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
        Try
            Dim euser2 As New Model.userInfo
            Dim euser3 As New Model.userInfo

            euser2.UserName = txtUserName.Text.Trim '将U层数据传递给实体
            euser2.Pwd = txtPassword.Text.Trim

            Dim mgr As New BLL.LoginMannager '将数据传递给B层
            euser3 = mgr.UserLogin(euser2)
        Catch ex As Exception
            MessageBox.Show(ex.Message.ToString())

        End Try
    End Sub
End Class

  DAL层:前提引用实体类

Imports System.Data
Imports System.Data.SqlClient
Imports Model

Public Class user
    '创建数据库链接
    Public conn As New SqlConnection("server=LXY;database=login;user Id=sa;password=123456")
    Public Function SelectUser(ByVal User As Model.userInfo) As Model.userInfo
        '传递实体uesrinfo而不是参数id.username 等,这样方便对实体中参数进行调用
        Dim reader As SqlDataReader
        Dim eUser As New Model.userInfo
        Dim sql As String = "select UserName,PassWord FROM User_info WHERE UserName=@username and PassWord=@password"
        Dim cmd As New SqlCommand(sql, conn)

        cmd.CommandText = sql
        cmd.CommandType = CommandType.Text
        cmd.Parameters.Add(New SqlParameter("@username", User.UserName))
        cmd.Parameters.Add(New SqlParameter("@password", User.Pwd))
        conn.Open()
        reader = cmd.ExecuteReader
        While reader.Read()
            eUser.UserName = reader.GetString(0)
            eUser.Pwd = reader.GetString(1)
        End While
        Return eUser
        conn.Close()


    End Function
End Class
接下来是BLL层:前提引用DAL和实体类

Public Class LoginMannager
    Public Function UserLogin(ByVal User As Model.userInfo) As Model.userInfo
        Dim uDao As New DAL.user
        Dim eUser1 As New Model.userInfo

        eUser1 = uDao.SelectUser(User) '将数据传给D层

        If IsNothing(eUser1.UserName) Then
            Throw New Exception("登录失败,请验证请验证登陆名和密码!")
        Else
            MsgBox("登陆成功!")

            Return eUser1
        End If

    End Function
End Class
       引用:我们看到三层架构的主要特点:UI调用BLL中类的方法,即UI知道BLL的方法,但不知道方法实现的细节,而BLL层并不知道UI的存在.同样BLL层调用DAL,而DAL也不知道BLL的存在。三者中任何一者发生变化都不会影响其他俩者的正常工作,只对变化者进行重新调整即可。三层把Entity实体类的实例作为参数来传递.
           总之,表示层只提供软件系统与用户交互的接口;业务逻辑层是界面层和数据访问层之间的桥梁,负责数据处理和传递;数据访问层只负责数据的存取工作。