當前位置:
首頁 > 最新 > Web入門程序——三層架構

Web入門程序——三層架構

三層架構體系的應用程序將業務規則、數據訪問、合法性校驗等工作放到了中間層進行處理。通常情況下,客戶端不直接與資料庫進行交互,而是通過COM/DCOM通訊與中間層建立連接,再經由中間層與資料庫進行交互,最終在界面表示層體現出來。用我自己的話來說,就是將代碼分工,分別寫在合適的位置。

統一符號及名稱說明:

界面表示層:UIL (User Interface layer)

業務邏輯層:BLL(Business Logic Layer)

數據訪問層:DAL(Data access layer)

編譯環境:

Tool: Microsoft Visual Studio Enterprise 2017、SQL Server Management Studio (SSMS)

Language: C#

01

搭建框架

建立一個空白解決方案

Tips: 這樣做避免了建立項目時會糾結該選擇哪個對應的項目方案,需要多少個項目工程,直接在解決方案下添加即可。

為項目添加一個Web類庫(ASP.NET Web Application (.NET Framework)),命名為「TestULL」,模板選擇為Web Forms。再添加兩個Windows類庫(Class Library (.NET Framework))「TestBLL」和「TestDAL」。

Tips: 統一命名規則會在項目龐大、複雜起來顯得尤為重要,這裡我將對應的.cs文件名詞進行了修改

02

邏輯連接

在菜單欄Tools->NuGet Package Manager->Manage NuGet for Solution中刪除多餘的NuGet安裝包,對UIL層添加Newtonsoft.Json安裝包。

Tips: 在.js和.aspx等非.cs編譯文件中改變代碼,可以先保存再在網頁中按CTRL+F5來清空緩存刷新頁面,避免重複build。

猝不及防的知識點——代碼後置

新建一個aspx頁面的時候,會自動生成一個aspx.cs文件,aspx是一些前台的html的頁面和js的代碼我們叫做前台代碼,也叫做客戶端代碼。但是你的主要的邏輯代碼會在aspx.cs裡面,語法是C#,我們把這個叫做後台代碼,有時候也叫做服務端代碼。這樣使代碼與頁面內容分離,讓代碼更清晰。

與代碼後置相對應的是代碼內嵌,我們可以不使用代碼後置的.cs文件,完全在.aspx文件中編寫代碼。只需在創建頁面時,不選擇「將代碼放在單獨的文件中」複選框,將代碼寫在之間即可。

添加引用(References)規則:UIL引用BLL,BLL引用DAL。

03

頁面設計

在UIL層的.config文件中添加資料庫的登陸賬號和密碼,這樣便於後期統一修改和管理

TestUIL(Web.config)

打開UIL層的.asp文件,根據HTML編碼規則進行網頁編輯。這裡我們選用TextBox、Label、GridView三種基本控制項。其中,我們將Label的空間名稱改為LabelMatthew,隨著代碼量的增加,所有的控制項名稱都需要統一規範。

WebForm1.aspx文件)

HELLO WORD!

該段代碼得到的頁面預期效果如圖所示:

猝不及防的知識點——B/S&C/S

C/S,即Client/Server(客戶機/伺服器) 結構,是大家熟知的軟體系統體系結構,通過將任務合理分配到Client端和Server端,降低了系統的通訊開銷,需要安裝客戶端才可進行管理操作。

B/S,即Browser/Server (瀏覽器/伺服器) 結構,是隨著Internet技術的興起,對C/S結構的一種變化或者改進的結構。在這種結構下,用戶界面完全通過WWW瀏覽器實現。

04

代碼添加

三層輸入的代碼如下:

BLL層(UserBLL.cs文件)

using System;

using System.Collections.Generic;

using System.Data;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using TestDAL;

namespace TestBLL

{

public class UserBLL

{

public static void Add()

{

UserDal.Add();

}

public static DataTable Get()

{

DataTable dt = UserDal.Get();

dt.Rows.RemoveAt(0);

return dt;

}

}

}

DAL層(UserDAL.cs文件)

using System;

using System.Collections.Generic;

using System.Configuration;

using System.Data;

using System.Data.SqlClient;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

namespace TestDAL

{

public class UserDAL

{

public class UserDal

{

public static void Add()

{

string SQL = "insert into users(UserName) values("hs" + DateTime.Now.Ticks + "");";

//string str = "Server=.; Database=TestDB;Uid=sa;Pwd=sa123;";

string str = ConfigurationManager.ConnectionStrings["myDB"].ConnectionString;

SqlConnection scn = new SqlConnection(str);

scn.Open();

SqlCommand sqlCommand = scn.CreateCommand();

sqlCommand.CommandText = SQL;

sqlCommand.ExecuteNonQuery();

scn.Close();

}

public static DataTable Get()

{

//string str = "Server=.; Database=TestDB;Uid=sa;Pwd=sa123;";

string str = ConfigurationManager.ConnectionStrings["myDB"].ConnectionString;

SqlConnection scn = new SqlConnection(str);

DataTable dt = new DataTable();

string selectSql = "select * from users";

scn.Open();

SqlDataAdapter sda = new SqlDataAdapter(selectSql, scn);

sda.Fill(dt);

scn.Close();

return dt;

}

}

}

UAI層(WebForm1.aspx.cs文件)

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using TestBLL;

namespace TestUIL

{

public partial class WebForm1 : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

TextBox1.Text = "hello";

LabelMatthew.Text = "byb";

UserBLL.Add();

GridView1.DataSource = UserBLL.Get();

GridView1.DataBind();

}

}

}

05

連接資料庫

本地資料庫登陸,輸入賬號及密碼,本地賬戶名稱默認為sa。

Tips: 本地資料庫登陸的四種方式

(1)自己的計算機名稱實例名;(2)本機的迴環地址;

(3)localhost ;(4)一個點:. 。

在本地資料庫中建立一個Test01庫,插入Roles、UserUserInRole、Users三個表,這裡只用到了Users這一個表,之後的教程會建立相對應的mapping關係來進行進一步學習。

06

測試

如果直接運行第一次會報錯,這需要進行ASP.NET MVC路由配置,簡單來說就是建立一個基礎頁,將Web程序運行在該基礎頁上。

具體操作方式有如下兩種:

(1)右擊WebForm1.aspx,點擊Set As Start Page;

(2)設置TestUIL的屬性。

詳情請參考博客:http://www.cnblogs.com/wangiqngpei557/p/3379095.html

為了直觀地與資料庫進行交互,我們在BLL層中為GridView控制項添加了DateTime方法,這樣每次刷新頁面都會向本地資料庫中添加一行數據。

string SQL = "insert into users(UserName) value

("hs"+DateTime.Now.Ticks + " ");";

本地資料庫的內容變化如下圖:

至此,你便搭建起了一個屬於你自己的三層架構項目。後續的文章,Matthew將會在此項目的基礎上進一步分享DevOps和雲端搭建的內容。

謹以此文與君共勉,略略略~


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 全球大搜羅 的精彩文章:

古代玉石擺件的寓意
那個教會我愛情的人,結婚了

TAG:全球大搜羅 |