C#学习之三层架构实例
如有雷同,不勝榮欣,如轉載,請注明
一、三層架構實例
首先學習三層架構模式-——三層架構實現的留言和查看留言
下面是本人學習三層架構的一點感想和理解,肯定有許多不足的地方,歡迎大家斧正,謝謝,廢話到此,下面咱們開始三層架構
大家都知道三層架構分為:1,表示層(UI)2,業務邏輯層(BLL)3,數據訪問層(DAL),下面咱們用一個簡單的實例,實戰三層架構
首先建立一個空白的解決方案,添加如下項目以及文件
1.添加一個ASP.net WebApplication項目,命名為UI,新建WebForm類型文件User.aspx(含User.aspx.cs)
2.添加ClassLibrary項目,命名為BLL,新建Class類型文件UserBLL.cs
3.添加ClassLibrary項目,命名為DAL,新建Class類型文件UserDAL.cs。添加SqlHelper引用,(這個是微軟的數據訪問類,也可以不用,直接編寫所有的數據訪問代碼。我一般用自己寫的數據訪問類DataAccessHelper)
4.添加ClassLibrary項目,命名為Model,新建Class類型文件UserModel.cs
5.添加ClassLibrary項目,命名為IDAL,新建Interface類型文件IUserDAL.cs
6.添加ClassLibrary項目,命名為ClassFactory
相信大家已經都能很清楚的看出來了,
下圖是項目實例解決方案的文件結構實例
BLL層
using?System;
using?System.Collections.Generic;
using?System.Linq;
using?System.Text;
using?Model;
using?DAL;
?
namespace?BLL
{
????public?class?UserBLL
??? {
????????UserDBdb =?new?UserDB();
????????public?bool?AddUser(UserInfouserInfo)
??????? {
????????????returndb.AddUser(userInfo);
??????? }
?
?
????????public?void?SelectUser(UserInfouserInfo)??//根據傳入的username或email得到用戶詳細信息
??????? {
????????????//
??????? }
?
????????public?void?IsExist(UserInfouserInfo)??//判D斷指定的username或email是否存在
??????? {
????????????//
??????? }
??? }
}
DAL層
using?System;
using?System.Collections.Generic;
using?System.Linq;
using?System.Text;
using?Model;
using?System.Data.SqlClient;
using?System.Configuration;
using?System.Data;
?
namespace?DAL
{
????//public classUserDAL
????//{
???????
????//}
?
????public?class?UserDB
??? {
????????UserInfoui =?new?UserInfo();
????????public?IList<UserInfo>SelectUser()??//返回所有的用戶信息列表
??????? {
????????????//
????????????returnnull;
??????? }
?
????????public?UserInfo?SelectUser(intuserId)??//返回指定用戶的相關信息
??????? {
????????????//
????????????returnui;
??????? }
?
????????public?bool?AddUser(Model.UserInfouserInfo)
??????? {
????????????// stringsetting =ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
????????????stringsetting =?ConfigurationSettings.AppSettings["ConnectionString"].ToString();
????????????SqlConnectionmyconn =?new?SqlConnection(setting);
??????????? myconn.Open();
????????????SqlCommandcmd =?new?SqlCommand("insert into dbo.[user]([name]) values(@name)",myconn);
??????????? cmd.Parameters.AddWithValue("@name", userInfo.UserName);
????????????if(cmd.ExecuteNonQuery() > 0)
??????????? {
????????????????returntrue;
??????????? }
????????????else
??????????? {
????????????????returnfalse;
??????????? }
??????? }
?
????????public?boolInsertUser(UserInfo?user)??//新增用戶信息
??????? {
????????????//
????????????returnfalse;
??????? }
?
????????public?bool?UpdateUser(UserInfouser)??//更新用戶信息
??????? {
????????????//
????????????returnfalse;
??????? }
?
????????public?void?DeleteUser(intuserId)??//移除用戶信息
??????? {
????????????//
??????? }¨
??? }
}
實體類Model
using?System;
using?System.Collections.Generic;
using?System.Linq;
using?System.Text;
?
namespace?Model
{
????//?實體類實質:實體類就是在完成數據庫與實體類對應的功能,1個類是一張表,一個屬性是一個字段
????///<summary>
????///實體類,僅用于數據的存儲(復雜的數據)
????///</summary>
????//public classusermodel
????//{
????//??? //
????//}
?
????public?class?UserInfo
??? {
????????///<summary>
????????///實體類用戶信息
????????///</summary>
????????publicUserInfo() { }
?
????????privatestring?userName;
?
????????public?string?UserName
??????? {
????????????get{?return?userName; }
????????????set{ userName =?value; }
??????? }
?
????????privatestring?passWord;
?
????????public?string?PassWord
??????? {
????????????get{?return?passWord; }
????????????set{ passWord =?value; }
??????? }
?
????????public?int?sex;
?
????????privatestring?birthday;
?
????????public?string?Birthday
??????? {
????????????get{?return?birthday; }
????????????set{ birthday =?value; }
??????? }
?
????????privatestring?email;
?
????????public?string?Email
??????? {
????????????get{?return?email; }
????????????set{ email =?value; }
??????? }
?
????????privatestring?qq;
?
????????public?string?QQ
??????? {
????????????get{?return?qq; }
????????????set{ qq =?value; }
??????? }
?
????????privatestring?mobilePhone;
?
????????public?string?MobilePhone
??????? {
????????????get{?return?mobilePhone; }
????????????set{ mobilePhone =?value; }
??????? }
??? }
}
?
ClassFactory
using?System;
using?System.Collections.Generic;
using?System.Linq;
using?System.Text;
?
namespace?ClassFactory
{
????public?class?Class1
??? {
??? }
}
IDAL數據庫訪問接口類
using?System;
using?System.Collections.Generic;
using?System.Linq;
using?System.Text;
?
namespace?IDAL
{
????interface?IUserDAL
??? {
??? }
}
?
UI層
?
?
三層架構的關系
?
上述代碼中DAL主要是對數據庫中的內容的操作,在這里就是向數據庫中添加用戶。BLL則主要是調用DAL層的操作,返回DAL層添加用戶的結果(true或者false)。這樣也就是在客戶端與數據庫中加了一個中間層,使得兩層的依賴性減小。UI層則主要完成響應用戶的需求,去調用BLL層實現的adduser方法,DAL層就是實實在在做這件事情的操作。
總結
以上是生活随笔為你收集整理的C#学习之三层架构实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: asp.net简单的注册或者登陆三层架构
- 下一篇: 三层架构—实践篇(.Net登录实例)