用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层还有返回结果,达到用户交互的功能。如下例:
Model层一般用于创建一些实体类,根据自己设计的数据库表单或者数据字典创建相关实体类就行了
/// <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】
查了很多资料,才对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】
它们之前的引用(按需引用)及关系大概可以如图所示:
相关文章推荐
- 分享微信开发Html5轻游戏中的几个坑
- 如何成为一名专家级的开发人员
- 架构纵横谈之二 ---- 架构的模式与要点
- 异步流程控制:7 行代码学会 co 模块
- [译] React 入门
- 星外ASP.Net的安全设置相关说明
- BS项目中的CSS架构_仅加载自己需要的CSS
- C#、ASP.NET通用扩展工具类之TypeParse
- 关于三种主流WEB架构的思考
- C#、ASP.NET通用扩展工具类之LogicSugar
- C#、ASP.NET通用工具类IsWhat?(可以判断数字、身份证、数据类型等等)
- 程序中常用的种代码
- Android操作系统的架构设计分析
- ASP.NET、ASP、PHP、JSP之间有什么区别?
- ASP.NET页面间的传值的几种方法
- 入侵ASP.net网站的经验附利用代码
- asp.net OleDbCommand 的用法
- jquery调用asp.net 页面后台的实现代码
- asp.net中XML如何做增删改查操作