Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wcf 单个服务器端事务中的多个SOAP请求_Wcf_Web Services_Soap_Transactions - Fatal编程技术网

Wcf 单个服务器端事务中的多个SOAP请求

Wcf 单个服务器端事务中的多个SOAP请求,wcf,web-services,soap,transactions,Wcf,Web Services,Soap,Transactions,我正在寻找一种开箱即用的解决方案,以获得一些SOAP请求的服务器端事务。我并没有明确地寻找分布式事务或WS-*标准,因为它们改变了客户端的接口,而我只需要服务器端的接口 因此,对于客户而言: webservice.StartTransaction(); // Or included in DoSomething(...) webservice.DoSomething(Whatever); webservice.DoSomethingElse(); webservice.CommitTransac

我正在寻找一种开箱即用的解决方案,以获得一些SOAP请求的服务器端事务。我并没有明确地寻找分布式事务或WS-*标准,因为它们改变了客户端的接口,而我只需要服务器端的接口

因此,对于客户而言:

webservice.StartTransaction(); // Or included in DoSomething(...)
webservice.DoSomething(Whatever);
webservice.DoSomethingElse();
webservice.CommitTransaction(); // Or included in DoSomethingElse()

在服务器上,事务必须在webservice.StartTransaction()启动,并在webservice.CommitTransaction提交。如果在某个有限的时间段内没有提交,事务应该回滚。

< P>虽然您的要求并不完全清楚,但您可能需要考虑利用Web服务协调(WS-Advices)与Web服务原子事务(WS-ActoMICTACTION)。p> WS-Coordination规范描述了一个可扩展的框架,用于提供协调分布式应用程序操作的协议。这种协调协议用于支持许多应用程序,包括那些需要就分布式活动的结果达成一致协议的应用程序

WS-AtomicTransaction规范提供了原子事务协调类型的定义,该类型将与WS-coordination中描述的可扩展协调框架一起使用。该规范为原子事务协调类型定义了三个特定的协议协调协议:完成、易失性两阶段提交和持久性两阶段提交。开发人员在构建应用程序时可以使用这些协议中的任何一个或所有协议,这些应用程序需要对具有“全部”或“无”属性的短期分布式活动的结果达成一致的协议

基于Microsoft的示例:

这一点非常不清楚。这些请求是从哪里提出的?服务器?服务器代码是如何输入的?通过来自客户端的请求?这些请求是从客户端发出的:客户端执行4个soap调用(示例中的那些)。然后服务器必须在一个事务中处理这4个调用。我不确定“在客户端更改接口”是什么意思。你指的是什么“接口”?“StartTransaction”已经写好了吗?是的,我考虑过了,但它涉及到使用WS-*标准使客户端复杂化。我希望客户端只执行一些基本的soap调用,并在服务器中执行事务处理,这样“哑”客户端仍然可以在原子事务中绑定这些调用。例如,文件上传分两步进行,第一步客户端发送元数据(文件名、注释等),服务器返回correlationId,第二步soap调用客户端只发送correlationId和filedata,然后服务器提交两者。