小弟想练习一下简单的ASP.NET三层架构,在网上查找了些资料,一般有UI BLL DAL Models这几个模块,其中Models是用来存放在各层之间传递的实体对象,现在我有个疑问。这个Models是按照网上说的,将数据库中的每个表写成一个类?还是就直接用DataSet 或者 DataTable 或者 DataRow?对于前一种方法,需要写大量的增删改SQL语句,而后一种办法可以直接和UI层的控件绑定,而且可以利用一部分.NET 自动生成的增删改语句。是不是后一种办法更好?或者还有别的区别什么的?欢迎大家讨论。
protected void Button1_Click(object sender, EventArgs e)
{
List<User> Users = BLL.GetUserInfo(txtUserName.Text,txtPassword.Text);
if(Users.Length > 0)
{
Response.Write("登陆成功");
}
else
{
Response.Write("登陆失败");
}
}以下是逻辑层代码,业务逻辑层一般叫BLL
public static List<User> GetUserInfo(string user,string password)
{
string newPassword = GetMD5Hash(password); //这里对密码进行加密处理,数据库中存放的是经过MD5加密,业务逻辑层一般都是处理复杂的逻辑.例如加密逻辑
List<User> Users = DAL.GetUserInfo(user,newPassword);
return Users;
}以下是数据访问层代码,数据访问层一般叫DAL
public static List<User> GetUserInfo(string user,string password)
{
List<User> Users = new List<User>();
string sql = "select * from User where Password = '"+password+"' and User = '"+user+"'"; //写where子句的时候把Password放前面.因为Password经过加密,所以可以防止SQL注入攻击
SqlDataAdapter da = new SqlDataAdapter(sql,"这里是数据库连接字符串");
DataSet ds = new DataSet();
da.Fill(ds);
for(int i=0;i<ds.Tables[0].Rows.Count;i++)
{
User user = new User(ds.Tables[0].Rows[i]["ID"].ToString(),ds.Tables[0].Rows[i]["User"].ToString(),ds.Tables[0].Rows[i]["Password"].ToString());
Users.Add(user);
}
return Users;
}还会有一个Model层.叫做模板层.是数据表结构的印射.Model层是共用层,其他三层都要用到.
比如数据库中有张表User,里面有3个字段ID,User,Password
那么在模板层中应该有一个类,数据库中User表的一行对应一个User对象,一张表对应User对象的集合.
public class User
{
string ID;
string User;
string Password;
//重载构造函数
User(string id,string user,string password)
{
this.ID=id;
this.User=user;
this.Password=password;
}
}随便去网上搜索一下一大堆。。三层自己写下就熟悉了。。
其实现在很多工具都能生成三层架构,例如codesmith,只要将一张表的增、删、查、改的基本4个方法分为BLL、DAL、model三层的写出来作为模板,然后将项目的表全部使用此模板生成出来,一个基本项目雏形就出现了,满足基本的增删查改,当然带有业务的业务逻辑得自己手写!估计半天都不需要。
三层架构是提供了可移植性、可维护性、可复用性、能够脱离UI层在interface层上调用等优点!
按照你所说的,如果不能脱离UI层调用,就算不上分层设计了么? 其实大多数情况下不是开发,就一定按照项目的情况来决定的,不是说我们一定要用到分层架构的所有特性才能使用分层架构,而是根据自己项目的需要,来取舍的,我们要保持分层架构的优点,但是有的优点在项目中就用不上,难道我们要硬要加进去,来搪塞所谓什么是分层架构?
分层架构对开发人员来说提供的只是一个思路而已。只要满足项目的需要和将来的扩展,进行合理的设计,都可以叫做分层架构。项目是有生命长短的和局限性的,我们使用合理的架构只是延长一点项目的寿命,不过到了该重构的时候就得重构,架构的思路可以一直延续,不管语言怎么变化,环境怎么变化,我们都可以按照这样的思路做不同的项目。