如何回滚Web服务中使用的功能?我应该使用交易吗?

时间:2011-03-31 19:04:59

标签: asp.net web-services

我正在开发一个连接到Web服务的Web应用程序。 Web服务给了我两个独立的功能,但它们彼此相关。 RegisterWorker函数注册一个worker并为他/她生成一个代码。 InsertWorkerInformation函数,根据生成的代码在数据库中插入一些工作人员信息。

function int RegisterWorker(parameters)
{
  return Genereated worker code;
} 

function int InsertWorkerInformation(int generated worker code)
{
   return 1;//If Success Insert information in DB
   return 0;//If fails
}

我的网络应用程序收到用户填写的所需信息,第一个调用RegisterWorker函数,然后调用InsertWorkerInformation函数。

int code=RegisterWorker(parameters)
InsertWorkerInformation(code)

第二个函数绝对必须在第一个函数后运行。 我想知道如果第一个函数正确执行但第二个函数没有正确执行,我该怎么办。(可能会丢失Web应用程序和Web服务之间的连接等) 我该如何回滚第一个函数?

1 个答案:

答案 0 :(得分:4)

一般情况下,你没有。普通的Web服务是一种断开连接的模型。围绕多个Web服务调用没有任何交易。

如果您可以访问此Web服务的代码,则可以创建一个在一次调用中执行这两个操作的Web方法,并在内部使用事务。

或者,是否有“UnRegisterWorker”?如果是这样的话,可能会在你的catch块中“伪造”回滚。