`
buliedian
  • 浏览: 1238590 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Duwamish7架构分层分析

阅读更多

Duwamish7架构分层分析

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上来吧。

分享到:
评论

相关推荐

    Duwamish分析

    《Duwamish分析——深入理解.NET网上书店的构建与运营》 在现代信息技术的推动下,网上书店已经成为图书销售的重要...文件"Duwamish7 研究.doc"可能包含了更详尽的分析报告,对于深入了解这个案例具有很高的参考价值。

    Duwamish7_CS

    1. **软件架构**:Duwamish7_CS可能采用了一种特定的架构模式,如微服务、三层架构、MVC(模型-视图-控制器)或SOA(面向服务架构)。理解这种架构可以帮助我们学习如何设计可扩展、可维护和高效的系统。 2. **编程...

    微软 Duwamish7

    微软 Duwamish7 三层架构三层架构三层架构三层架构三层架构三层架构三层架构三层架构

    .net Duwamish7 框架分析+源代码

    4. 强大的MVC架构:Duwamish7采用Model-View-Controller(MVC)设计模式,分离了业务逻辑、数据处理和用户界面,提高了代码的可读性和可测试性。 5. 安全性:框架内置了安全机制,包括身份验证、授权和加密等功能,...

    Duwamish7大剖析

    根据给定的信息,我们可以深入分析并提取出与“.Net经典范例Duwamish7大剖析”相关的几个关键知识点。 ### Duwamish7大剖析 #### 1. **系统架构** - **概述**:系统架构是Duwamish7项目的核心组成部分之一,主要...

    Duwamish 7

    "Duwamish 7" 是一个源自微软的经典示例项目,主要是一个在线书店的实现,旨在演示如何在实际开发环境中应用多层架构和数据操作技术。这个项目免去了繁琐的安装步骤,通过直接整理和添加注释,使得学习者可以更方便...

    Duwamish7示例源代码

    "Duwamish7示例源代码"是一个与微软相关的项目,主要展示了如何构建一个网上商店的示例应用。这个项目可能包含了一系列用于演示电子商务功能的源代码,旨在帮助开发者理解如何在实际环境中运用微软的技术栈。从提供...

    经典-Duwamish7学习笔记1-7

    从给定的文件信息中,我们可以提炼出一系列关于Duwamish7的IT知识点,尤其聚焦于其架构设计和特定的编码实践。以下是对这些关键点的深入分析: ### Duwamish7架构概述 Duwamish7是Visual Studio.NET自带的一个示例...

    Duwamish系统分析设计资料

    Duwamish系统分析设计资料,学习asp.net 的很好例子

    Duwamish 7.0 系列分析文章.doc

    2. **架构优化**:分析文章可能详细讨论了Duwamish 7.0的内部架构改变,比如模块化设计,这有助于提高代码的可维护性和扩展性。也可能涉及了微服务架构的采用,以实现更灵活的部署和更高的可伸缩性。 3. **性能提升...

    Duwamish7-VB源码

    【标题】"Duwamish7-VB源码"是一个基于Visual Basic的软件开发项目,其核心在于理解和学习VB编程语言的应用以及项目构建流程。这个项目可能是一个示例或者教学资源,用于展示如何在实际环境中运用VB进行软件开发。...

    duwamish框架下的网上书店

    首先,Duwamish框架的核心特性在于它的模型-视图-控制器(MVC)架构。这种设计模式将应用程序分为三个主要部分:模型(Model)负责数据处理和业务逻辑,视图(View)负责用户界面展示,控制器(Controller)则协调...

    Duwamish源代码

    对于开发者来说,分析Duwamish的源代码可以提供关于早期.NET开发实践的见解,了解如何在.NET 1.1环境下设计和实现应用程序,同时也可以从中学习到一些过时但仍然有价值的编程技巧。 此外,通过研究Duwamish源代码,...

    Duwamish深入剖析

    在7.0版本中,Duwamish完全采用了.NET架构,体现出了更高级的技术特性和成熟度。 Duwamish的设计结构为四层逻辑架构,分别是: 1. **Web层**:这一层是客户端与应用程序交互的界面,由ASP.NET Web窗体和代码隐藏...

    Duwamish 7.0(C# 版和 VB.NET 版)

    最后,压缩包子文件的文件名称列表——Duwamish7_VB.zip和Duwamish7_CS.zip,分别包含了用VB.NET和C#编写的项目源码。开发者可以通过解压这些文件,导入到Visual Studio等开发环境中,直接运行和调试,以此加深对...

    Duwamish7.1

    Duwamish则是一个外表简单,内部却极其复杂的一个网上书店的.NET完整应用范例,作为一个微软官方的Sample,它同时提供了C#和VB.NET两种语言版本,并且还附上了大量详尽的中文资料,如果打印出来,实在是居家旅行,临...

    Duwamish 源码

    7. **Visual Studio 2005/2008的使用**:如果你不熟悉这两个版本的IDE,可以借此机会学习它们的项目设置、调试技巧和构建过程。 8. **历史背景**:了解Duwamish诞生的时代背景,理解当时的软件开发环境和技术挑战,...

    Duwamish+7[1].0学习笔记

    Duwamish+7[1].0学习笔记主要聚焦于Duwamish 7.0这一版本的相关技术内容。Duwamish是一个可能用于软件开发、系统管理或数据处理的工具,具体应用范围可能包括但不限于数据库管理、网络配置、软件开发环境搭建等。...

    Duwamish7.1For C#源代码,不是安装文件

    7. **数据库交互**:可能使用ADO.NET进行数据库访问,包括DataSet、DataTable、SqlCommand等对象的使用,进行CRUD(创建、读取、更新、删除)操作。 8. **设计模式**:在源代码中,你可能会发现各种设计模式的实现...

    Duwamish的PPT

    《Duwamish的PPT》是针对北大青鸟学习平台的一份关于.NET多层设计架构的教学材料,专为初学者设计。这份PPT详细介绍了.NET框架的核心概念以及如何构建多层应用程序,帮助初学者理解并掌握软件开发中的重要技术。 在...

Global site tag (gtag.js) - Google Analytics