WS-AT协议问题

时间:2011-06-15 19:23:24

标签: wcf transactions integration

你能帮我理解WS-AT协议的工作原理吗?我的问题是:客户端服务器如何知道WS-AT协调服务的URL?

3 个答案:

答案 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。