vb.net小试三层架构
在对三层架构有了初步了解后,用vb.net做了一个小的程序,真的很小,仅仅是为了体现一下三层之间机制。下面是我设计的操作界面:
还有程序集和类的分布情况,
接下来是数据的设计,数据库用到的是SQL Server2008
三层架构,用简单的话来概括说就是:.U层传入UI命令和参数,然后调用B层的业务逻辑,B层中业务逻辑要用到的数据是通过调用D层访问数据库来完成.通过这样的调用,D层的检索结果返给B层,B层通过业务逻辑加工、判断、处理数据,最后将处理结果返给UI层。
程序的功能包括对表中信息的增删改查,因为都展示出来篇幅过长,就选择其中添加的功能来进行阐述。接下来看代码是怎么体现出来的。
先看一下U层是怎么来引用B层的
Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click '添加按钮
Dim ADDStu As New StuBLL.ManageBLL '实例化B层的类ManageBLL,实现对B层的引用
Dim Ustudent As New StuEntity.StudentEntity '实例化实体层类StudentEntity,方便存储参数
'对文本框的输入做限制
If Trim(txtID.Text) = "" Or IsNumeric(Trim(txtID.Text)) = False Then
MessageBox.Show("请输入合适学号,再进行该操作")
Exit Sub
End If
If Trim(txtName.Text) = "" Then
MessageBox.Show("请输入姓名,再进行该操作")
Exit Sub
End If
If Trim(txtTel.Text) = "" Or IsNumeric(Trim(txtTel.Text)) = False Then
MessageBox.Show("请输入联系电话,再进行该操作")
Exit Sub
End If
'给实体类的属性赋值
Ustudent.StuID = CInt((txtID.Text))
Ustudent.StuMarks = Trim(CStr(txtName.Text))
Ustudent.StuTel = CDec(txtTel.Text)
'调用类方法 AddStuManager 并报告
If ADDStu.AddStuManager(Ustudent) Then
MessageBox.Show("添加成功,请刷新")
Else
MessageBox.Show("该学号已添加,请重新添加") End If End Sub
通过上面的代码,知道U层实例化B层的类ManageBLL 调用了它的AddStuManager方法 完成了给操作,它就是这样引用了B层。
接下看看,它所引用的B层是如何构建并实现的:
Imports StuDAL
Imports StuEntity
Public Class ManageBLL
Public Function AddStuManager(ByVal stuInfoEn As StuEntity.StudentEntity) As Boolean '判断可否插入信息,并返回布尔值
Dim Controller As New StuDAL.SqlDAL '实例化D层类sqlDAL,完成对D层的引用
Dim StuInfo As New StuEntity.StudentEntity '引用实体类,以便储存一定的参数 If Controller.IsExist(stuInfoEn) = True Then '根据ID判断该条记录是否已经存在,若存在返回False
Return False
Else '若不存在,执行添加的方法,并返回True
Controller.AddStu(stuInfoEn)
Return True
End If
End Function
End Class
其实B层发挥的作用其实很大,对数据加工在上面的代码中没有很好的体现,只是对D层返回的数据进行了简单的判断。这里B层实例化了D层中的类sqlDAL ,调用了它的IsExit()和AddStu()方法,就这样引用了D层,完成了自己的业务逻辑。
无论B层的逻辑简单还是复杂,都妨碍不了D层,它只专注与对数据库数据的操作。
Imports StuEntity
Public Class SqlDAL
Public Function AddStu(ByVal stuinfoen As StuEntity.StudentEntity) As Boolean '根据传入的参数StudentEntity,执行 数据库 插入命令 并返回布尔值 Dim con As SqlClient.SqlConnection
Dim cmd As SqlClient.SqlCommand
Dim intResult As Integer con = New SqlClient.SqlConnection(ContactDAL.SqlString()) ‘建立对数据库的连接
cmd = con.CreateCommand() cmd.CommandText = "insert into T_Names (ID,Name,Tel) values (" & stuinfoen.StuID & ",'" & stuinfoen.StuMarks & "'," & stuinfoen.StuTel & ")" ’对数据中数据操作的具体SQL语句
cmd.CommandType = CommandType.Text
con.Open() ‘打开对数据库的连接
intResult = cmd.ExecuteNonQuery() ,执行SQl语句,并返回执行结果
If intResult < 0 Then ,如果操作成功,则返回True,失败则返回False
Return True
Else
Return False
End If
con.Close() ’关闭连接,
con = Nothing ,清楚存储
End Function
Public Function IsExist(ByVal stuinfoen As StuEntity.StudentEntity) As Boolean '根据传入的参数StudentEntity,执行数据查询命令,检查是否有要检索的内容
Dim con As SqlClient.SqlConnection = New SqlClient.SqlConnection(ContactDAL.SqlString())
Dim cmd As SqlClient.SqlCommand
Dim dalReader As SqlClient.SqlDataReader cmd = con.CreateCommand
cmd.CommandText = "select *from T_Names where ID='" & stuinfoen.StuID & "'"
cmd.CommandType = CommandType.Text
con.Open()
dalReader = cmd.ExecuteReader() If dalReader.HasRows = True Then
Return True
Else
Return False
End If
con.Close()
con = Nothing
End Function
End Class
三层之间U层引用B层,B层引用D层这样一个机制就这样构成了。
这里不得不再提一下这个实体层StuEntity,它存在于三层架构之外,但它的存在大大帮助了三层的实现,因为在层与层之间的调用上需要传递一些参数,实体类恰好就是这样一个装载参数的容器。通过上面的代码也可以看出,三个层中都引用到了实体类,而且主要用于储存和传递参数。以下是实体层的构建:
'定义实体类,存储数据表T_Names中的数据
Public Class StudentEntity '声明私有字段
Private _StuID As Integer
Private _StuMark As String
Private _StuTel As Integer Property StuID As Integer '定义StuId属性
Get
Return _StuID
End Get
Set(value As Integer)
_StuID = value
End Set
End Property
Property StuMarks As String '定义StuMarks属性
Get
Return _StuMark
End Get
Set(value As String)
_StuMark = value
End Set
End Property
Property StuTel As Integer '定义StuTel属性
Get
Return _StuTel
End Get
Set(value As Integer)
_StuTel = value
End Set
End Property
End Class
这是我对三层的理解,这个小例子的制作让我对三层有了进一步的了解,其中还有些偏差,还望各位读者多多指出,相互交流,共同进步。
vb.net小试三层架构的更多相关文章
- 微软代码示例:ASP.NET 2.0 三层架构应用程序教程系列
本文转自:http://www.codeusing.com/hi/uephee.wen/resource/view/170.aspx 资源分类:微软代码示例 更新日期:20 ...
- asp.net三层架构 及其中使用泛型获取实体数据介绍
asp.net中使用泛型获取实体数据可以发挥更高的效率,代码简洁方便,本例采用三层架构.首先在model层中定义StuInfo实体,然后在 DAL层的SQLHelper数据操作类中定义list< ...
- 关于三层架构与MVC的一些理解
刚毕业的时候,参与了一个上位机的系统开发.上位机所使用的是.net Windows Form技术. 当时,和一个北理的姑娘在一个项目组里.因为她来公司时间比较长,而且经验比较丰富,所以,上位机的架构由 ...
- 架构和模式的区别:三层架构和MVC在应用开发中的位置
架构是系统层面的,可以是多层架构,也可以是事件驱动架构,也可以是微服务架构. 模式是GUI应用的一种职责分离设计. 三层架构(包含多层架构)和 MVC模式(包含MVP, MVVM) 没什么关系,它们不 ...
- 从零开始编写自己的C#框架(5)——三层架构介绍
三层架构对于开发人员来说,已经是司空见惯了,除了大型与超小型项目外,大多都是这种架构来进行开发. 在这里为初学者们简单介绍一下三层架构: (下面内容摘自<趣味理解:三层架构与养猪—<.NE ...
- 【转】浅谈MVC与三层架构
首先给大家引入下MVC的概念: MVC(Model View Controller)模型.视图以及控制器,它是一种较为广泛应用的结构设计模式. 模型:就是在MVC设计模式中需要被显示的数据.在通常情况 ...
- 有了门面,程序会更加体面!- pos软件基于三层架构 -09
续上篇) 大鸟说道:“实际上没有学过设计模式去理解三层架构会有失偏颇的,毕竟分层是更高一级别的模式,所谓的架构模式.不过在程序中,有意识的遵循设计原则,却也可以有效的做出好的设计.” ...
- 三层架构 与 MVC那点事儿
以下为转载内容: 地址 MVC与三层架构的异同点 首先先解释一下MVC. V即View.是视图的意思. C即Controler.是控制器的意思. M即Model,是模型的意思. 这三个里.最不容易理解 ...
- JDBC三层架构
三层框架: 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的即为了“高内聚,低耦合”的思想. 原理:1:数据访问层:主要是对原始 ...
随机推荐
- PTA L2-006 树的遍历-二叉树的后序遍历+中序遍历,输出层序遍历 团体程序设计天梯赛-练习集
L2-006 树的遍历(25 分) 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 输入格式: 输入第一行给出一个正整数N(≤),是二叉树中结点的 ...
- Linux下python版本的升级步骤
1.先下载,你要升级的python版本(我升级的是python3.3.0) 可使用系统自带下载工具wget下载: wget http://www.python.org/ftp/python/3.3.0 ...
- 推荐Maven的两个仓库
概述 推荐两个maven的仓库,可用于查找依赖,下载jar包. 正文 mvnrepository 这个仓库用来检索依赖.下载jar包:网址:http://mvnrepository.com/ 仓库的主 ...
- matlab学习之绘制参数曲线,添加辅助线以及颜色设置
粘贴代码 % 插入参数曲线h % 插入辅助线h1 % 并设置颜色,包括画布颜色和曲线颜色 t=-pi:0.1:pi; x=cos(t)-sin(3*t); y=sin(t).*cos(t)-cos(3 ...
- ActiveMQ 认证(一)
新搭建的ActiveMQ服务,在发布和读取消息时,连接的权限为ActiveMQConnection.DEFAULT_USER和ActiveMQConnection.DEFAULT_PASSWORD. ...
- [USACO 2016 Dec Gold] Tutorial
Link: 传送门 A: 贪心从小到大插入,用并查集维护连通性 #include <bits/stdc++.h> using namespace std; #define X first ...
- 【数论】【中国剩余定理】poj1006 生理周期
CRT用于求解一元线性同余方程组(模数互质),实际上模数不互质我们也可以解决,在之前的某篇文章里提过.如下 http://www.cnblogs.com/autsky-jadek/p/6596010. ...
- 操作系统介绍、python基础
操作系统 什么是操作系统? 操作系统位于计算机硬件与应用软件之间,是一个协调.管理.控制计算机硬件资源与软件资源的控制程序. 2.为何要操作系统 ① .控制硬件 ② .把对硬件的复杂的操作封装成 ...
- 十一. 图形、图像与多媒体5.Graphics2D类的绘图方法
Java语言在Graphics类提供绘制各种基本的几何图形的基础上,扩展Graphics类提供一个Graphics2D类,它拥用更强大的二维图形处理能力,提供.坐标转换.颜色管理以及文字布局等更精确的 ...
- WPF Interaction框架简介(一)——Behavior
在WPF 4.0中,引入了一个比较实用的库——Interactions,这个库主要是通过附加属性来对UI控件注入一些新的功能,除了内置了一系列比较好用的功能外,还提供了比较良好的扩展接口.本文这里简单 ...