C#asp.net 三层架构简单理解

C#

浏览数:105

2019-8-30

AD:资源代下载服务

  三层架构:指的是PL(present layer)层,BLL(business logical layer)层,DAL(data access layer)层,是一种总体设计的思想。

  • PL层(web层):是表现层,主要是用来展示数据;
  • BLL层:是处理层,主要是用来处理数据;
  • DAL层:主要是从数据库获取数据的。
  • PL面向用户,DAL面向数据库。

  具体阐述:PL是web应用程序,调用BLL的方法将数据传给BLL或者从BLL中获取处理好的数据;BLL层是一个类库,调用DAL的方法获取数据或者将数据处理结果给DAL。
实现方式:
1.新建-项目-空解决方案



2.右键空解决方案-添加新项-
web应用程序(PL层,当然还要添加web窗体)




3.右键空解决方案-添加新项-
类库(BLL层)




4.右键空解决方案-添加新项-类库(DAL层)




5.添加PL层的对BLL层的引用




6.添加BLL层对DAL层的引用


PL《——————BLL《——————DAL

7.注意类库的修饰符是否为公共的


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;
        }  
    }
}

结果

补充说明:

1.一般类库的名字不是这样命名的,这个只是一个简单例子,看着比较容易理解。一般是公司名+项目名称+BLL(或DAL)。

2.三层架构可以用动软代码生成器生成。下载链接地址是:


http://www.onlinedown.net/soft/63546.htm

总结:此实例先是在web中定义了界面,然后在后台先是对BLL下的Calculate类实例化,再利用该类下的add方法;

BLL的add方法里又使用到了DAL下getX()和getY()方法;

也就是说,先在DAL里获得数据,并返回,由BLL获取数据操作,并返回操作所得的结果,最后由PL层的后台得到数据,最后显示再web上面
所以Label1.Text = ” ” + c.add(10,12);这里面的参数并没有实际所用,只是为了调用方法而已。里面无论写什么参数,只要是两个int型的,返回的结果是一样的,在这只是展示,并没有实际作用。

思考:明明在web界面的后台程序可以直接处理,为什么要一层一层嵌套才在web层获得数据呢?

优缺点:

优点:
  1、开发人员可以只关注整个结构中的其中某一层;
  2、可以很容易的用新的实现来替换原有层次的实现;
  3、可以降低层与层之间的依赖(高内聚,低耦合)
  4、有利于标准化;
  5、利于各层逻辑的复用
  
缺点:
 1、降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。
  2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。

网络图片

网络图片
网络图片

作者:张中华