设为首页收藏本站language 语言切换
查看: 1329|回复: 0
收起左侧

实现数据访问逻辑组件

[复制链接]
发表于 2010-2-25 10:30:56 | 显示全部楼层 |阅读模式
<p ><B>适用于:</b><p >Microsoft&reg;.NET 应用程序<p ><B>摘要:</b><p >学习向 Microsoft .NET 应用程序公开数据的最佳方式,以及如何实现一个有效的策略以便在分布式应用程序的层间传递数据。(本文包含一些指向英文站点的链接。)<p ><b>目录</b><p ><ul><li>简介<p ><li>将关系数据映射到业务实体<p ><li>实现数据访问逻辑组件<p ><li>实现业务实体<p ><li>事务处理<p ><li>验证<p ><li>异常管理<p ><li>授权与安全性<p ><li>部署<p ><li>附录及其合作者</UL>数据访问逻辑组件是一个无状态类,也就是说,所交换的所有消息都可以独立解释。调用之间不存在状态。数据访问逻辑组件为访问单一数据库(某些情况下可以是多个数据库,例如水平数据库分区)中的一个或多个相关表提供方法。通常,数据访问逻辑组件中的这些方法将调用存储过程以执行相应操作。<p >数据访问逻辑组件的主要目标之一是从调用应用程序中隐藏数据库的调用及格式特性。数据访问逻辑组件为这些应用程序提供封装的数据访问服务。具体地说,数据访问逻辑组件处理以下实现细节:<p ><ul><li>管理和封装锁定模式 <p ><li>正确处理安全性和授权问题 <p ><li>正确处理事务处理问题 <p ><li>执行数据分页 <p ><li>必要时执行数据相关路由 <p ><li>为非事务性数据的查询实现缓存策略(如果适用) <p ><li>执行数据流处理和数据序列化</ul>本节后面将详细讨论其中的某些问题。<p ><B>数据访问逻辑组件的应用方案</b><p >图5 所示为从各种应用程序类型(包括 Windows 窗体应用程序、ASP.NET 应用程序、XML Web services 和业务过程)中调用数据访问逻辑组件的方式。根据应用程序的部署方式,这些调用可以是本地的,也可以是远程的。<p ><center><img src="http://www.hh010.com/upload_files/article/244/9_03bfee263731.gif" border="0" alt="点击此处查看大图像"><p >图5:数据访问逻辑组件的应用方案(单击缩略图以查看大图像)</center><p ><B>实现数据访问逻辑组件类</B><p >数据访问逻辑组件使用 ADO.NET 执行 SQL 语句或调用存储过程。有关数据访问逻辑组件类的示例,请参阅附录中的 如何定义数据访问逻辑组件类。<p >如果您的应用程序包含多个数据访问逻辑组件,可以使用数据访问助手组件来简化数据访问逻辑组件类的实现。该组件可以帮助管理数据库连接、执行 SQL 命令以及缓存参数。数据访问逻辑组件仍然封装访问特定业务数据所需的逻辑,而数据访问助手组件则专注于数据访问 API 的开发和数据连接配置,从而帮助减少代码的重复。Microsoft提供了 Data Access Application Block for .NET,当使用 Microsoft SQL Server&#8482; 数据库时,可在您的应用程序中将其用作一个通用的数据访问助手组件。图 6 所示为使用数据访问助手组件帮助实现数据访问逻辑组件的方法。<p ><center><img  src="http://www.hh010.com/upload_files/article/244/9_lky4yp263733.gif"><p >图6:使用数据访问助手组件实现数据访问逻辑组件</center><p >当存在所有数据访问逻辑组件公用的实用程序功能时,可以定义一个基本类以从中继承和扩展数据访问逻辑组件。<p >将数据访问逻辑组件类设计为可以为不同类型的客户端提供一致的接口。如果将数据访问逻辑组件设计为与当前及潜在的业务过程层的实现要求相兼容,可以减少必须实现的附加接口、接触面或映射层的数目。<p >要支持广泛的业务过程和应用程序,请考虑以下技术以便将数据传入和传出数据访问逻辑组件方法:<p ><ul><li>将业务实体数据传递给数据访问逻辑组件中的方法。您可以用多种不同的格式传递数据:作为一系列标量值、作为 XML 字符串、作为 DataSet 或作为自定义业务实体组件。 <p >从数据访问逻辑组件中的方法返回业务实体数据。您可以用多种不同的格式返回数据:作为输出参数标量值、<li>作为 XML 字符串、作为 DataSet、作为自定义业务实体组件或作为数据读取器。</ul>以下各节将说明用于将业务实体数据传入和传出数据访问逻辑组件的各种方式以及每种方式的优缺点。这些信息有助于您根据自己特定的应用程序方案做出相应选择。<p ><B>将标量值作为输入和输出传递</b><p >这种方法的优点如下:<p ><ul><li>抽象。调用程序只需要知道定义业务实体的数据,而不需要知道业务实体的具体类型或具体结构。 <p >序列化。标量值本身支持序列化。 <p ><li>内存使用效率高。标量值只传递实际需要的数据。 <p ><li>性能。当处理实例数据时,标量值具有比本文所述的其他方法更高的性能。 </ul>这种方法的缺点如下:<p ><ul><li>紧密耦合与维护。架构的更改可能需要修改方法签名,这会影响调用代码。 <p ><li>实体集合。要向数据访问逻辑组件保存或更新多个实体,必须进行多次单独的方法调用。这在分布式环境中会给性能带来很大影响。 <p ><li>支持开放式并发。要支持开放式并发,必须在数据库中定义时间戳列并将其作为数据的一部分。</ul>将<B>XML字符串作为输入和输出传递</b><p >这种方法的优点如下:<p ><ul><li>松散耦合。调用程序只需要知道定义业务实体的数据和为业务实体提供元数据的架构。 <p >集成。采用 XML 可以支持以各种方式(例如,.NET 应用程序、BizTalk Orchestration 规则和第三方业务规则引擎)实现的调用程序。 <p ><li>业务实体集合。一个 XML 字符串可以包含多个业务实体的数据。 <p ><li>序列化。字符串本身支持序列化。</ul>这种方法的缺点如下:<p ><ul><li>需要重新分析 XML 字符串。必须在接收端重新分析 XML 字符串。很大的 XML 字符串会影响性能。 <p ><li>内存使用效率低。XML 字符串比较繁琐,因而在需要传递大量数据时会降低内存使用效率。 <p ><li>支持开放式并发。要支持开放式并发,必须在数据库中定义时间戳列并将其作为 XML 数据的一部分。</ul><p align="center"><font color="FF0000" >1</font>23<span class="content01">下一页&gt;&gt;</span></p></p>
您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-6 12:13 , Processed in 0.125299 second(s), 23 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表