理解ASP.NET中的三层结构
理解ASP.NET中的三层结构
我们用三层结构主要是使项目结构更清楚,分工更明确,有利于后期的维护和升级.
三层结构包含:表示层(USL),业务逻辑层(BLL),数据访问层(DAL)
1:数据访问层:主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不
是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务.
2:业务逻辑层:主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻
辑处理,如果说数据层是积木,那逻辑层就是对这些积木的搭建。
3:表示层:主要表示WEB方式,也可以表示成WINFORM方式,
如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。
飞鸽传书-http://www.freeeim.com/
具体的区分方法
1:数据访问层:主要看你的数据层里面有没有包含逻辑处理,实际上他的各个函数主要完成
各个对数据文件的操作。而不必管其他操作。
2:业务逻辑层:主要负责对数据层的操作。也就是说把一些数据层的操作进行组合。
3:表示层:主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。
三层结构说明
完善的三层结构的要求是:修改表现层而不用修改逻辑层,修改逻辑层而不用修改数据层
.否则你的应用是不是多层结构,或者说是层结构的划分和组织上是不是有问题就很难说.
不同的应用有不同的理解,这是一个概念的问题.
流程图
部署三层结构
1:新建一空白解决方案
2:在此解决方案上添加>>新建项目>>类库 取名DBEntity(数据库实体)
3:在此解决方案上添加>>新建项目>>类库 取名DAL(数据访问层)
4:在次解决方案上添加>>新建项目>>类库 取名BLL(业务逻辑层)
5:在次解决方案上添加>>新建网站>>ASP.NET网站 取名WebSite(表示层,WinForm项目的话添加一Window应用程序)
6:DAL,BLL, WebSite分别添加对数据库实体DBEntity的引用
7:BLL添加对对DAL的引用,WebSite添加对BLL的引用
下面用一用户登陆演示项目
DBEntity添加UserInfo.cs,代表数据库实体,一般是和数据库一一对应的
view sourceprint?01 using System;
02 using System.Collections.Generic;
03 using System.Text;
04
05 namespace DBEntity
06 {
07 public class UserInfo
08 {
09 private int _id;
10 private string _userName;
11 private string _passWord;
12
13 public int Id
14 {
15 get { return _id; }
16 set { _id = value; }
17 }
18
19 public string UserName
20 {
21 get { return _userName; }
22 set { _userName = value; }
23 }
24
25 public string PassWord
26 {
27 get { return _passWord; }
28 set { _passWord = value; }
29 }
30 }
31 }
DAL里添加UserDAL.cs
view sourceprint?01 using System;
02 using System.Data;
03 using System.Data.SqlClient;
04 using System.Configuration;
05 using System.Collections.Generic;
06 using DBEntity;
07
08 namespace DAL
09 {
10 public class UserDAL
11 {
12 private string ConnectionString = ConfigurationManager.AppSettings["ConnectionString"].ToString();
13 public UserInfo Login(string userName, string passWord)
14 {
15 UserInfo info = new UserInfo();
16 string strSql = "select id,userName,passWord from Users where userName=@userName and passWord=@passWord";
17 SqlConnection conn = new SqlConnection(ConnectionString);
18 conn.Open();
19 SqlCommand com = new SqlCommand();
20 com.CommandType = CommandType.Text;
21 com.CommandText = strSql;
22 com.Connection = conn;
23 com.Parameters.AddWithValue("@userName", userName);
24 com.Parameters.AddWithValue("@passWord", passWord);
25 SqlDataReader dr = com.ExecuteReader(CommandBehavior.CloseConnection);
26 if (dr.Read())
27 {
28 info.Id = Convert.ToInt32(dr["id"]);
29 info.UserName = dr["userName"].ToString();
30 info.PassWord = dr["passWord"].ToString();
31 return info;
32 }
33 else
34 {
35 return null;
36 }
37 }
38 }
39 }
BLL里添加UserBLL.cs
view sourceprint?01 using System;
02 using System.Collections.Generic;
03 using System.Text;
04 using DBEntity;
05 using DAL;
06
07 namespace BLL
08 {
09 public class UserBLL
10 {
11 UserDAL dal = new UserDAL();
12 public UserInfo Login(string userName, string passWord)
13 {
14 return dal.Login(userName, passWord);
15 }
16 }
17 }
Web里Login.aspx对应的后台代码
view sourceprint?01 using System;
02 using BLL;
03 using DBEntity;
04
05 public partial class _Default : System.Web.UI.Page
06 {
07 protected void Page_Load(object sender, EventArgs e)
08 {
09
10 }
11 protected void Button1_Click(object sender, EventArgs e)
12 {
13 UserBLL data = new UserBLL();
14 UserInfo info = new UserInfo();
15 info = data.Login(TextBox1.Text, TextBox2.Text);
16 if (info != null)
17 {
18 //登陆成功
19 Response.Write("<script>alert(OK!)</script>");
20 }
21 else
22 {
23 //登陆失败
24 Response.Write("<script>alert(ERROR!)</script>");
25 }
26 }
27 }
至此,简单的三层架构用户登陆完成了!
水平有限,写的不好大家来指点!
下次写下三层架构的扩展:工厂模型
附源码下载:ThreeModelSolution.rar
理解ASP.NET中的三层结构相关推荐
- .net数据源控件绑定mysql_理解asp.net中DropDownList编辑数据源,绑定数据库数据。...
一.理解asp.net绑定数据库 终于学习到了连接数据库部分的内容,杨中科老师视频看起来挺轻松的,如果是高清版就更ok了. 我发现我学习新的编程语言会有一个特点,都想要赶紧学习数据库,数据就是一切,有 ...
- 理解asp.net中DropDownList编辑数据源,绑定数据库数据。
一.理解asp.net绑定数据库 终于学习到了连接数据库部分的内容,杨中科老师视频看起来挺轻松的,如果是高清版就更ok了. 我发现我学习新的编程语言会有一个特点,都想要赶紧学习数据库,数据就是一切,有 ...
- 深入理解asp.net中的 __doPostBack函数
前段时间做一个.net网站的时候,用到了模拟前端按钮刷新updatePanel进行局部刷新的时候,遇见了这个问题,当时没顾上记下来,查看网上资料,记下来留着以后查看. 很早以前,当我刚接触asp.NE ...
- 百度得来的所谓“三层结构”
三层结构 三层结构解释 所谓三层体系结构,是在客户端与数据库之间加入了一个中间层,也叫组件层.这里所 说的三层体系,不是指物理上的三层,不是简单地放置三台机器就是三层体系结构,也 不仅仅有B/S应用才 ...
- 从经典的MVC模式到Web三层结构
暑假这段时间,在海康这边实习,参与了海康iVMS-8700客户端的开发,对MVC有了新的认识,将之前写的这篇博客更新一下.有错误的地方,欢迎大家批评指正. 经典的MVC 什么是MVC? 先来说说MVC ...
- 使用VS搭建三层结构
参考资料:http://book.51cto.com/art/200906/131383.htm 通过一个简单的登录功能实现,讲述如何搭建三层结构. 1.搭建数据访问层 (1)打开VS 2005开发环 ...
- Asp.net三层结构原理与用意学习入门教程(一)
接解asp.net已很久了,一直采用一个解决方案一个项目的方式去开发,所有的数据操作全放在一个类文件里,以为这就是所谓的三层结构,后来听说真正的大型网站的三层结构,应该是三个项目,或是更多的项目组成的 ...
- Java三层结构的概念_Java中的mvc和三层结构究竟是什么关系
原标题:Java中的mvc和三层结构究竟是什么关系 一件事,要知其然往往很简单,要知其所以然通常不是那么容易,就如最近重新巩固spring的过程中,就觉得还有许多问题其实并不是十分明了. 屈指一算,手 ...
- asp.net MVC三层结构代码生成器
asp.net MVC三层结构代码生成器 一.使用MVC开发的朋友都有一个苦恼,那就是三层结构大量重复代码比较鸡肋,写之无味,不写不行.最近也是从网上找了一些资料,自己又简单加工下,完善了该工具. 1 ...
最新文章
- hdu 1312	Red and Black 解题报告
- 李飞飞团队最新论文:如何对图像中的实体精准“配对”?
- ExtJS 4.2 教程-08:布局系统详解
- 遍历目录寻找指定文件
- 报告称中国出境游客移动支付消费首次超现金
- UPS蓄电池的内阻没有参考值,如何才能发现劣化蓄电池?
- VTK:PolyData之SelectPolyData
- 计算机导论设计实验,基于抽象知识点的《计算机导论》实验软件设计
- 如何让自己的内心强大起来
- 从特征分解到协方差矩阵:详细剖析和实现PCA算法
- Linux程序分析工具介绍—ldd,nm
- pygame游戏开发-简介
- 在Web页面中控制其元素的选择状态
- 山东大学高频电子线路实验四 振幅调制与解调实验详解
- 微信小程序中英文切换
- 【Aspose for .NET】Aspose.word操作表格:在表格中插入行
- 短视频Go研发框架实践-hulk
- SVN版本库备份和恢复
- 本地Windows上安装 MySQL数据库
- 实现带附件格式的业务服务质量周报邮件
热门文章
- javascript中parseFloat(x)、parseInt(num,radix)、Promise、ReferenceError、Reflect、get和set
- Node.js开发入门(一)——安装Node.js及编辑器配置
- mysql查询自定义数据_实现自定义查询的数据库设计及实现(一)
- mysql门派年龄最大的人_目前活着年龄最大的人
- HDFS详解(架构设计、副本放置策略、读写流程、进程、常用命令等)
- SpringCloud Ribbon实战以及Ribbon的源码浅析(四)
- jsp九大内置对象与servlet中java对象
- anaconda降级python_anaconda python更换清华源
- 【精彩实况】第三届大数据科学与工程国际会议
- 【软件工程】软件文档