我正在开发一个连接到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服务之间的连接等) 我该如何回滚第一个函数?
答案 0 :(得分:4)
一般情况下,你没有。普通的Web服务是一种断开连接的模型。围绕多个Web服务调用没有任何交易。
如果您可以访问此Web服务的代码,则可以创建一个在一次调用中执行这两个操作的Web方法,并在内部使用事务。
或者,是否有“UnRegisterWorker”?如果是这样的话,可能会在你的catch块中“伪造”回滚。