gpt4 book ai didi

WCF:如何在 WsHttpBinding 中检测断开连接并获取原始上下文

转载 作者:行者123 更新时间:2023-12-05 01:27:28 26 4
gpt4 key购买 nike

我有一个 WsHttpBinding 请求-回复服务方法,该方法针对中间层服务(连接到数据库)处理事务,并使用事务 ID 向客户端返回响应消息。

我有几个问题:

  1. 如何在客户端收到响应之前检测到意外断开连接/故障?我注意到 channel_faulted 事件永远不会为 WsHttpBinding 触发。

  2. 假设#1 可以实现,我如何才能获得原始交易 ID(在传出响应中),以便回滚/撤销客户端未收到的交易?

非常感谢任何帮助。谢谢。

最佳答案

首先,一般来说,该服务应该对其客户知之甚少或一无所知。系统的设计方式不应像这样紧密耦合。

这对您的场景意味着您可能需要使用可靠的消息传递 - 类似于 NetTCPBindingWSHttpBinding。如果客户端没有收到消息,您的服务器就会知道。

我建议你看看chapter 7 in Juval Lowy's Programming WCF Services .第 7 章是关于 WCF 中的事务的。

WCF 中的事务支持允许您的客户将他们的事务传播到 WCF 服务。

如果您正在使用 WCF 事务并且对客户端的回调由于任何原因而失败,事务将中止(回答您的第二个问题)。通过这种方式,您的服务不需要了解您的客户的任何信息。 WCF 会为您处理。

Lowy 建议结合使用可靠的消息传递和 transactionFlow。像这样的东西:

<netTcpBinding>
<binding name="TransactionalTCP" transactionFlow="true">
<reliableSession enabled="true"/>
</binding>
</netTcpBinding>

关于WCF:如何在 WsHttpBinding 中检测断开连接并获取原始上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6144924/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com