博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
步步为营 .NET三层架构解析系列总结
阅读量:5961 次
发布时间:2019-06-19

本文共 1224 字,大约阅读时间需要 4 分钟。

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

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

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

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

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、 

得博主举的例子过于简单,不能够很好地体现BLL层的意义。
第一、验证过于简单,在BLL中添加Department除了判断是否Null值,如果再加上一个在同一层次的部门名称、部门编号不能够相同的验证。
第二、例子中基本上没有体现的业务逻辑,难怪上面有人反对。
我建议部门最好用树结构形式,这样才能更好地表达业务逻辑。
3、
1、你前面一篇文章已经有人提了,你没分清什么叫数据,什么叫业务,楼主是怎么区分一个方法应该是数据还是业务的,有什么样的准则什么样的约定
2、就像楼上说的,有接口但在BLL层调用时直接用了实现,接口的意义何在?
如果这2个问题无法解决的话,说句不好听的,个人认为,这文章在首页不是教人很多,倒是会害人不浅
 
 
 
感谢你们提出很好的建议。

转载地址:http://pdjax.baihongyu.com/

你可能感兴趣的文章
【Solidity】8. 杂项 - 深入理解Solidity
查看>>
关于在VS2005中编写DLL遇到 C4251 警告的解决办法
查看>>
Go语言大神亲述:历七劫方可成为程序员!
查看>>
CYQ.Data 轻量数据层之路 V4.5 版本发布[更好的使用体验,更优的缓存机制]
查看>>
NetApp针对其集群化方案“不值得升级”言论回击Wikibon
查看>>
QQ把游戏放进聊天框,这一点Facebook和微信都没做到
查看>>
在线匿名之父意欲终结“加密战争”
查看>>
WLAN市场销量逐步逼近有线网络
查看>>
力龙信息布局大数据领域
查看>>
大数据巧治职业差评师 生存空间锐减九成
查看>>
天津开展免费无线局域网建设
查看>>
提高信息安全意识对网络勒索病毒说不
查看>>
英国政府可能利用曼彻斯特自杀袭击要求互联网公司破解加密
查看>>
Mozilla 将大幅简化火狐浏览器的同步操作
查看>>
微软加大在 Edge/IE 浏览器上阻止 SHA-1 证书的力度
查看>>
龙芯将两款 CPU 核开源,这意味着什么?
查看>>
《51单片机应用开发从入门到精通》——导读
查看>>
iOS深拷贝与浅拷贝
查看>>
mysql5.6参数说明
查看>>
[转]线程安全的单例模式
查看>>