概况
数据层组件提供了访问系统边界内,或者是其他系统暴露的数据的方法。包括数据访问组件,用来访问系统边界内的数据,服务代理组件,用来访问其他服务暴露的数据。另外,还可能包含其他帮助功能和工具类的组件。
本章将帮助你理解设计数据组件基本的步骤。第一步是确定对于访问的数据有什么限制条件,帮助你选择适当的数据访问技术。接下来是选择映射策略,决定数据访问方法。然后决定数据访问组件如何连接数据源。最后,确定异常处理策略,和对数据源异常的管理。
设计步骤
1 选择数据访问技术
选择一个适当的数据访问技术一定要考虑你要处理的数据类型,你要如何操作数据。可以参考下面的设计原则:
- ADO.NET Entity Framework:如果你想要创建一个数据模型,把它映射为一个关系数据库,使用继承将一个类映射为多张表,或者是查询不是SQL SERVER家族产品的关系存储,都可以考虑使用EF。如果你使用EF,考虑使用LINQ to Entity执行强类型实体的查询,或者使用LINQ语法来查询关系数据库。
- ADO.NET Data Service Framework:Data Service是建立在EF之上的,允许你通过REST暴露实体模型。如果你开发一个RIA或者是富客户端应用,想要通过一个服务接口访问数据源,可以考虑使用Data Service。
- ADO.NET Core:如果你需要用低级别的API来对数据访问完全的控制,考虑使用ADO.NET Core。
- ADO.NET Sync Service:如果你设计的应用需要支持偶尔在线的方案,或者是需要和数据库同步,可以考虑使用Sync Service。
- LINQ to XML:如果使用XML作为数据源,可以考虑LINQ to XML。
2 如何从数据源获取数据,如何持久化业务对象
对象和关系之间的不匹配给他们之间的映射带来很多麻烦,但是也有很多方法可以处理这个问题,也根据不同的数据类型、结构、如何操作数据而不同。常用的办法是ORM工具或者框架。参考下面的设计步骤:
- 考虑使用ORM框架实现领域实体和数据库之间的翻译。
- 常用的设计模式为领域模型。
- 确保你的实体是高内聚的。
3 决定如何连接到数据源
- 连接
- 连接到数据源是数据层的基础组成。
- 确保尽量少打开数据连接,尽早关闭数据连接。
- 通过一个连接来完成事务操作。
- 使用连接池和优化性能。
- 出于安全原因,避免使用系统或者是用户的DSN存储连接信息。
- 为连接错误和超时设计重新尝试的机制。
- 批量执行命令,尽量减少数据服务器的往来。
连接池允许使用池中的连接资源,如果没有合适的连接,就创建一个放入池中。当关闭连接的时候,连接被放回到池中,任然保持连接。意味着ADO.NET不是每次都创建一个新的连接。尽管池保持连接的代开消耗了一些资源,但是减少了数据访问延迟,从连接池获取连接使得应用更加高效。
可以选择下面的三种事务实现:
- System.Transactions
- ADO.NET Transactions
- T-SQL (Database) Transactions
4 确定处理数据源异常的策略
所有和数据源有关的异常都应该被数据层捕获。异常关注数据本身、数据源的访问、超时错误,应该在数据层处理,如果影响到应用的响应和功能,就需要传递到其他层。
- 异常
- 决定应该被数据层捕获和处理的异常。死锁、连接问题、乐观并发的问题。
- 考虑数据源发生错误或者是超时的时候,提供一个重新尝试的机制,在安全的控制内。
- 设计适当的异常传播机制。
- 设计适当的日志和通知策略。
- 考虑使用现有的成熟框架实现。
- 重新尝试的机制
5 设计服务代理(可选)
- 选择适当的工具添加服务引用。生成代理类,和代表服务数据契约的数据类。
- 确定在应用中如何使用服务。服务代理就是一个处于业务层和远程服务之间的抽象层,为数据提供一致的接口。在小型应用中,表现层可以直接访问服务代理。
未完待续。。。。。。。。。。。。。。
分享到:
相关推荐
SystemVerilog的听课学习笔记,包括讲义截取、知识点记录、注意事项等细节的标注。 目录如下: 第一章 SV环境构建常识 1 1.1 数据类型 1 四、二值逻辑 4 定宽数组 9 foreach 13 动态数组 16 队列 19 ...
"牛【SystemVerilog】路科验证V2学习笔记(全600页)"是一份详尽的学习资料,涵盖了路科验证方法论的第二版(V2)在SystemVerilog中的应用。 笔记内容可能包含了以下几个关键知识点: 1. **基础语法**:...
"大型金融数据中心网络架构设计V2.pptx" 本资源摘要信息来自一个关于大型金融数据中心网络架构设计的PPT文件,内容涵盖了金融数据中心网络架构设计的演进路线、金融网络应用场景的划分、数据中心应用服务域、双活...
SystemVerilog的听课学习笔记,包括讲义截取、知识点记录、注意事项等细节的标注。 目录如下: 第一章 SV环境构建常识 1 1.1 数据类型 1 四、二值逻辑 4 定宽数组 9 foreach 13 动态数组 16 队列 19 关联数组 21 ...
这个“AADL学习笔记_V2_aadl_”文件集合显然是针对AADL标准的第二版(V2)进行的学习和参考资料。下面我们将深入探讨AADL的核心概念、用途、关键特征以及在V2版本中的重要更新。 AADL起源于NASA的研究项目,旨在...
软件架构设计文档ADMEMS模板v2是软件开发过程中的重要文档,旨在描述软件系统的架构设计,提供软件系统的总体架构、组件之间的关系、数据流向、接口定义等信息,以便于项目团队和stakeholders之间的沟通和协作。
结合车联网和C-V2X技术的终端设备系统架构设计,旨在通过高效的通信模块和先进的信息处理能力,推动智能交通系统的发展,实现交通事故的减少和交通效率的提升,最终为驾驶者提供一个更安全、更便捷的驾驶体验。...
03.AxureUX中后台管理信息系统通用原型设计方案 v2(设计组件).rp 03.AxureUX中后台管理信息系统通用原型设计方案 v2(设计组件).rp 03.AxureUX中后台管理信息系统通用原型设计方案 v2(设计组件).rp 03.AxureUX中...
SystemVerilog路科验证V2是一个SystemVerilog的听课学习笔记,包括讲义截取、知识点记录、注意事项等细节的标注,可快速获取自已需要的知识,喜欢的平台可下载试试! 介绍设计描述和验证语言SystemVerilog的基本...
《应用架构指南v2》是微软发布的一份深入探讨应用架构的重要文档,旨在为软件开发者、架构师和项目管理者提供一套全面的指导原则和最佳实践。这份指南详细阐述了如何设计、构建和优化应用程序,以确保其高效、可扩展...
4. **接口设计**:学习如何设计有效的COM接口,使其能够满足多种应用场景。 5. **测试策略**:掌握如何编写测试代码来验证COM组件的功能,包括单元测试和集成测试。 6. **注册与反注册**:理解如何在系统中注册和反...
AxureUX数据可视化大屏模板及通用组件库(设计组件) Axure9
Zone V2翼型设计数据主要应用于滑翔机(DLG)的设计与优化之中。通过对这些数据的深入分析,可以更好地理解该翼型的特点及其在飞行器性能提升中的作用。本文将从翼型的基本概念出发,结合Zone V2的具体参数,探讨其...
云平台系统架构设计文档v2.docx云平台系统架构设计文档v2.docx云平台系统架构设计文档v2.docx云平台系统架构设计文档v2.docx云平台系统架构设计文档v2.docx云平台系统架构设计文档v2.docx云平台系统架构设计文档v2....
TCSAE(中国汽车工程学会)发布的《合作式智能运输系统 车用通信系统应用层及应用数据交互标准》(TCSAE 53-2017)是中国在V2X领域内首项正式标准,标志着国内相关技术的规范化发展。 该标准TCSAE 53-2017旨在提升...
本文将深入探讨“路科验证V2”学习笔记中的关键知识点,主要基于提供的"SV部分讲义"。 一、SystemVerilog基础 1. **数据类型**:SystemVerilog提供了丰富的数据类型,包括位(bit)、逻辑(logic)、整型(int)、...
《OceanBase设计规范与数据架构指南》是一份详细介绍OceanBase分布式关系型数据库系统的设计理念、架构及优势的文档。OceanBase是由阿里巴巴/蚂蚁金服研发的一款创新性数据库系统,旨在结合传统关系型数据库的功能性...
Kinect V2 是微软公司推出的第二代体感设备,它不仅用于游戏,还被广泛应用于计算机视觉、人机交互、机器人技术等领域。它通过一系列传感器,可以捕捉用户的动作、声音甚至心跳,与计算机进行自然交互。Kinect V2 ...
微服务和Serverless是当前云计算架构设计中非常热门的概念,它们在解决传统单体应用所面临的可伸缩性、运维复杂性和快速迭代等问题上表现出了明显优势。在王晓波所著的《从微服务到Serverless+架构应用与实践》这份...
JUST的架构设计充分考虑了这些数据的特性,提供了快速检索、实时分析和复杂的空间操作能力。 首先,JUST采用了分布式架构,能够轻松扩展到处理PB级别的数据。这种水平扩展能力使得它能够在不牺牲性能的情况下应对...