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


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

          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("登录失败。请验证请验证登陆名和password!")
            Else
                MsgBox("登陆成功。")
    
                Return eUser1
            End If
    
        End Function
    End Class
           引用:我们看到三层架构的主要特点:UI调用BLL中类的方法,即UI知道BLL的方法,但不知道方法实现的细节,而BLL层并不知道UI的存在.相同BLL层调用DAL,而DAL也不知道BLL的存在。

    三者中不论什么一者发生变化都不会影响其它俩者的正常工作。仅仅对变化者进行又一次调整就可以。

    三层把Entity实体类的实例作为參数来传递.
               总之,表示层仅仅提供软件系统与用户交互的接口。业务逻辑层是界面层和数据訪问层之间的桥梁,负责数据处理和传递;数据訪问层仅仅负责数据的存取工作。


  • 相关阅读:
    线程安全
    C++和java中构造函数与析构函数的调用顺序
    mysql数据库的备份与恢复
    Spring Web Flow 2.0 入门详解
    JBOSS 5.0与tomcat 6.0端口设置
    修改mysql root密码
    Subversion Native Library Not Available
    解决Eclipse导入svn项目自动关闭
    将eclipse中项目的Text File Encoding设置成为GBK
    java下实现调用oracle的存储过程和函数
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/6928641.html
Copyright © 2020-2023  润新知