Web services Webservice中的Oracle事务回滚
我有几个事务要将表单数据插入到oracle表中Web services Webservice中的Oracle事务回滚,web-services,oracle,c#-2.0,Web Services,Oracle,C# 2.0,我有几个事务要将表单数据插入到oracle表中 if (InsertQuarterly() == true) { InsertMeasures(); } 如果insertmeasures过程成功执行,那么我必须调用另一个过程。 在InsertQuarterly中,我调用一个webservice方法将数据插入到Oracle表中 例如 对于InsertMeasures我正在调用webservice sOUT = ws_
if (InsertQuarterly() == true)
{
InsertMeasures();
}
如果insertmeasures
过程成功执行,那么我必须调用另一个过程。
在InsertQuarterly
中,我调用一个webservice方法将数据插入到Oracle表中
例如
对于InsertMeasures
我正在调用webservice
sOUT = ws_service.InsertMeasures(txtachieveGold.Text, txtachieveDia.Text)
我的问题是,如果InsertQuarterly
成功执行,但如果InsertMeasures
在事务期间失败,那么我还想回滚InsertQuarterly
。
我怎样才能做到这一点?我可以将OracleTransaction
与transaction.Rollback()
一起使用。
但是我对事务使用不同的webservice方法。
如何在此处管理回滚和提交
处理事务的最佳程序是什么?您需要Web服务提供商的合作 Web服务标准允许服务提供者跨服务调用提供事务行为。根据我的经验,支持事务性的服务作者相对较少。如果您使用的服务提供了这样的功能,那么您需要了解在您的环境中使用WS-AtomicTransaction的细节 然而,在提供此类事务性服务时存在相当大的管理费用和操作复杂性,这很可能是很少有人这样做的原因。我首选的解决方案是提供一个单一的粗粒度服务,该服务结合了InsertQuarterly和InsertMeasures的功能,这样实现就可以在单个服务调用中非常轻松地管理Oracle事务 另一种可能性是开发幂等服务(可以安全地多次调用的设备)。然后,客户机有责任重复调用InsertQuarterly()和InsertMeasures(),直到两者都起作用为止,只有在服务是幂等的情况下,才能安全地重复调用 所有这些方法都需要您的服务提供商实现一些合适的方法,您不能仅在客户端代码中解决这个问题
sOUT = ws_service.InsertMeasures(txtachieveGold.Text, txtachieveDia.Text)