对三层架构的简单改进
2014-01-23 01:12
134 查看
三层架构是很常见的架构方式,被很多公司所使用,特别是asp.net。优点是使用简单,缺点是BLL层与DAL层经常会很多重复。
今天不是要讨论它的优缺点,而是讨论使用它时存在的问题。
我们在使用过程中,BLL层一般不会用来存储持久化的变量,而且BLL经常被这样使用的:
图1:DAL,BLL和Page的关系
这就有个问题,如果有十个页面需要访问这个类,那么就需要创建十次这个变量。如果同时有一千人在访问,那可能是一万个BLL对象。还有,每个BLL对象,还要new一个DAL对象……
当然,.net也不见得会这么傻,毕竟还有共用,垃圾回收机制等等。可是,我们真的有必要这么做吗?
由于BLL对象一般不是用来储存持久化变量,里面只有一些逻辑方法,那么我们是否可以只创建一次BLL对象,而且是所有浏览的用户都使用同一个对象呢?
当然是可以的,什么单例模式,什么工厂模式……今天,我们学一下 DataRow,也来使用一个自己的方式。
图2:改进的设计
我们使用BLLCreator来创建唯一的一个静态的SomeBLL。
搞定。以后无论多少人访问,永远是一个对象。当然,如果想用泛型什么的,自由发挥了。
今天不是要讨论它的优缺点,而是讨论使用它时存在的问题。
我们在使用过程中,BLL层一般不会用来存储持久化的变量,而且BLL经常被这样使用的:
SomeBLL bll=new SomeBLL( ); bll.doSomething( );
图1:DAL,BLL和Page的关系
这就有个问题,如果有十个页面需要访问这个类,那么就需要创建十次这个变量。如果同时有一千人在访问,那可能是一万个BLL对象。还有,每个BLL对象,还要new一个DAL对象……
当然,.net也不见得会这么傻,毕竟还有共用,垃圾回收机制等等。可是,我们真的有必要这么做吗?
由于BLL对象一般不是用来储存持久化变量,里面只有一些逻辑方法,那么我们是否可以只创建一次BLL对象,而且是所有浏览的用户都使用同一个对象呢?
当然是可以的,什么单例模式,什么工厂模式……今天,我们学一下 DataRow,也来使用一个自己的方式。
图2:改进的设计
我们使用BLLCreator来创建唯一的一个静态的SomeBLL。
public class BLLCreator { private static SomeBLL _someBll; public static SomeBLL CreateSomeBLL( ) { if(_someBll == null) { _someBll = new SomeBLL( ); } return _someBll; } } public class SomeBLL() { private SomeDAL someDal = new SomeDAL( ); protected internal SomeBLL() { // todo something init here } public void doSomething() { } } public class Page1:WebPage { SomeBLL someBll = BLLCreator.CreateSomeBLL( ); someBll.doSomething( ); }
搞定。以后无论多少人访问,永远是一个对象。当然,如果想用泛型什么的,自由发挥了。
相关文章推荐
- c#利用三层架构做一个简单的登录窗体
- Unity V3 初步使用 —— 为我的.NET项目从简单三层架构转到IOC做准备
- Unity V3 初步使用 —— 为我的.NET项目从简单三层架构转到IOC做准备
- asp.net 2.0 三层架构的实现(最最原始,简单,一般, 但不平凡)用通俗的语言说出难以理解的。。。
- 使用objectdatasource结合数据绑定控件进行简单三层架构的开发
- 三层架构(MVC)实现简单登陆注册验证(含验证码)
- 使用objectdatasource结合数据绑定控件进行简单三层架构的开发
- 大型app开发,推荐三层架构,而不是简单的MVC
- 使用objectdatasource结合数据绑定控件进行简单三层架构的开发
- 一个简单实用的,基于EF的三层架构
- 一个简单的LINQ TO SQL的三层架构的例子
- 使用objectdatasource结合数据绑定控件进行简单三层架构的开发
- asp.net 2.0 三层架构的实现(最最原始,简单,一般, 但不平凡)
- 简单三层架构项目二
- 第一个简单三层架构(传智播客整理)
- MVC与简单三层架构
- 原:使用objectdatasource进行简单三层架构的开发 , 并实现Repeater现删改查
- 使用objectdatasource结合数据绑定控件进行简单三层架构的开发
- 简单三层架构2
- vb.net 简单登录界面(三层架构思想)