概况
业务实体存储数据,通过属性暴露数据,包含并管理应用需要用的数据,同时提供编程访问及相关的功能。业务实体应该在内部进行数据有效性验证,并且封装业务逻辑来保证一致性,实现业务规则和行为。因此,设计适当的业务实体,对于最大化性能和高效性的业务层来说,是非常重要的。
本章将帮助你理解业务实体组件的设计。首先,看看应用中使用的不同数据格式,以及数据被如何使用。接下来,你将会学到,在设计中,已有的数据格式决定决定业务规则的实现。最后,你将会学习设计自定义对象,如何支持不同格式的序列化。
设计步骤
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的听课学习笔记,包括讲义截取、知识点记录、注意事项等细节的标注。 目录如下: 第一章 SV环境构建常识 1 1.1 数据类型 1 四、二值逻辑 4 定宽数组 9 foreach 13 动态数组 16 队列 19 ...
SystemVerilog的听课学习笔记,包括讲义截取、知识点记录、注意事项等细节的标注。
大型金融数据中心网络架构设计V2.pptx
SystemVerilog路科验证V2是一个SystemVerilog的听课学习笔记,包括讲义截取、知识点记录、注意事项等细节的标注,可快速获取自已需要的知识,喜欢的平台可下载试试! 介绍设计描述和验证语言SystemVerilog的基本...
SystemVerilog的听课学习笔记,包括讲义截取、知识点记录、注意事项等细节的标注。 目录如下: 第一章 SV环境构建常识 1 1.1 数据类型 1 四、二值逻辑 4 定宽数组 9 foreach 13 动态数组 16 队列 19 关联数组 21 ...
云平台系统架构设计文档v2.docx云平台系统架构设计文档v2.docx云平台系统架构设计文档v2.docx云平台系统架构设计文档v2.docx云平台系统架构设计文档v2.docx云平台系统架构设计文档v2.docx云平台系统架构设计文档v2....
【SystemVerilog】路科验证V2学习笔记.7z
以TOGAF为指导的云计算规划V2.pptx 企业架构典型设计精选.pptx 企业架构及典型设计V1.1.ppt 企业架构框架TOGAF.pdf 制作企业全套业务流程图整理47p.ppt 国际知名咨询公司-IT规划培训材料(1).ppt 方法论-企业IT战略...
AADL 学习笔记参考文件 AADL 标准V2
一种结合车联网和C-V2X的终端设备系统架构设计.pdf
电子商务CRM业务架构白皮书V2.pdf
云平台系统架构设计文档v2.pdf云平台系统架构设计文档v2.pdf云平台系统架构设计文档v2.pdf云平台系统架构设计文档v2.pdf云平台系统架构设计文档v2.pdf云平台系统架构设计文档v2.pdf云平台系统架构设计文档v2.pdf云...
王晓波-从微服务到Serverless+架构应用与实践V2-32页.pdf
微服务架构分享V2.pptx
王晓波-从微服务到Serverless+架构应用与实践V2.pdf
ADMEMS方法推荐的《软件架构设计文档》
Ray -分布式计算框架架构设计详解 v2
NoSQL数据库技术__城市时空数据引擎JUST的架构与应用实践V2.zip
大数据时代证券证券交易系统架构演化V2-SACC2021年中国系统架构师大会
MTK架构分析v2参考.pdf