你能帮我理解WS-AT协议的工作原理吗?我的问题是:客户端服务器如何知道WS-AT协调服务的URL?
答案 0 :(得分:1)
WS-AT由处理系统上的Web服务的机制处理。例如,如果在Windows上使用.NET,则WCF会处理WS-AT,它使用Windows的分布式事务处理协调器(DTC)来协调事务。显然,它也依赖于WS-Coordination协议。
您确实需要为WS-AT配置系统。在Windows系统上,您可以使用WS-AT Config Utility(另请参阅http://msdn.microsoft.com/en-us/library/ms732007.aspx)。
另见http://docs.oasis-open.org/ws-tx/wstx-wsat-1.1-spec-os/wstx-wsat-1.1-spec-os.html的WS-AT规范和http://docs.oasis-open.org/ws-tx/wscoor/2006/06的WS-COOR规范。
进一步阅读:http://searchsoa.techtarget.com/definition/WS-AtomicTransaction。
请注意,实施WS-AT并非易事,有效协调异构系统上的事务需要很长时间(因此需要对系统进行长时间配置)。
答案 1 :(得分:1)
在协调方面,客户端(或者可能更准确/可能是控制服务)使用本地事务技术(在WCF的情况下为MSDTC)启动事务。当向另一个服务发出请求时,会在消息中发送WS-Coordination标头,并将协调类型标识为WS-AT,协调ID(事务ID)和协调器的地址(在本例中为MSDTC)
答案 2 :(得分:0)
通常,事务协调器位于客户端。当客户端调用事务性Web服务时,它必须包含这样的SOAP头:
<wscoor:CoordinationContext
xmlns:wscoor="http://docs.oasis-open.org/ws-tx/wscoor/2006/06"
SOAP-ENV:mustUnderstand="1">
<wscoor:Identifier>urn:0:ffffac1b0a40:46142b39:57ce82aa:1f57
</wscoor:Identifier>
<wscoor:CoordinationType>http://docs.oasis-open.org/ws-tx/wsat/2006/06
</wscoor:CoordinationType>
<wscoor:RegistrationService>
<wsa:Address>http://xxxx.yyyy.zz:8080/ws-c11/RegistrationService
</wsa:Address>
<wsa:ReferenceParameters>
<wsarj:InstanceIdentifier
xmlns:wsarj="http://schemas.arjuna.com/ws/2005/10/wsarj">0:ffffac1b0a40:46142b39:57ce82aa:1f57
</wsarj:InstanceIdentifier>
</wsa:ReferenceParameters>
<wsa:Metadata>
<wsam:ServiceName xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata"
EndpointName="RegistrationPortType">wscoor:RegistrationService</wsam:ServiceName>
</wsa:Metadata>
</wscoor:RegistrationService>
</wscoor:CoordinationContext>
在<wsa:Address>
,它指定了事务协调器注册服务的URL。