刚刚开始接触三层的时候,我只做了两个登录小窗体的例子。画了简单的包图,可以说,为后面机房重构留下了大量的工作(因为三层理解没有深度,也没有理解出自己的东西)。不过,欠下的总要还的。在做机房重构的时候,问题出现了。如果只用三层+实体,我能做出来,但是,要求重构不能只用三层+实体,那么,就要好好分析一下了。
首先说说三层+实体:就是表现层(U层)直接调用业务逻辑层(B层)的逻辑,业务逻辑层在直接访问数据层(D层),在把数据返回到B层后返回到U层。首先,只用三层+实体做程序时,灵活性不够高。如果想换数据库的话,需要大量改动B层的代码。其次,代码利用率不高,像访问数据库的一些代码,多次重复。
既然不好,就有必要寻找新的方法。B层直接访问D层不好,怎么办呢?用接口。这样,如果更换数据库,只要把D层进行修改或者在连接新的D层,而不用更改B层的代码了,实现“高内聚,低耦合”。U层直接访问B层,U层需要知道B层的就太多了,耦合性太高。我们的系统简单,一个上机窗体里面就两个主要功能,但是一个窗体上面内容多的话,那U层和B层的对应关系不是很乱了么?这时外观就出动了。如果U层通过外观访问B层的话,可以避免这一问题。
那么,又为什么要使用SQLHelper呢?其实,SQLHelper是一个工具,主要是为了规范代码和减少代码编写,如果想了解更多,可以参看另一篇博客:SQLHelper
下面是我画的由三层+实体到三层+实体+外观+接口+工厂+SQLHelper的包图,欢迎指正
小结:首先,无论在学什么知识的时候,即使很简单,也要小结几句,否则下次想用时,无从下手,三层就是个活例子。其次,多请教,多交流,对于不会的东西,勤于动手,等待是解决不了问题的。再次,对于三层这块,只要通了,感觉就好多了,刚刚开始做包图的时候,真的是无从下手,即使给你现成的图,也会有看不懂以及为什么会是这个样子的疑问(我相信不止我自己有这种感觉)。我建议,如果出现这种情况,先放一放图,试着通过代码,了解一下这个过程,虽然可能有点难度,但是总比停下来或者揪住一点不放要好的多。
PS:欢迎指正,不胜感激!
分享到:
相关推荐
某个培训机构写的SQLHelper,现在分享出来,基于三层架构写的SQLHelper文件,包含标准SQL,参数化和存储过程
SQLHelper 三层架构 C# 开发技术 详解 数据访问层
三层B/S数据库访问层两个通用类文件ClassBase.cs(获取数据库中连接字符串)+SqlHelper.cs(封装数据库访问方法)注意修改配置文件中的数据库访问串
SQL SQLHelper 三层 Code codeSmith 模板 三层模板 根据最新的Pet Shop提供的SQLHelper
SqlHelper.cs工厂类专用经典类
SqlHelper,SqlHelper C#SQL工具包
模拟百度分页 写的不怎么样,请高手多少指教。 使用了SQLHelper类读取数据。
微软SqlHelper(原版+中文注释版)
SQLHelper类源代码和简单教材(BTW 为什么资源描述非要大于20个字符呢?)
自己做的C#三层生成器,里面有代码及备注,自己想做生成器的也可以参考
韩顺平 视频 里面 连接数据库的通用 sqlHelper 工具包,sqlhelper DBUtil 配置文件
结合我帖子 VB.NET SQLHelper 类使用
里面已经打包好Sql数据库操作类,和Oledb的操作类,只需要引用这个dll后,在webconfig(或appconfig)的connectionstrings字段或者appsetting字段里配置一个名为...DBHelper.SqlHelper.方法 DBHelper.OledbHelper.方法
SqlHelper是一个基于.NET Framework的数据库操作组件。组件中包含数据库操作方法,SqlHelper有很多版本,主要以微软一开始发布的SqlHelper类,后面包含进了Enterprise Library开源包中了。还有一个主要版本是...
SQLHelper类(含完整中文注释)-免费共享
SqlHelper 类实现详细信息SqlHelper 类用于通过一组静态方法来封装数据访问功能。
// SQLHelper.cs // // This file contains the implementations of the SqlHelper and SqlHelperParameterCache // classes. 这个文件实现了SqlHelper类和SqlHelperParameterCache类 //其中SqlHelper类执行各种方式...
C# Sqlhelper 简单的sqlhelper 类
sqlhelper
sqlhelper类,可以在做项目时参考,这个类里没有什么错误,适合.net+SQL