摘要:转载自http://www.csharplovers.com/?cat=16
一、.NET三层架构概念讲解
三层架构是基于模块化程序开发思想发展而来,也即将程序分块,可以降低模块之间的耦合度提高模块的重用性。当某一层发生变化时,其它层不受影响,单独修改变化的这层即可。三层结构一般分为:数据处理层(DAL)、业务逻辑层(BLL)和表现层(UI);当业务逻辑发生变化时,不必修改数据层,从而可以方便地进行模块重构和维护。下面用图介绍一下他们之间的关系:
UI层就是与用户交互的界面、用户通过UI层向BLL层发出请求,BLL层再向DAL层发出请求,DAL链接数据库将所要的数据取出,再返回给业务逻辑层,BLL层对数据进行相应处理后呈现在界面上给用户。
后面将通过vs2010来演示如何搭建三层架构及通过三层架构实现系统注册功能来让大家更好地理解三层结构。
讲过三层架构的大致概念,UI调用BLL,BLL再调用DAL,下面就来显示一下,如何搭建一个简单三层架构(webfom为例),采用vs2010,当然在2008或其他版本中搭建一样。
1、打开vs2010,依次选择文件--新建--项目,打开如下面所示窗口,选择asp.net web 应用程序,取个名字,这里叫“三层搭建”
2、项目建好后,我们在右击“解决方案” -添加--新建项目,打开窗口如图,选择“类库”,再取个名“DAL”
3、DAL类库建好后,右击--生成,然后找到你存放项目的地方,打开文件夹DAL-bin-debug,是否就可以看到一个叫DAL.dll(动态链接库)的文件
4、同样的方法,在添加一个BLL类库。
5、下面就开始按照前面所讲的调用关系为三层添加引用关系,如图:在“引用”上右键--添加引用,打开下面的窗口
选择“项目”,BLL,确定,UI层调用BLL层就完了,用同样的方法,让BLL层调用DAL层。
6、最后,我们咱开UI层的引用,是不是就可以看到BLL了,在程序里面加入,using BLL,就可以调用我们写在BLL里的类和方法了,这你不是很熟悉了呢,像平时系统自动添加的Using System之类的,只不过这些是系统类库,已经定义好了,而BLL是我们自己写的类库而已。
记住:在类库类定义好类以后,记得生成一下...后面将使用三层来写一个系统注册的例子来让大家更好的理解三层的工作机制
三、采用三层架构实现用户注册
我们下面就利用搭好的三层架构来实现用户注册:
首先,我们在default.aspx页面上拖入些控件,这里仅用用户名,和密码两个字段,数据库自己建立,这里就不给了
html代码如下:
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1" runat="server">
<div>
用户名:<asp:TextBox ID="txtName" runat="server"></asp:TextBox>
<br />
密 码:<asp:TextBox ID="txtPwd" runat="server"></asp:TextBox>
<br />
<asp:Button ID="Button1" runat="server" οnclick="Button1_Click" Text="注册" />
</div>
</form>
</body>
</html>
紧接着在DAL下新建类registerServer,并写一个插入数据的方法,代码如下:
using System.Data.SqlClient;
namespace DAL
{
public class registerServer
{
public static bool insertUserServer(string name, string password)
{
SqlConnection con = new SqlConnection("server=(local);database=meeting;uid=sa;pwd=''");//数据库连接串,根据你自己的情况改动
string sql = "insert users values('"+name+"','"+password+"')";
SqlCommand cmd = new SqlCommand(sql, con);
try
{
con.Open();
cmd.ExecuteNonQuery();
con.Close();
return true;
}
catch
{
return false;
}
}
}
}
接下来在BLL层写入下列代码,调用DAL,
using DAL;
namespace BLL
{
public class registerManager
{
public static bool insertUserManager(string name,string password)
{
return registerServer.insertUserServer(name,password );
}
}
}
最后双击页面上的确定按钮,输入下面的代码:
using BLL;
namespace 三层
{
public partial class _Default : System.Web.UI.Page
{
protected void Button1_Click(object sender, EventArgs e)
{
string name = txtName.Text;
string pwd = txtPwd.Text;
bool k = registerManager.insertUserManager(name, pwd);
if(k)
Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript'>alert('注册成功!');</script>");
else
Page.ClientScript.RegisterStartupScript(Page.GetType(), "message", "<script language='javascript'>alert('注册失败!');</script>");
}
}
}
这样一个简单的三层注册就完成了,运行看下效果呢,当然,及这些代码还有许多改进的地方,比如,数据库连接串一般放在webconfig配置文件中,数据库的增删查改等方法也是单独写入一个类中,这样方便在不同的地方进行调用,这里为了简化,并没有这样做,你可以自己试试....
为了更好的理解,建议自己动手写全部的代码,不要粘贴我得哟!