- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
dataset并发.doc
解决使用 DataSet 对象时出现的数据并发异常
2008-02-25 11:04
ADO.NET 提供的许多技术可以提高 DataSet 中型应用程序的性能,并且使构建这样的应用程序更加容易。DataSet 是 ADO.NET 对象模型的标志,可以用作数据源的小型、断开连接的副本。在使用 DataSet 通过减少往返数据库服务器的巨大开销来提高性能的同时,也引入了因多个用户同时尝试更改同一数据而发生数据并发异常的可能性。本文考查了引起数据并发异常的常见原因,并提出了用于解决这些异常的技术。
将数据访问层升级至 ADO.NET 有许多优点,大多数 ADO.NET 涉及使用内部 DataSet 对象。从根本上讲,DataSet 对象是数据库位于内存中已断开连接的副本。DataSet 对象包含一个或多个数据表,每个数据表通常都与基础数据库中一个表相对应。DataSet 提供了许多优点,但也提出了一些挑战。特别是您可能遇到与数据并发异常相关的问题。我已经创建了一个简单的 Windows?窗体客户服务应用程序,它演示了这一特定问题的潜在缺陷。在本文中,我将向您演示该应用程序,并说明如何解决出现的数据并发问题。
此处展示的客户服务应用程序示例是使用 Visual Basic? .NET 和 SQL Server? 2000 构建的;但是由于 Microsoft? .NET Framework 与语言无关,因此任何 .NET Framework 兼容语言都能使用。同样,由于 DataSet 对象将数据源抽象化,因此数据源的实际实现并不重要;无论基础数据源是 SQL Server、本地 XML 文件,还是从通过服务检索的数据派生而来的,同样都会发生数据并发异常。
DataSet 优点和缺点
数据集提供了许多优点。例如,您可以获得在内存中而不是在数据库级强制完整性规则的能力。DataSet 对象可以定义并强制表之间的关系以及对列的约束,以确保业务规则在不必往返数据库的情况下便可得以应用。通过数据库抽象,您可以编写一组单独的代码来访问 DataSet 对象,而不管填充 DataSet 的数据来源如何。基础数据源可以是 SQL Server?¢Oracle,甚至可以是 XML 文件。不管基础数据的来源如何,您的代码都以同样的方式与 DataSet 交互。这样您就可以更改基础数据源,而不用更改代码。
然而,使用 DataSet 的最重要的优点是提高性能。由于 DataSet 与基础数据库断开连接,代码无需经常调用数据库,因而显著地提升了性能。您可以将许多新行添加到在一个 DataSet 中的多个数据表,并在创建 DataSet 时检查每一行的有效性和引用的完整性。DataAdapter 对象将 DataSet 连接到基础数据库,然后就可以用一条命令来更新基础数据。每个表中的所有新行都是通过该命令添加的,这确保了添加到数据库中的所有行的有效性。
同大多数性能优化一样,这种优化也是有代价的。由于 DataSet 对象与基础数据库断开连接,因而数据有可能过时。由于 DataSet 不能保持实时数据,而是填充 DataSet 时的实时数据的快照,因而有可能出现与数据并发有关的问题。在多个用户访问同一数据时,如果在其他用户不知道的情况下任何一个用户都能更新数据,则可能会发生数据并发问题。然后就有可能某个用户意外地更新数据,而不知道自己正在更改的数据已不是在应用程序中看到的同一数据了。幸运的是,当数据并发问题产生时,DataSet 对象拥有捕获数据并发问题的内置支持功能,以便您的应用程序能作出相应的反应。
示例应用程序
某个虚构的公司使用我创建的客户服务应用程序来代表他们的客户创建定单,同时更新客户个人信息。许多客户销售代表 (CSR) 从自己的桌面上使用该应用程序。这些 CSR 通过电话接受定单,从客户收集个人和付款信息。客户记录保存在数据库中以加快处理回头客户的定单的速度。然后 CSR 创建一个定单,并为每个定单添加单独的产品,指定数量和当前价格。一旦收集到所有的信息,CSR 便按下“Place Order”按钮,这样便将客户和定单记录插入到实际的数据库中。
CSR 也使用该应用程序来完成通过电子邮件或普通邮件发送至公司的请求。这些请求将平均分配给各 CSR,并于每天早上转发给 CSR。CSR 通过往来电话完成这些请求。该系统旨在提高完成请求的速度,然而为此付出的代价便是使 CSR 分享所有的客户。单个客户不管是通过电话还是通过邮件提出的每一个请求都有可能被不同的 CSR 处理,这样便提高了产生数据并发问题的可能性。
为了提高性能,该应用程序在内存中保留一个填有客户和定单的 DataSet 对象。由于许多员工同时使用该应用程序,因而便会有实时数据的许多已
您可能关注的文档
最近下载
- 体例格式12:工学一体化课程《小型网络安装与调试》任务3教学单元2教学单元活动方案.docx VIP
- 体例格式12:工学一体化课程《小型网络安装与调试》任务3教学单元1教学单元活动方案.docx VIP
- 体例格式12:工学一体化课程《小型网络安装与调试》任务3教学单元3教学单元活动方案.docx VIP
- 体例格式12:工学一体化课程《小型网络安装与调试》任务3教学单元7教学单元活动方案.docx VIP
- 体例格式12:工学一体化课程《小型网络安装与调试》任务4教学单元1教学单元活动方案.docx VIP
- 体例格式12:工学一体化课程《小型网络安装与调试》任务4教学单元2教学单元活动方案1.docx VIP
- 京瓷哲学手册.pdf VIP
- 体例格式12:工学一体化课程《小型网络安装与调试》任务4教学单元3教学单元活动方案.docx VIP
- 体例格式12:工学一体化课程《小型网络安装与调试》任务4教学单元5教学单元实施计划.docx VIP
- 体例格式12:工学一体化课程《小型网络安装与调试》任务4教学单元6教学单元活动方案.docx VIP
文档评论(0)