惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Forbes - Security
Forbes - Security
T
Tailwind CSS Blog
Hugging Face - Blog
Hugging Face - Blog
Blog — PlanetScale
Blog — PlanetScale
WordPress大学
WordPress大学
aimingoo的专栏
aimingoo的专栏
Y
Y Combinator Blog
U
Unit 42
I
InfoQ
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
V
Visual Studio Blog
B
Blog RSS Feed
Vercel News
Vercel News
F
Fortinet All Blogs
Know Your Adversary
Know Your Adversary
T
Troy Hunt's Blog
博客园 - 【当耐特】
MongoDB | Blog
MongoDB | Blog
大猫的无限游戏
大猫的无限游戏
A
About on SuperTechFans
Jina AI
Jina AI
小众软件
小众软件
T
Threatpost
有赞技术团队
有赞技术团队
人人都是产品经理
人人都是产品经理
The Hacker News
The Hacker News
T
The Exploit Database - CXSecurity.com
C
CXSECURITY Database RSS Feed - CXSecurity.com
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Microsoft Azure Blog
Microsoft Azure Blog
Recent Announcements
Recent Announcements
酷 壳 – CoolShell
酷 壳 – CoolShell
Scott Helme
Scott Helme
B
Blog
腾讯CDC
Last Week in AI
Last Week in AI
P
Proofpoint News Feed
S
Schneier on Security
N
News and Events Feed by Topic
Microsoft Security Blog
Microsoft Security Blog
K
Kaspersky official blog
G
Google Developers Blog
T
Tor Project blog
PCI Perspectives
PCI Perspectives
S
Secure Thoughts
Google Online Security Blog
Google Online Security Blog
Latest news
Latest news
Google DeepMind News
Google DeepMind News
MyScale Blog
MyScale Blog
罗磊的独立博客

博客园 - 风焰庄主

React中,useContext+useReducer对比Redux React中,useReducer和useState python, C++, C# 计算速度简单对比 .net程序在64位系统上报 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序 问题解决 DropBox把目录设置在U盘里面的方法 工作过公司的体会--结构完整的企业其实还是挺吸引人的 努力与付出 微软用于写Javascript的一个插件,Script# 项目管理的一点想法 介绍一况挺好用的Javascript编辑器(带项目) 简单的C#进行图片操作 PHP访问C#建立的Webservice 搜索引擎一:介绍 纪念一下Jerry 在中信66楼微软Offic参加讲座 关于地理信息信息点数据采集一些方法 介绍一下JS调试和浏览器调试工具 服务器不支持WebResource.axd的特殊处理 嫦娥一号发射
对三层架构的简单改进
风焰庄主 · 2014-01-23 · via 博客园 - 风焰庄主

  三层架构是很常见的架构方式,被很多公司所使用,特别是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( );

}

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