您的位置:首页 > 编程语言 > ASP

用VS建立 ASP.NET多层架构 (bll、model、dal、dbutility)彼此间的引用及关系

2015-09-25 14:12 826 查看
最近开发一个项目需要用到ASP.NET,由于之前一直做前端,刚接触后台,被虐得不要不要的。

查了很多资料,才对ASP.NET多层架构有了稍微清晰的了解。在此码字,有不对的地方希望各路大神多多指导~



首先,先看看常常提及的 三层模型  
是什么鬼!

三层可以说是一个概念吧。

举个栗子!

以“三苏”(苏轼、苏辙、苏洵)来比喻这个模型吧!

业务(BLL)层 是苏洵(苏轼、苏辙他爹),UI层和DAL层分别是苏轼和苏辙。

苏轼想找他弟出去玩,必须得先通过老子的同意,老子同意了再告知小儿子跟他哥出去玩~

真实情况:用户(UI)层调用业务(BLL)层,Bll再去调用数据访问层(Dal)   换句话说,BLL是DAL(Data Access Layer,数据访问层)和UI(User Interface)层的连接桥梁

作为业务层,肯定不单单是个摆设,BLL层还有返回结果,达到用户交互的功能。如下例:

namespace BLL

class 用户BLL

{

添加结果 AddUser(用户实体)

{

if(!检查用户名是否合法(用户实体.用户名))return 用户名非法;

if(!检查用户密码是否合法(用户实体.密码))return 密码非法;

if(!DAL.检查用户是否存在(用户实体.用户名))return 用户名已经存在;

int 新用户ID=DAL.添加用户记录(用户实体);

if(新用户ID>0)return 用户添加成功;

else reutrn 数据库访问出现错误!

}



Model层   DBUtility层又是什么鬼?

Model层一般用于创建一些实体类,根据自己设计的数据库表单或者数据字典创建相关实体类就行了

public string ContractType
{
set { contracttype = value; }
get { return contracttype; }
}

public string ContractDate
{
set { contractdate = value; }
get { return contractdate; }

/// <summary>
/// 新增一条数据
/// </summary>
public int Add(SVM.Model.PurchaseUser model)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("insert into tb_purchase_user(");
strSql.Append("UserID,UserName,Password,MailAddress,CompanyName,TeamName,Remark,IsFreeze,CreateUser,CreateDate,LastUser,LastDate,pk_user,dr)");
strSql.Append("values(");
strSql.Append(":UserID,:UserName,:Password,:MailAddress,:CompanyName,:TeamName,:Remark,:IsFreeze,:CreateUser,:CreateDate,:LastUser,:LastDate,:pk_user,:dr)");

OracleParameter[] parameters = {
new OracleParameter(":UserID", OracleType.NVarChar,50),
new OracleParameter(":UserName", OracleType.NVarChar,50),
new OracleParameter(":PassWord", OracleType.NVarChar,50),
new OracleParameter(":MailAddress", OracleType.NVarChar,200),
new OracleParameter(":CompanyName", OracleType.NVarChar,50),
new OracleParameter(":TeamName", OracleType.NVarChar,50),
new OracleParameter(":Remark", OracleType.NVarChar,50),
new OracleParameter(":IsFreeze", OracleType.NVarChar,1),
new OracleParameter(":CreateUser", OracleType.NVarChar,50),
new OracleParameter(":CreateDate", OracleType.DateTime),
new OracleParameter(":LastUser", OracleType.NVarChar,50),
new OracleParameter(":LastDate", OracleType.DateTime),
new OracleParameter(":pk_user", OracleType.NVarChar,50),
new OracleParameter(":dr", OracleType.Int32,4)
};
parameters[0].Value = model.UserID;
parameters[1].Value = model.UserName;
parameters[2].Value = model.Psssword;
parameters[3].Value = model.MailAddress;
parameters[4].Value = model.CompanyName;
parameters[5].Value = model.TeamName;
parameters[6].Value = model.Remark;
parameters[7].Value = model.IsFreeze;
parameters[8].Value = model.CreateUser;
parameters[9].Value = model.CreateDate;
parameters[10].Value = model.LastUser;
parameters[11].Value = model.LastDate;
parameters[12].Value = model.pk_user;
parameters[13].Value = model.Dr;

int obj = DbHelperOra.ExecuteSql(strSql.ToString(), parameters);
return obj;

}
/// <summary>
/// 更新一条数据
/// </summary>
public bool Update(SVM.Model.PurchaseUser model)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("update tb_Puchase_user set");
strSql.Append("UserID=:UserID,");
strSql.Append("UserName=:UserName,");
strSql.Append("Psssword=:Psssword,");
strSql.Append("MailAddress=:MailAddress,");
strSql.Append("CompanyName=:CompanyName,");
strSql.Append("TeamName=:TeamName,");
strSql.Append("Remark=:Remark,");
strSql.Append("IsFreeze=:IsFreeze,");
strSql.Append("CreateUser=:CreateUser,");
strSql.Append("CreateDate=:CreateDate,");
strSql.Append("LastUser=:LastUser,");
strSql.Append("LastDate=:LastDate,");
strSql.Append("pk_user=:pk_user,");
strSql.Append("dr=:dr");
strSql.Append("where pk_user=:pk_user");

OracleParameter[] parameters = {
new OracleParameter(":UserID", OracleType.NVarChar,50),
new OracleParameter(":UserName", OracleType.NVarChar,50),
new OracleParameter(":Psssword", OracleType.NVarChar,50),
new OracleParameter(":MailAddress", OracleType.NVarChar,200),
new OracleParameter(":CompanyName", OracleType.NVarChar,50),
new OracleParameter(":TeamName", OracleType.NVarChar,50),
new OracleParameter(":Remark", OracleType.NVarChar,50),
new OracleParameter(":IsFreeze", OracleType.NVarChar,1),
new OracleParameter(":CreateUser", OracleType.NVarChar,50),
new OracleParameter(":CreateDate", OracleType.DateTime),
new OracleParameter(":LastUser", OracleType.NVarChar,50),
new OracleParameter(":LastDate", OracleType.DateTime),
new OracleParameter(":pk_user", OracleType.NVarChar,50),
new OracleParameter(":dr", OracleType.Int32,4)

};
parameters[0].Value = model.UserID;
parameters[1].Value = model.UserName;
parameters[2].Value = model.Psssword;
parameters[3].Value = model.MailAddress;
parameters[4].Value = model.CompanyName;
parameters[5].Value = model.TeamName;
parameters[6].Value = model.Remark;
parameters[7].Value = model.IsFreeze;
parameters[8].Value = model.CreateUser;
parameters[9].Value = model.CreateDate;
parameters[10].Value = model.LastUser;
parameters[11].Value = model.LastDate;
parameters[12].Value = model.pk_user;
parameters[13].Value = model.Dr;

int rows = DbHelperOra.ExecuteSql(strSql.ToString(), parameters);
if (rows > 0)
{
return true;
}
else
{
return false;
}
}

DBUtility层只是约定俗成的一个分类法,不是必须的。DBUtility包含的是访问数据库的通用代码。一旦写好,就可以不变。一般里面都放DbHelperOra.cs这样的类在里面,由DAL中的数据访问类来调用。

【DbHelperOra.cs类(可参考以下链接)http://www.codefans.net/articles/256.shtml】



它们之前的引用(按需引用)及关系大概可以如图所示:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息