??三層架構(gòu):指的是PL(present layer)層,BLL(business logical layer)層,DAL(data access layer)層,是一種總體設(shè)計(jì)的思想。
- PL層(web層):是表現(xiàn)層,主要是用來展示數(shù)據(jù);
- BLL層:是處理層,主要是用來處理數(shù)據(jù);
- DAL層:主要是從數(shù)據(jù)庫(kù)獲取數(shù)據(jù)的。
- PL面向用戶,DAL面向數(shù)據(jù)庫(kù)。
??具體闡述:PL是web應(yīng)用程序,調(diào)用BLL的方法將數(shù)據(jù)傳給BLL或者從BLL中獲取處理好的數(shù)據(jù);BLL層是一個(gè)類庫(kù),調(diào)用DAL的方法獲取數(shù)據(jù)或者將數(shù)據(jù)處理結(jié)果給DAL。
實(shí)現(xiàn)方式:
1.新建-項(xiàng)目-空解決方案

2.右鍵空解決方案-添加新項(xiàng)-web應(yīng)用程序(PL層,當(dāng)然還要添加web窗體)

3.右鍵空解決方案-添加新項(xiàng)-類庫(kù)(BLL層)

4.右鍵空解決方案-添加新項(xiàng)-類庫(kù)(DAL層)

5.添加PL層的對(duì)BLL層的引用

6.添加BLL層對(duì)DAL層的引用

PL《——————BLL《——————DAL
7.注意類庫(kù)的修飾符是否為公共的

8.Default.aspx
<div>
10+12=
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label><br />
10*12=<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label><br />
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
<br />
</div>
9.Default.aspx.cs
protected void Button1_Click(object sender, EventArgs e)
{
BLL.Calculate c = new BLL.Calculate();
Label1.Text = "" + c.add(10, 12);
Label2.Text = "" + c.mul(10, 12);
}
10.BLL下的Class1
namespace BLL
{
public class Calculate
{
DAL.Class1 c = new DAL.Class1();
public int add(int x, int y)
{
return c.getX() + c.getY();
}
public int mul(int x, int y)
{
return c.getX() * c.getY();
}
}
}
12.DAL下的Class1
namespace DAL
{
public class Class1
{
public int getX()
{ return 10; }
public int getY()
{
return 12;
}
}
}

補(bǔ)充說明:
1.一般類庫(kù)的名字不是這樣命名的,這個(gè)只是一個(gè)簡(jiǎn)單例子,看著比較容易理解。一般是公司名+項(xiàng)目名稱+BLL(或DAL)。
2.三層架構(gòu)可以用動(dòng)軟代碼生成器生成。下載鏈接地址是:
http://www.onlinedown.net/soft/63546.htm
總結(jié):此實(shí)例先是在web中定義了界面,然后在后臺(tái)先是對(duì)BLL下的Calculate類實(shí)例化,再利用該類下的add方法;
BLL的add方法里又使用到了DAL下getX()和getY()方法;
也就是說,先在DAL里獲得數(shù)據(jù),并返回,由BLL獲取數(shù)據(jù)操作,并返回操作所得的結(jié)果,最后由PL層的后臺(tái)得到數(shù)據(jù),最后顯示再web上面
所以Label1.Text = " " + c.add(10,12);這里面的參數(shù)并沒有實(shí)際所用,只是為了調(diào)用方法而已。里面無論寫什么參數(shù),只要是兩個(gè)int型的,返回的結(jié)果是一樣的,在這只是展示,并沒有實(shí)際作用。
思考:明明在web界面的后臺(tái)程序可以直接處理,為什么要一層一層嵌套才在web層獲得數(shù)據(jù)呢?
優(yōu)缺點(diǎn):
優(yōu)點(diǎn):
1、開發(fā)人員可以只關(guān)注整個(gè)結(jié)構(gòu)中的其中某一層;
2、可以很容易的用新的實(shí)現(xiàn)來替換原有層次的實(shí)現(xiàn);
3、可以降低層與層之間的依賴(高內(nèi)聚,低耦合);
4、有利于標(biāo)準(zhǔn)化;
5、利于各層邏輯的復(fù)用。
缺點(diǎn):
1、降低了系統(tǒng)的性能。這是不言而喻的。如果不采用分層式結(jié)構(gòu),很多業(yè)務(wù)可以直接造訪數(shù)據(jù)庫(kù),以此獲取相應(yīng)的數(shù)據(jù),如今卻必須通過中間層來完成。
2、有時(shí)會(huì)導(dǎo)致級(jí)聯(lián)的修改。這種修改尤其體現(xiàn)在自上而下的方向。如果在表示層中需要增加一個(gè)功能,為保證其設(shè)計(jì)符合分層式結(jié)構(gòu),可能需要在相應(yīng)的業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層中都增加相應(yīng)的代碼。


