理解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中的三层结构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 架构、框架、设计模
- 下一篇: 飞鸽传书为什么传书?