1

任何人都给了我在 Windows 8 中一次提交多个事务的想法。即通过使用并发需要一次提交所有事务。有可能吗?如果可以,那么请给我在 Windows 8 中实现的想法。

编辑:

多个事务同时来自不同的用户,然后我需要一次将所有这些事务提交到服务器。在 Windows 8 中有并发更新机制。就像我需要将所有这些事务提交到服务器。请告诉我这个想法.

提前致谢。

4

2 回答 2

0

您有一个接受来自不同客户端的连接的数据库服务器,并且您希望同步它们,以便它们都被视为一个大型数据库事务。我认为这不能以简单的方式完成。

您需要您的客户将他们的数据保存到中间位置(例如,“即将保存”的表),然后根据您定义为“一次”的内容,偶尔将数据从中间表到“真正保存”的表。

您可以在数据库中实现从即将保存到真正保存的这种转换,因此您不需要额外的服务器。

但请记住,让多个客户直接访问您的数据库几乎从来都不是一个好主意。

于 2013-06-07T06:39:20.147 回答
0

所以,这很棘手。您的问题标题使这听起来像一个数据库问题。当然,如果没有 Windows 8 中的 ADO.Net,那么在论坛中就不会出现很多交易。但是您想要的是多个用户的请求作为单个原子操作进行处理。

让我们来看看。有很多方法可以做到这一点。但是让我们假设你有一个有两种方法的服务。AddToQueue(request) 和 CheckStatus(request)。这两种方法实际上会为您创建交易。像这样的东西:

场景 1(没有任何问题)

  1. 用户 A 使用 AddToQueue(),添加他向银行添加 $1 的请求
  2. 用户 B 使用 AddToQueue(),添加他的向银行添加 $2 的请求
  3. 用户 A 使用 CheckStatus(),查看他的请求是否完成,它是 PENDING
  4. 用户 C 使用 AddToQueue(),添加他向银行添加 $1 的请求

让我们假设队列中的三个项目触发事务发生

  1. 系统批处理 3 个现有请求,在一个事务中执行
  2. 系统将请求标记为成功
  3. 用户A使用CheckStatus(),查看他的请求是否完成,是SUCCESS
  4. 用户B使用CheckStatus(),查看他的请求是否完成,是SUCCESS
  5. 用户C使用CheckStatus(),查看他的请求是否完成,是SUCCESS

场景 2(出现问题)

  1. 用户 A 使用 AddToQueue(),添加他向银行添加 $1 的请求
  2. 用户 B 使用 AddToQueue(),添加他的向银行添加 $2 的请求
  3. 用户 A 使用 CheckStatus(),查看他的请求是否完成,它是 PENDING
  4. 用户 C 使用 AddToQueue(),添加他向银行添加 $1 的请求

让我们假设队列中的三个项目触发事务发生

  1. 系统批处理 3 个现有请求,在一个事务中执行
  2. 系统将请求标记为失败(无论出于何种原因)
  3. 用户A使用CheckStatus(),查看他的请求是否完成,是FAIL
  4. 用户 A 使用 AddToQueue() 重试
  5. 用户 B 使用 CheckStatus(),查看他的请求是否完成,是 FAIL
  6. 用户 B 不重试
  7. 用户 C 使用 CheckStatus(),查看他的请求是否完成,是 FAIL
  8. 用户 C 使用 AddToQueue() 重试
  9. 用户 D 使用 AddToQueue(),添加他向银行添加 $1 的请求

让我们假设队列中的三个项目触发事务发生

  1. 系统批处理 3 个现有请求,在一个事务中执行
  2. 系统将请求标记为成功
  3. 用户A使用CheckStatus(),查看他的请求是否完成,是SUCCESS
  4. 用户 B 在这种情况下不再活动!
  5. 用户C使用CheckStatus(),查看他的请求是否完成,是SUCCESS
  6. 用户D使用CheckStatus(),查看他的请求是否完成,是SUCCESS

说得通?那会很好用。

当然,还有更多需要考虑的事情。但这就是它的基础。

祝你好运!

于 2013-06-08T03:59:37.653 回答