`

NET 应用架构指导 V2 学习笔记(二十) 业务组件设计指导

阅读更多

  前言

  业务组件的设计是非常重要的工作,如果你没有正确的设计业务组件的话,结果很可能就是代码难以维护和扩展。在设计和实现应用的时候,有多种类型的业务组件。包括业务逻辑组件,业务实体,业务流程或者是工作流组件,工具和帮助组件。

  设计步骤

  1 确定在应用中将会使用的业务组件

  在业务层,你需要创建和使用各种类型的组件来处理业务逻辑。本步骤的目标就是如何识别这些组件,发现应用需要的组件。下面的步骤帮助你确定你需要那些组件:

  •   考虑使用业务逻辑组件来封装业务逻辑和应用状态。业务逻辑是一种集中于实现业务规则和行为的应用逻辑,同时包括维护全局的一致性,例如数据合法性验证。业务逻辑组件应该设计成容易测试的、独立于表现层和数据访问层。
  •   考虑使用业务实体作为领域模型的一部分,来代表真实世界的业务实体,例如产品和订单。
  •   如果你的应用需要支持以一种特殊的顺序进行多进程处理,考虑使用业务工作流组件。使用在多个业务逻辑组件之间进行交互所需的业务规则。通过升级工作流组件就可以改变应用的行为。如果应用一定要实现根据业务规则实现动态的业务逻辑的话,考虑使用工作流组件。考虑使用WF实现工作流组件,考虑和微软的BizTalk Server环境整合。

  2 为业务组件做关键的决定

  web应用中的业务组件通常处理消息为基础请求,windows form应用通常处理事件为基础的请求。另外,不同类型的应用关注点也不同。一些因素是不分应用类型的,一些因素又是每个应用类型特有的。你一定要处理的关键问题包括:

  •   部署位置。你的业务逻辑组件是放在客户端吗?还是应用服务器?还是两者都有?如果应用是富客户端应用或者是RIA,想要提高性能,使用领域模型设计业务实体,考虑在客户端放一些业务组件。如果要支持多种客户端类型,如果业务组件需要访问客户端访问不到的资源,或者是安全原因,考虑将业务组件放在应用服务器上。
  •   耦合。表现层组件如何与业务组件交互?是应该设计一个表现层直接知道业务组件的紧耦合,还是一个对表现层屏蔽实现细节的业务组件松耦合。如果你是一个富客户端类型或者是RIA,可以考虑紧耦合表现层和业务组件。但是松散耦合可以提高可测试性和灵活性。如果你有一个富客户端类型或者是RIA应用,将业务组件部署在应用服务器或者是web服务器,为它们之间的交互设计一个服务接口,来实现松散耦合。
  •   交互。如果业务组件和表现层组件部署在同一个物理层,考虑使用通过事件和方法的组件为基础的交互,来最大化性能。但是,如果表现层和业务层部署在不同的物理层,考虑使用服务接口和消息为基础的交互方式。

  3 选择适当的事务支持

  业务组件负责协调和管理业务层需要的事务。但是第一步是决定是否需要事务支持。事务用来确保一些的行为都可以执行,例如数据库事务。事务以一个单独的单元来完成。如果单元中的一个行为失败,其他的行为会回滚,确保系统的一致性状态。例如:有一个操作需要更新三张表,如果一个失败,两个成功,数据库将会处于不一致状态,这时候适合用事务来执行,一个失败,大家都回滚到事务之前的状态,保证了一致性。事务包括下面的一些类型:

  •   System.Transactions。使用业务逻辑初始化和管理事务。包括在.NET 2.0中,实现轻量的事务管理。
  •   WCF Transactions。在.NET 3.0中引入,如果和WCF service进行交互,考虑使用WCF Transactions。
  •   ADO.NET Transactions。
  •   Database。

  4 确定业务规则如何处理

  业务规则的管理是应用最有挑战性的设计之一。通常业务规则用于业务层。但是,他们会在业务层的那里呢?你可以放在业务逻辑或者是工作流组件,或者是一个独立的业务规则引擎,又或者是包含在领域模型设计的业务实体中。参考下面的选项:

  •   业务逻辑组件。
  •   工作流组件。
  •   业务规则引擎。
  •   领域模型设计。将业务规则包括在业务实体中。

  5 确定满足需求的设计模式

  

  

设计模式 推荐原因

Adapter适配器模式

  允许没有兼容接口的类在一起工作,允许开发者实现一个多态的类为现有了类提供一个可替代的实现。
Command   推荐在富客户端应用的菜单、工具条、键盘快捷键中使用,不同的组件执行相同的命令。
Chain of Responsibility   可以用来代替if 。。。then。。。else语句,可以处理复杂的业务规则。
Decorator   通过添加和修改操作,在运行的时候扩展对象的行为。需要一个通用的接口,有一个Decorator类来实现它。可以处理复杂的业务规则。
Dependency Injection   使用一个独立的类创建对象和成员,通常基于配置文件在运行的时候创建依赖关系。配置文件中指明类型的映射关系。提供一个修改行为的灵活方式,从而实现复杂的业务规则。
Facade 提供粗粒度的操作,统一多个业务组件的结果。典型的应用是,在业务层为以消息为基础的接口实现一个远程的外观,用来在表现层和业务层提供一个松散的耦合。
Factory 不用指定的类型创建对象实例,需要对象实现通用的接口,或者是继承一个基类。

Transaction

Script

在很少的业务规则的CRUD操作中推荐使用。
  未完待续。。。。。。。。。。。。。。。。。。。。。
分享到:
评论

相关推荐

    牛【SystemVerilog】路科验证V2学习笔记(全600页)

    "牛【SystemVerilog】路科验证V2学习笔记(全600页)"是一份详尽的学习资料,涵盖了路科验证方法论的第二版(V2)在SystemVerilog中的应用。 笔记内容可能包含了以下几个关键知识点: 1. **基础语法**:...

    【SystemVerilog】路科验证V2学习笔记(全600页).pdf

    SystemVerilog的听课学习笔记,包括讲义截取、知识点记录、注意事项等细节的标注。 目录如下: 第一章 SV环境构建常识 1 1.1 数据类型 1 四、二值逻辑 4 定宽数组 9 foreach 13 动态数组 16 队列 19 ...

    【SystemVerilog】路科验证V2学习笔记(全600页)

    SystemVerilog的听课学习笔记,包括讲义截取、知识点记录、注意事项等细节的标注。 目录如下: 第一章 SV环境构建常识 1 1.1 数据类型 1 四、二值逻辑 4 定宽数组 9 foreach 13 动态数组 16 队列 19 关联数组 21 ...

    AADL 学习笔记_V2_aadl_

    这个“AADL学习笔记_V2_aadl_”文件集合显然是针对AADL标准的第二版(V2)进行的学习和参考资料。下面我们将深入探讨AADL的核心概念、用途、关键特征以及在V2版本中的重要更新。 AADL起源于NASA的研究项目,旨在...

    《软件架构设计文档》ADMEMS模板v2.docx

    软件架构设计文档ADMEMS模板v2是软件开发过程中的重要文档,旨在描述软件系统的架构设计,提供软件系统的总体架构、组件之间的关系、数据流向、接口定义等信息,以便于项目团队和stakeholders之间的沟通和协作。

    大型金融数据中心网络架构设计V2.pptx

    "大型金融数据中心网络架构设计V2.pptx" 本资源摘要信息来自一个关于大型金融数据中心网络架构设计的PPT文件,内容涵盖了金融数据中心网络架构设计的演进路线、金融网络应用场景的划分、数据中心应用服务域、双活...

    一种结合车联网和C-V2X的终端设备系统架构设计.pdf

    结合车联网和C-V2X技术的终端设备系统架构设计,旨在通过高效的通信模块和先进的信息处理能力,推动智能交通系统的发展,实现交通事故的减少和交通效率的提升,最终为驾驶者提供一个更安全、更便捷的驾驶体验。...

    03.AxureUX中后台管理信息系统通用原型设计方案 v2(设计组件).rp

    03.AxureUX中后台管理信息系统通用原型设计方案 v2(设计组件).rp 03.AxureUX中后台管理信息系统通用原型设计方案 v2(设计组件).rp 03.AxureUX中后台管理信息系统通用原型设计方案 v2(设计组件).rp 03.AxureUX中...

    云平台系统架构设计文档v2.docx

    云平台系统架构设计文档v2.docx云平台系统架构设计文档v2.docx云平台系统架构设计文档v2.docx云平台系统架构设计文档v2.docx云平台系统架构设计文档v2.docx云平台系统架构设计文档v2.docx云平台系统架构设计文档v2....

    SystemVerilog路科验证V2学习笔记

    SystemVerilog路科验证V2是一个SystemVerilog的听课学习笔记,包括讲义截取、知识点记录、注意事项等细节的标注,可快速获取自已需要的知识,喜欢的平台可下载试试! 介绍设计描述和验证语言SystemVerilog的基本...

    Application Architecture Guide v2

    《应用架构指南v2》是微软发布的一份深入探讨应用架构的重要文档,旨在为软件开发者、架构师和项目管理者提供一套全面的指导原则和最佳实践。这份指南详细阐述了如何设计、构建和优化应用程序,以确保其高效、可扩展...

    【SystemVerilog】路科验证V2学习笔记.7z

    本文将深入探讨“路科验证V2”学习笔记中的关键知识点,主要基于提供的"SV部分讲义"。 一、SystemVerilog基础 1. **数据类型**:SystemVerilog提供了丰富的数据类型,包括位(bit)、逻辑(logic)、整型(int)、...

    COM组件用例和测试代码V2

    4. **接口设计**:学习如何设计有效的COM接口,使其能够满足多种应用场景。 5. **测试策略**:掌握如何编写测试代码来验证COM组件的功能,包括单元测试和集成测试。 6. **注册与反注册**:理解如何在系统中注册和反...

    TOGAF企业架构规划IT战略规划设计流程架构业务架构企业架构设计规划自学材料(25份).zip

    以TOGAF为指导的云计算规划V2.pptx 企业架构典型设计精选.pptx 企业架构及典型设计V1.1.ppt 企业架构框架TOGAF.pdf 制作企业全套业务流程图整理47p.ppt 国际知名咨询公司-IT规划培训材料(1).ppt 方法论-企业IT战略...

    王晓波-从微服务到Serverless+架构应用与实践V2-32页.pdf

    微服务和Serverless是当前云计算架构设计中非常热门的概念,它们在解决传统单体应用所面临的可伸缩性、运维复杂性和快速迭代等问题上表现出了明显优势。在王晓波所著的《从微服务到Serverless+架构应用与实践》这份...

    云平台系统架构设计文档v2.pdf

    云平台系统架构设计文档v2.pdf云平台系统架构设计文档v2.pdf云平台系统架构设计文档v2.pdf云平台系统架构设计文档v2.pdf云平台系统架构设计文档v2.pdf云平台系统架构设计文档v2.pdf云平台系统架构设计文档v2.pdf云...

    电子商务CRM业务架构白皮书V2.pdf

    电子商务CRM业务架构白皮书V2.pdf

    kinect V2 学习资料

    Kinect V2 是微软公司推出的第二代体感设备,它不仅用于游戏,还被广泛应用于计算机视觉、人机交互、机器人技术等领域。它通过一系列传感器,可以捕捉用户的动作、声音甚至心跳,与计算机进行自然交互。Kinect V2 ...

    【论文】旷视科技提出的新型轻量架构ShuffleNet V2

    旷视科技提出的ShuffleNet V2是一种针对移动端深度学习应用优化的卷积神经网络架构。这种新型架构的提出,旨在解决移动端深度学习领域中计算资源受限和对速度效率需求较高的问题。ShuffleNet V2的设计思想来源于对于...

    LSD-TEST430F5438-01_V2_1学习板实验指导书

    通过以上知识点的梳理,可以看出LSD-TEST430F5438-01_V2_1学习板实验指导书覆盖了从硬件资源介绍到软件编程实践的全面内容,旨在帮助学习者深入理解MSP430F5438单片机的各项特性和实际应用,是一份非常实用的学习...

Global site tag (gtag.js) - Google Analytics