三层架构学习

图解建立三层架构

:下面我们建立一个名为ShopStore的项目,采用三层构架:
1.新建立一个空白解决方案文件,如下图:

2.此时解决方案中没有任何项目.

3.右键选择解决方案--选择添加新项目--选择类库(新建DataAccess项目)

4.重复以上步骤,依次建立三个类库项目,分别是:DataAccess数据访问层,Bussiness业务逻辑层,Common公共层(一些公共类、方法)
5.新建asp.net项目(网站),即表示层

6.到此项目建立完成,解决方案如下图:

在windows资源管理器中如下图:

 

最简单,最适合入门学习的三层架构例子:

在发表文章之前,首先感谢51aspx,经常潜水的我,默默地“偷窥”地51aspx的技术文章,精品学习源码等等..
本人作为一个程序的爱好者,深感到程序学习是:入门容易,进阶难!(开始说正题 )有很多入门学者在为三层架构感到困惑,不知三层架构如何实现,现在本人详细地详一个简单的例子来说明三层架构的实现,至于三层架构是什么原理,51aspx老大说得很详细了,本人不再重复。

1.打开VS2008后,文件-->新建-->项目-->其他项目类型-->Visual Studio 解决方案-->空白解决方案 就起名为:MvcTest 吧

2.建立如图的项目,并在WEB-->App_Data建一个数据文件 DabaBase.mdf 里面建表:qzzm_user 表内:字段Name,类型:nvarchar(50)

3.在WEB中引用BLL,Model层新建Post.aspx

<%@ Page Language=&amp;amp;quot;C#&amp;amp;quot; AutoEventWireup=&amp;amp;quot;true&amp;amp;quot; CodeFile=&amp;amp;quot;Post.aspx.cs&amp;amp;quot; Inherits=&amp;amp;quot;Post&amp;amp;quot; %>
<!DOCTYPE html PUBLIC &amp;amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;amp;quot; &amp;amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;amp;quot;>
<html xmlns=&amp;amp;quot;http://www.w3.org/1999/xhtml&amp;amp;quot;>
<head runat=&amp;amp;quot;server&amp;amp;quot;>
    <title>无标题页</title>
</head>
<body>
    <form id=&amp;amp;quot;form1&amp;amp;quot; runat=&amp;amp;quot;server&amp;amp;quot;>
    <div>
   
        <asp:TextBox ID=&amp;amp;quot;tb_name&amp;amp;quot; runat=&amp;amp;quot;server&amp;amp;quot;></asp:TextBox>
 
        <asp:Button ID=&amp;amp;quot;btn_post&amp;amp;quot; runat=&amp;amp;quot;server&amp;amp;quot; onclick=&amp;amp;quot;btn_post_Click&amp;amp;quot; Text=&amp;amp;quot;提交&amp;amp;quot; />
   
    </div>
    </form>
</body>
</html>



Post.aspx.cs 先搁下等写好类库再写

4.在Model 实体类中新建一个user.cs的类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Model
{
    public class user
    {
        public user() { }
        private string _Name;
        public string Name
        {
            set { _Name = value; }
            get { return _Name; }         
        }
    }
}



5.在DAL新建userdb.cs,并引用Model层

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Configuration;
namespace DAL
{
    public class userdb
    {
        public bool adduser(Model.user model)
        {
            SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings[&amp;amp;quot;sqlconn&amp;amp;quot;].ConnectionString);
            con.Open();
            using (SqlCommand cmd = new SqlCommand(&amp;amp;quot;INSERT INTO qzzm_user(Name) VALUES(@Name)&amp;amp;quot;, con))
            {
            cmd.Parameters.AddWithValue(&amp;amp;quot;@Name&amp;amp;quot;, model.Name);
            if (cmd.ExecuteNonQuery() > 0)
                return true;
            else return false;
            }
        }
    }
}



6.在BLL中新建userbll.cs并引用DAL,Model层

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BLL
{
    public class userbll
    {
        DAL.userdb db = new DAL.userdb();
        public bool adduser(Model.user model)
        {
            return db.adduser(model);
        }
    }
}



7.可以开始写Post.aspx.cs了

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
public partial class Post : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }
    protected void btn_post_Click(object sender, EventArgs e)
    {
        Model.user us = new Model.user();
        us.Name = tb_name.Text;
        BLL.userbll ub = new BLL.userbll();
        ub.adduser(us);
    }
}



8.补充之前少写的Web.config的数据链接字符串

<connectionStrings>
  <add name=&amp;amp;quot;sqlconn&amp;amp;quot; connectionString=&amp;amp;quot;Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True&amp;amp;quot; providerName=&amp;amp;quot;System.Data.SqlClient&amp;amp;quot;/>
</connectionStrings>



最后,说下各层的引用关系:
1) WEB引用 DAL,Model
2)BLL引用 DAL,Model
3)DAL引用Model
4)Model无引用

拓展说明:本小例子只是从三层思路考虑,对业务逻辑层没有写特别的代码,只用来引用DAL,大家可以根据51aspx.com中的一些三层留言本来进行学习,便可写出更好的三层代码..到此结束吧,最后附上本人的源代码方便大家浏览.(P.S源代友中有个Utility类库是用来显示信息的,可能类库命名错了 ,同时希望51aspx老大给文章加个精~)

源码下载地址:http://www.51aspx.com/CV/MVCTest

 

 

 

 

理解ASP.NET中的三层中的DAL、BLL和USL

一、三层体系架构  1.表示层(USL):主要表示WEB方式,也可以表示成WINFORM方式。如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能完善地提供服务。
  2.业务逻辑层(BLL):主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理。如果说数据层是积木,那逻辑层就是对这些积木的搭建。
  3.数据访问层(DAL):主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务51aspx。



  二、具体区分
  1.表示层:主要对用户的请求接受,以及数据的返回,为客户端提供应用程序的访问。
  2.业务逻辑层:主要负责对数据层的操作,也就是说把一些数据层的操作进行组合。
  3.数据访问层:主要看你的数据层里面有没有包含逻辑处理,实际上他的各个函数主要完成各个对数据文件的操作,而不必管其他操作。
  三、总结
  三层结构是一种严格分层方法,即数据访问层只能被业务逻辑层访问,业务逻辑层只能被表示层访问,用户通过表示层将请求传送给业务逻辑层,业务逻辑层完成相关业务规则和逻辑,并通过数据访问层访问数据库获得数据,然后按照相反的顺序依次返回将数据显示在表示层。有的三层结构还加了Factory、Model等其他层,实际都是在这三层基础上的一种扩展和应用(Add By 51aspx)。
posted @ 2008-10-06 17:03  XGU_Winner  阅读(365)  评论(0编辑  收藏  举报