zoukankan      html  css  js  c++  java
  • 对三层架构的简单改进

      三层架构是很常见的架构方式,被很多公司所使用,特别是asp.net。优点是使用简单,缺点是BLL层与DAL层经常会很多重复。

      今天不是要讨论它的优缺点,而是讨论使用它时存在的问题。
      我们在使用过程中,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( );
    
    }

        搞定。以后无论多少人访问,永远是一个对象。当然,如果想用泛型什么的,自由发挥了。

  • 相关阅读:
    Excel Rendering Limitations
    Output Caching and VaryByParam, VaryByCustom
    ajaxToolkit:AutoCompleteExtender 使用键值对
    Sql Server 2005 存储过程分页
    WEB前端优化
    processModel Element in Machine.config
    如何监测虚拟内存
    MemoryLimit Tuning (ASP.NET v1.1)
    缓存之SqlDependency
    SQL产生随机字符串
  • 原文地址:https://www.cnblogs.com/fyan888/p/sancengbug.html
Copyright © 2011-2022 走看看