【转】http://www.cnblogs.com/springyangwc/archive/2011/03/30/2000388.html

本文详细解析了三层架构的各个组成部分,包括数据库设计、SQLHelper设计、Model设计、DAL与IDAL设计、BLL设计以及UI设计,旨在帮助开发者理解和实践三层架构在.NET项目中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


======================================================
注:本文源代码点此下载
======================================================

这个系列我一共写了八篇,从什么是三层架构到一个简单的三层架构从数据库设计、sqlhelper设计、modle设计、dal设计、bll设计到ui的设计作了简单的说明,在这其中有很多读者提出了很好的意见,我很高兴,我只是把我的理解粗略的写出来分享,以此来回顾以前做过的一些项目的总结,希望自己在这其中有些启发,同时也接受读者给我的批评,来使自己有所提高。

步步为营 .net三层架构解析系列

步步为营 .net三层架构解析 一、什么是三层架构步步为营 .net三层架构解析 二、数据库设计步步为营 .net三层架构解析 三、sqlhelper设计步步为营 .net三层架构解析 四、model设计(四种设计方式)步步为营 .net三层架构解析 五、dal与idal的设计步步为营 .net三层架构解析 六、bll的设计步步为营 .net三层架构解析 七、ui的设计(登陆页面、注册页页和添加部门页面)步步为营 .net三层架构解析 八、ui的设计(gridview的设计及其分页)

感谢读者对我博客的支持和提出的宝贵的建议。源码下载

其间有些比较好的评论(个人认为),我列举下:

1、土豆烤肉

呵呵,对于复杂的项目的话,可以考虑用领域模型设计呀,这方面的开源项目也挺多的,mvc musicstore也采用了类似的设计思想吧

采用领域模型设计思想去做的话,可以将主要焦点放在领域模型及模型相关的业务逻辑上,至于数据持久化,网元交互同步,ui展示,都可以分离出来。

主要有以下几个分层:

domain层 --- 领域模型层(我使用的是充血型的模型)

infrastructure层 --- 基础层(包括模型的数据持久化,与网元交互的代理,与文件系统交互的基础类等)

task层 --- 服务提供层 (提供给ui或其他网元的服务,如查询与cmd)

这样子的话:

写领域模型的兄弟可以专业于领域模型及业务

写数据持久化的兄弟,只要写数据持久化,一般用orm来mapping,如果有兴趣的话可以使用nh3或者ef 4.1,这2个对ddd的支持比较好,模型相对比较纯洁

至于ui或其他网元与系统的数据交互一般情况下分为2种:

即:查询,与 数据变更

因此:

建立对应的dto对象,从服务提供层得到dto的数据,展现ui

建立对应的command对象,从ui或网元传入cmd对象给服务提供层,服务提供层调用相关的基础层或领域模型服务来实现数据变更

这样子的话,使领域模型对象与ui及其他网元彻底分离,使业务逻辑高聚合在领域模型中

每个层之间可以使用ioc达到层与层之间的散耦合

至于数据缓存,日志记录,异常处理,这些常用的方法,可以使用aop的方式来实现,有兴趣的兄弟可以看看postsharp

大概就是这个样子

2、 rhs

得博主举的例子过于简单,不能够很好地体现bll层的意义。

第一、验证过于简单,在bll中添加department除了判断是否null值,如果再加上一个在同一层次的部门名称、部门编号不能够相同的验证。

第二、例子中基本上没有体现的业务逻辑,难怪上面有人反对。

我建议部门最好用树结构形式,这样才能更好地表达业务逻辑。

3、gray zhang

1、你前面一篇文章已经有人提了,你没分清什么叫数据,什么叫业务,楼主是怎么区分一个方法应该是数据还是业务的,有什么样的准则什么样的约定

2、就像楼上说的,有接口但在bll层调用时直接用了实现,接口的意义何在?

如果这2个问题无法解决的话,说句不好听的,个人认为,这文章在首页不是教人很多,倒是会害人不浅


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值