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

推荐订阅源

L
LangChain Blog
博客园 - 司徒正美
美团技术团队
WordPress大学
WordPress大学
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
人人都是产品经理
人人都是产品经理
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
T
Troy Hunt's Blog
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
P
Proofpoint News Feed
云风的 BLOG
云风的 BLOG
Engineering at Meta
Engineering at Meta
Cisco Talos Blog
Cisco Talos Blog
T
Tor Project blog
B
Blog
NISL@THU
NISL@THU
月光博客
月光博客
博客园 - 【当耐特】
AWS News Blog
AWS News Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
腾讯CDC
L
Lohrmann on Cybersecurity
The Cloudflare Blog
L
LINUX DO - 最新话题
S
Security @ Cisco Blogs
S
Secure Thoughts
Spread Privacy
Spread Privacy
有赞技术团队
有赞技术团队
The Last Watchdog
The Last Watchdog
Project Zero
Project Zero
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Vercel News
Vercel News
H
Hacker News: Front Page
S
SegmentFault 最新的问题
Schneier on Security
Schneier on Security
aimingoo的专栏
aimingoo的专栏
P
Privacy & Cybersecurity Law Blog
博客园 - 三生石上(FineUI控件)
Forbes - Security
Forbes - Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
I
InfoQ
T
Tailwind CSS Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
G
GRAHAM CLULEY
W
WeLiveSecurity
小众软件
小众软件
Recorded Future
Recorded Future
Cyberwarzone
Cyberwarzone
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org

博客园 - 乌龙

NBear的学习资源列表 -- NB之三 NBear建议使用方式 -- NB之二 NBear的优缺点粗略分析(3.7版本)-- NB之一 UML的硬伤?UML在系统分析、设计方面的应用理解 软件公司内部协作平台的选型(项目/BUG/需求管理及用户支持) 园内ORM讨论的经典文章及评论 功能规格说明的模版--标在原型上的 dotproject推失败了,mantis用的很好,blog还是有用的。配置管理及人机交互 客户沟通问题 CRM子系统到客户那边做Beta测试了,在此很有深度的感慨一下 开源的魅力 最佳B/S项目管理工具dotProject2.0.1的安装说明 Mantis,bug管理系统安装说明 纪念我的第一部手机N188,同时以HP Deskjet 3938开始打印新生活 又上班了 软件开发过程分析比较:CMM、RUP、XP 重构:很难用,但是还是一定要用,并且一定用得上 经典书籍推荐+简单书评! 2006年1月21日,一个非常有意义的日子
Duwamish7架构分层分析
乌龙 · 2006-02-05 · via 博客园 - 乌龙


1.总的感觉:
使用的不是一种纯粹的OO的实现方法,基本上可以看作一种组合良好的事务脚本的写法。
但是这种写法我个人不是很推荐,关键有下面几点遗憾:
1)没有用OO的写法,而将实体的数据部分放在了Common,而将它的方法又散落到了BusinessRules/BusinessFacade。(按Duwamish7的分层方法也说得过去,但是总是感觉不大舒服)
2)用自定义的dataset来传递数据,dataset定义得较复杂,不易理解,估计也不好维护。

2.BusinessFacade:业务外观层
以功能分,提供若干系统的功能的外观类,如ProductSystem等。
1).bf层可以看作是控制类的层,它调用DataAccess层的数据访问类来访问数据库,由此完成特定的业务操作,如CRUD操作。
2).局限性:在系统逻辑较少时,可以直接用ProductSystem类来表示一类服务,但是系统功能多时,就必须分出多个类来了。
这个外观层做得很有意义,可以提供一个更明确紧凑的“服务层”给客户调用,而且也可以尽可能减少将业务逻辑放在UI层来实现。

3.DataAccess层:
数据库访问层,也就是写sql调ado.net的相关类访问DB的层
1).失败的地方:每个类的方法都直接写ado.net的方法来访问数据库,没有提供一个DBHelper类来统一访问。
2).命名也失败:DB层的类最好以DB后缀,如BookDB.cs,否则与BusinessRules等几个工程的类容易混淆,增加不必要的麻烦。

4.Common层:
可以看作是一个实体类层。自己定义了Dataset,BF、DB、Rule层就用那些dataset来传递数据。
不是很舒服,主要是:
1)这种实体类只有数据没有行为,算是"哑类",除了传递数据外没有其他用处。通常实体类映射现实的一个事务,OO的通常做法是数据和方法是放在一个实体类里的,这样又必须一些实体对应的行为放到BF/Rule层去了,不是推荐的做法。参考所谓的“信息专家模式”。
2).用dataset来表示一个实体,里面又有若干datatable,这种用法个人是比较少见,一般都是直接用单个datatable来做了。我只在WinForm的datagrid里用过dataset,那主要是因为datagird的datasorce就设为dataset了,方便使用。

5.BusinessRules 业务规则层
bf层直接调用db层完成了一部分CRUD的操作,但涉及到较复杂的业务规则计算的逻辑,放在了Rule层,而不是直接放在bf层。Rule层也调db来访问数据库。这可以算是一个亮点,因为它把一些复杂业务逻辑抽出单独放在一层里了,否则就得像通常我们写三层代码时全放在“业务逻辑层”了。这样如果要修改这些业务逻辑就很方便高效了。(看了Duwamish7终于知道vs.net的企业模板自动生成的BusinessRules是搞什么的,最近想优化一下公司代码的分层,原本有些“服务层”的逻辑没地方放本想放在Rule里的,现在看来不太适合了)

上面提了我个人感觉到若干Duwamish7的不佳的地方,因为最近考虑一下架构分层,匆匆看看所感,有谬论欢迎指正。现在才谈Duwamish7题材老了点,作为个人一点资料备份暂且还是post上来吧。