您的位置:首页 > 运维架构 > 网站架构

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

2017-06-01 14:20 239 查看
上篇论述了三层的基本概念,作用,关系,如今展示下系统中用户登陆过程中简单应用三层结构设计思想。

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实体类的实例作为參数来传递.

总之,表示层仅仅提供软件系统与用户交互的接口。业务逻辑层是界面层和数据訪问层之间的桥梁,负责数据处理和传递;数据訪问层仅仅负责数据的存取工作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: