环境:
A网站有A数据库 用于用户在网上下订单
B服务器有B数据库,用于保存在和个地区的订单汇总 方法:启动事务
if(本地更新)
{
如果本地更新成功,通过services更新b服务器
if(services更新成功)
返回更新成功信息,
根据服务器返回数据再提交本地更新
//在这里再次提交本地更新的时候,出错了,这时就会让本地回滚,但WebService已经提交了 怎么回滚?
else
本地回滚
}
else
{
不成功,则services不调用
}
A网站有A数据库 用于用户在网上下订单
B服务器有B数据库,用于保存在和个地区的订单汇总 方法:启动事务
if(本地更新)
{
如果本地更新成功,通过services更新b服务器
if(services更新成功)
返回更新成功信息,
根据服务器返回数据再提交本地更新
//在这里再次提交本地更新的时候,出错了,这时就会让本地回滚,但WebService已经提交了 怎么回滚?
else
本地回滚
}
else
{
不成功,则services不调用
}
try
{
string result = MyServices();
}
catch
{
isSuccess = false;
}if (isSuccess)
{
根据服务器返回数据再提交本地更新
}
else
{
本地回滚
}
try
{
根据服务器返回数据再提交本地更新
string isSuccess = MyServices(); //MyServices种启动事务处理,
if(!isSuccess )
{
本地回滚
}
}
catch
{
本地回滚
}
RE
------------------------
楼上的两位看清楚我的问题啊
我的问题不是更新WebService出错怎么办,
我是说WebService成功后,再去更新本地,而本地这时个出错要回滚
那WebService那边已经提交的怎么回滚谢谢
------------------------------------------------
记录下来,人工处理,好像不太现实啊
程序上就不能回滚掉刚才的WebService谢谢
可以在B上提供一个回滚的webservice,问题是,如果此时回滚服务器B也不成功怎么办?这种分布式的事务,如果无法再同一个事务上下文中处理,那么就只能采用写日志/事务补偿等方式处理