.NET解析网站三层架构
来源:互联网 发布:知无涯者拉马努金传 编辑:程序博客网 时间:2024/05/02 02:40
在MS.NET里,ASP.NET有项技术叫Code Behind,它默认已经提供了二层。比如建立一个网页文件.aspx后就自动有一个.cs文件与之匹配,这里.aspx就是界面表示层而.cs就是业务逻辑层。
那么三层架构无非是多抽象了一层数据访问层,把所有和数据库打交道的方法都封装到了数据访问层这个抽象类中。以下我举个简单的例子来描述什么是三层架构,界面层就不说了。
一、简单的数据访问层
public class Admin
{
public static bool Insert(string userName,string userPass)
{
//数据库连接字符串
SqlConnection conn=new SqlConnection("...");
//SQL语句操作
SqlCommand cmd=new SqlCommand("insert into admin ...",conn);
//SQL语句参数
SqlParameter parm1=new SqlParameter("@User",SqlDbType.VarChar,50);
parm1.Value=userName;
...
conn.Open();
//执行SQL语句操作
cmd.ExecuteNonQuery();
conn.Close();
}
public static bool Update(…)
}
以上抽象了一个Admin类,类中有个静态方法Insert,业务逻辑层如果要调用这个层的方法,只要Admin.Insert(this.tbUser.Text,this.tbPass.Text);
二、简单的业务逻辑层
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox TextBox1;
protected System.Web.UI.WebControls.TextBox TextBox2;
protected System.Web.UI.WebControls.Button Button1;
private void Button1_Click(object sender, System.EventArgs e)
{
string userName=this.TextBox1.Text;
string userPass=this.TextBox2.Text;
Admin.Insert(userName,userPass);
}
}
三、改进的数据访问层
心细的读者会发现,上面的抽象类Admin里每个方法都要写SqlConnection、SqlCommand这样的效率是不高的,那么如何来改进呢?答案是再多一个加工类,把日常的数据库操作都封装进去!比如PetShop3.0提供的一个SQLHelper类,那么Admin类中的方法就可以这么写
public class Admin
{
public static bool Insert(string userName,string userPass)
{
string sql=”insert into admin…”;
SqlParameter[] parm=new SqlParameter[2];
parm[0]= new SqlParameter("@User",SqlDbType.VarChar,50);
parm[0].Value=userName;
...
//SQLHelper.ExecuteNonQuery实现SqlCommand的ExecuteNonQuery功能
//SQLHelper.CONN_STRING是数据库连接字符串
SQLHelper.ExecuteNonQuery(SQLHelper.CONN_STRING,sql,…);
}
public static bool Update(…)
}
四、再改进的数据访问层
假如有这样的情况,如果上面的Admin类中的Insert方法,参数很多,大于5个,那么业务逻辑层要传递参数时要一个一个传咯?这样显然很不好!不过也好办!再抽象一个类把所有参数封装起来(就象C中的结构体)那么Admin类的方法就变为
public class Admin
{
public static bool Insert(AdminInfo adminInfo)
{
string sql=”insert into admin…”;
SqlParameter[] parm=new SqlParameter[2];
parm[0]= new SqlParameter("@User",SqlDbType.VarChar,50);
parm[0].Value=adminInfo.userName;
SQLHelper.ExecuteNonQuery(SQLHelper.CONN_STRING,sql,…);
}
public static bool Update(…)
}
上面实现了最简单的数据访问层以及稍微改进的数据访问层,这样一个三层架构就实现了。比如一个用户想插入一个新Admin信息到数据库,其一般的执行过程是:
(1) 用户在界面输入用户名和密码 点提交
(2) 这时到了业务逻辑层,它接受并处理该业务。具体是把界面层传递过来的参数打包封装并传递给数据访问层,然后调用其数据访问层方法
(3) 数据访问层通过于数据库的交互完成用户的操作,并返回操作结果给上一层
目前还有一些工程是四层、五层、N层的。还可以再封装一个数据层接口层与接口工厂类,可以实现完全对数据库透明,即不管数据库采用Sql Server还是Oracle,只要在Web.config里写一个字符串来辨别即可自动转接。微软著名的PetShop3.0就是一个完全典型的三层架构经典,有兴趣的可以去研究下,保证受益非浅!
- .NET解析网站三层架构
- .NET解析网站三层架构
- .NET三层架构解析
- .net 网站(MVC)三层架构实践代码
- ASP.NET三层架构网站之创建
- ASP.net搭建三层架构网站
- 步步为营 .NET三层架构解析系列总结
- 【ASP.NET开发】.NET三层架构简单解析
- Asp.net 2.0开发网站中的三层架构
- ASP.NET实现三层架构网站创建流程
- 解析三层架构
- .NET三层架构解析之Model四种设计方式
- .Net 三层架构资料
- .NET三层架构应用
- .NET三层架构
- 什么是.net三层架构
- .net三层架构
- .net三层架构
- js取select的text值
- SqlMapConfig.xml是ibatis连接数据库的配置文件
- ASP.NET中实时图表的实现
- JS制作下拉菜单
- 数据结构:最小堆/哈希表/二叉树/平衡二叉树/红黑树的意义(什么情况下使用)
- .NET解析网站三层架构
- 临近毕业
- css网页设计
- 管中窥豹,从缩略图功能看论坛的发展
- 开博了
- 通过BEGIN_COM_MAP看接口的三剑客的实现和调用(AC8)
- 网页CSS样式表设计十条技巧
- SQL操作全集
- 知识点