具有事务提交返回的C#Web服务方法

时间:2012-09-29 18:18:25

标签: c# web-services transactions

是否可以创建一个Web服务,包括执行某些操作的方法,然后期望返回值/操作提交这些操作?

我需要一个返回一些值的方法。在返回这些值的过程中,需要插入一些数据。收到这些返回值后,我需要确保我能够处理它们然后提交初始方法。

如果方法没有收到标志/ commit / whatever,则回滚插入。

这可能吗? (对不起,如果措辞不清楚,希望我能够理解)

我这样做是因为我需要获取一组数据,即使用常规SQL返回的速度很慢。我打算在服务器上压缩(格式化)数据(使用Web服务),并让方法以压缩二进制类型将其返回给我。如果在获取或处理压缩二进制文件时出现问题,我需要能够回滚整个过程。

3 个答案:

答案 0 :(得分:1)

在收到Web服务响应后,无法通过单个Web服务调用完成Web服务端的提交,我担心。 Http Web服务是无状态的,您可以使用会话使其成为有状态的。您可以将两个服务用于接收响应,另一个用于执行提交。在这两个调用之间,如果可以提供帮助,您可以使用会话。

  1. 调用以接收一组值。您可以为下一个呼叫超时设置会话,例如您不应该在第一次通话中启动交易。只需返回结果。如果您的结果符合提交保存数​​据与交易的要求。你可以在DB记录中有一些标志,指示第一次调用中的未完成事务,并提交或删除第二次调用并相应地设置标志。

  2. 根据第一个调用结果调用commit,并将事务置于此处以保存数据。

答案 1 :(得分:0)

我认为你需要两个网络服务(如果我正确理解你的问题)。第一个执行操作并返回一个值。如果调用程序验证返回值,则它调用第二个Web服务来执行提交。有意义吗?

答案 2 :(得分:0)

我认为解决方案应该是这样的。

Method 1 - Create record and return the uid of it. Insert record in pending state
 Method 2 - Take parameter of created record and operation (approve or reject). Change the state of the record entered in method1.