Asp.net DAL和BLL首选设计模式方法
我正在开发一些小型ASP.NET应用程序,并想知道什么模式.你在项目中使用的方法吗?
我的项目涉及数据库,使用数据访问和业务逻辑层. 到目前为止我使用的数据访问方法如下(我在一些书中读到并喜欢它): 对于DAL层: 创建一个实现这个抽象类的类,实现将根据使用的数据库(SQL,mySQL等). 对于BLL层: 这是一个好方法吗? 解决方法
通过使用静态类方法,您将隐藏对这些组件的依赖关系并在将来限制您的选项(例如,您不能将业务层子类化).
不要将单例和静态方法用于数据访问和业务层,而是考虑更改业务层类以要求数据访问实例,并在顶级应用程序中保留业务层的单个实例: public class Global HttpApplication { // This would really be a property // It's also unfortunate this has to be static,but you're stuck with // default constructors for ASP.NET pages,so there's no alternative. public static BusinessLayerClass BusinessLayer; protected void Application_Start(object sender,EventArgs e) { AbstractDataAccessLayer dataAccess = new ConcreteDataAccessLayer(); Global.BusinessLayer = new BusinessLayerClass(dataAccess); } } 然后页面使用它像这样: public void PerformSomeBusinessFunction() { Global.BusinessLayer.DoSomething(); } 这很明显,您的业务层需要数据访问,提供了一个方便的位置来指定它将使用哪种类型的数据访问对象,并为您在必要时使用不同的创建策略铺平了道路.例如,您可能提供数据访问工厂,而不是在所有业务层中共享单个实例. 这里的一般原则称为“dependency injection”(有时它被称为“控制反转”,这是DI背后更普遍的原则.) 如果这个dependency injection by hand开始变得麻烦,可以考虑使用a dependency injection framework(人们也称这些“IoC容器”). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 存储库模式 – MVC店面
- c#中@标志的作用
- asp.net-mvc-3 – 剃刀不能轻松地使用强类型的Html.ActionL
- asp.net-mvc – 在PasswordSignInAsync成功后,User.Identit
- asp.net – 我的HTML5的doctype是否必须在第一行?
- asp.net确保javascript只加载一次
- asp.net-web-api – ASP.NET Web API IQueryable挑战
- 覆盖ASP.NET WebMethod参数的DateTime序列化
- 在Asp.Net MVC View中使用dropdownlistfor和foreach?
- asp.net – 如何在Web应用程序中检测手机