首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP .NET与WCF并发控制

ASP .NET与WCF并发控制
EN

Stack Overflow用户
提问于 2011-03-30 18:36:27
回答 1查看 440关注 0票数 2

我想根据您在基于SOA的体系结构方面的经验以及如何通过WCF和nHibernate实现并发控制,向大家提供建议。

  1. ASP .NET (web应用程序)-1层(网络服务器)
  2. WCF+nHibernate -第二层(应用服务器)

Scenario1

User1现在已经打开了一个订单并编辑了它。User2同时打开相同的订单并对其进行编辑。

如何防止User2执行此操作。对“编辑顺序”的两个WCF调用都使用不同的nHibernate会话获取记录,因为应用服务器设计为无状态。

如何配置nHibernate/WCF来处理这种场景?

Scenario2

如果输入订单涉及多个页面;随着基于业务逻辑的页面显示(WCF调用确定下一页),是否应该在这些页面上维护订单数据(ASP .NET),并将其张贴在每个WCF调用上,以处理订单业务逻辑?我的想法对吗?

我知道另一种方法,就是创建一个临时订单记录,以维护跨页面/WCF调用的中间数据。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-30 18:55:37

关于第一种情况,您不希望阻止用户进行编辑;如果尝试执行悲观的并发性,您的系统将永远不会扩展。

相反,您希望使用乐观并发;您的模型将有一个时间戳(通常是一个实际的日期时间值,或者更好的是,某些类型的二进制值保证对特定的上下文/表是唯一的)。大多数ORM(我确信包括nHibernate )都支持乐观并发性;在生成更新时,只有在主键相同且时间戳相同的情况下,它才会更新记录,如果不是,那么您就知道自上次获取数据以来,还有人编辑了记录。

对于第二个场景,您可能需要考虑Windows工作流,它与WCF紧密集成。不过,通常情况下,我会有一个单独的表,其中包含不完整的订单信息以及用户可以使用的键(可能是会话id)来查找数据。

只有当您知道订单已经完成时,才会将数据从“暂存”表移到真正的订单表。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5490626

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档