`

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

阅读更多

  概况

  业务实体存储数据,通过属性暴露数据,包含并管理应用需要用的数据,同时提供编程访问及相关的功能。业务实体应该在内部进行数据有效性验证,并且封装业务逻辑来保证一致性,实现业务规则和行为。因此,设计适当的业务实体,对于最大化性能和高效性的业务层来说,是非常重要的。

  本章将帮助你理解业务实体组件的设计。首先,看看应用中使用的不同数据格式,以及数据被如何使用。接下来,你将会学到,在设计中,已有的数据格式决定决定业务规则的实现。最后,你将会学习设计自定义对象,如何支持不同格式的序列化。

  设计步骤

  1 选择表现形式

  本节你会看到业务实体的多种表现形式,每一种的好处和能力,为你的方案选择正确的表现形式。常用的表现形式包括下面的几种:

  •   自定义业务对象。例如,ADO.NET Entity Framework 、HNibernate这类的ORM技术可以用来创建自定义对象。你也可以手动创建它们。如果你需要在数据中封装复杂的业务规则和行为,自定义对象较为合适。如果你需要应用程序跨域、进程、物理边界访问自定义对象,你可以使用DTO实现一个服务层来操作自定义对象。
  •   DataSet or DataTable。数据集是一种内存形式的数据库,通常和实际的数据库有映射关系。如果你不用ORM,创建一个数据为中心,业务逻辑非常少的应用的话,可以考虑使用DataSet。数据集不能扩展封装业务规则。尽管数据集可以序列化为xml,但是不应该跨进程或者是服务边界暴露它们。
  •   XML。是一种结构化数据的标准格式。但是要小心,使用和操作xml将会消耗大量的内存资源。

  2 为业务实体选择一个设计

  如果你决定要自定义对象为业务实体的表现形式,下一步就是设计这些对象。设计自定义对象的方法是以使用对象的计划为基础。例如:领域模型实体要求对业务模型的深度分析,数据表模型实体要求理解数据库结构。常用的设计方法包括:

  •   领域模型,是一种面向对象的设计模式。领域模型设计的目的是设计一个符合真实世界的业务实体。在使用领域模型进行设计的时候,业务实体通常包括行为和结构。换句话说,业务规则和关系被封装在领域模型中。需要深度分析业务领域,很多时候和数据库都没有映射关系。如果你的业务规则复杂,考虑使用领域模型设计。
  •   数据表模型。也是以一种面向对象的设计模式。对象化的表模型设计,基于数据库和表结构定于实体。如果你的业务逻辑是操作单表和视图的话,或者是实体和数据表非常相似的话,考虑使用数据表模型。
  •   
  •   自定义XML。代表序列化之后的xml数据。

  在使用自定义对象的时候,不是全部都用一种表现形式。例如:有复杂业务规则的时候可以用领域模型设计。简单的时候,就可以用xml对象或者是数据表模型。

  3 决定序列化支持

  你一定要决定业务实体如何跨越边界传输。在大部分情况,跨越物理边界(应用程序域、进程、服务接口边界)传输,需要序列化数据。在跨越逻辑边界的时候,你也可以序列化数据,但是要考虑带来的性能影响。业务实体常用的传输选择:

  •   如果有需要的话,直接暴露序列化的业务实体。如果应用的另外一个层,是在同一个物理层的,需要消费业务实体,通常的做法是直接暴露序列化的业务实体。但是,缺点就是在业务实体的消费者与实体的实现之间创建了依赖关系。因此,不推荐这个方法,除非你可以维护业务实体的消费者,并且不需要对业务实体进行远程访问。
  •   将业务实体转换为可序列化的Data Transfer Object。从内部的业务层实现中解耦数据的消费者,考虑将业务实体翻译为可序列化的DTO。DTO是一种设计模式,用来跨边界传输,将多个数据结构打包为单个数据结构。当你的业务实体消费者的数据表现形式和你不一样的时候,DTO非常有用。这个方法对于内部业务层的修改不影响数据的消费者,允许你更容易修订自己的接口。这个方法适用于有外部客户端消费数据的情况。
  •   直接暴露XML。在某些情况,你可以直接将业务实体序列化为xml。

  领域驱动设计DDD

  Domain Driven Design是一种基于领域模型、元素和行为、他们之间的关系的面向对象软件设计方法。目标是将软件系统看做是定义了领域模型的真实业务模型。

  如果要应用DDD,一定要对业务模型有很好的理解,在业务语言方面经验丰富。开发团队需要经常和领域专家一起工作。架构师,开发者,领域专家有不同的知识背景,在很多时候用不同的语言描述他们的目标,设计和需求。但是,在DDD中,团队用同一个语言描述业务模型。

  未完待续。。。。。。。。。。。。。。。。。。。。。。。。

分享到:
评论

相关推荐

    牛【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 ...

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

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

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

    "软件架构设计文档ADMEMS模板v2" 软件架构设计文档是软件开发过程中的重要文档,旨在描述软件系统的架构设计,包括软件系统的总体架构、组件之间的关系、数据流向、接口定义等。下面是基于ADMEMS模板v2的软件架构...

    SystemVerilog路科验证V2学习笔记

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

    AADL 学习笔记_V2_aadl_

    在“AADL学习笔记.docx”文档中,读者可以期待找到对这些概念的详细解释、实例演示以及如何将它们应用到实际项目中的指导。这份笔记对于正在学习AADL或准备采用AADL进行系统设计的人来说是一份宝贵的资源。

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

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

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

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

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

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

    Application Architecture Guide v2

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

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

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

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

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

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

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

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

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

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

    随着移动设备计算能力的不断提升,以及深度学习技术的不断进步,轻量级神经网络架构设计将继续成为研究热点,ShuffleNet V2作为其中的重要里程碑之一,其创新点和实践经验对后续研究与应用都将有着深远的指导意义。

    kinect V2 学习资料

    从内容中可以看出,本文档主要是针对初学者设计,它介绍了如何从零开始搭建一个用于Windows 8.1平台的Kinect V2应用程序。文中提到了如何在Visual Studio 2013中创建一个项目,并且确保了使用的是适合Windows Store...

    基于5G的车联网体系架构及其应用研究.pdf

    本研究聚焦于利用第五代移动通信技术(5G)构建的车联网体系架构及其应用。随着信息技术的不断演进,传统的通信网络架构已经无法满足车联网对低延迟、高带宽和高可靠性的需求。因此,研究提出了一种基于5G的智能交通...

    微服务架构分享V2.pptx

    微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于 ...

Global site tag (gtag.js) - Google Analytics