gpt4 book ai didi

带有通知的客户端/服务器的 WCF 最佳实践

转载 作者:行者123 更新时间:2023-12-04 05:51:12 25 4
gpt4 key购买 nike

首先:对于我将要描述的问题,我们有一个可行的解决方案,但感觉不对。

我们有一个应用程序,其中包含一个应用程序服务器和大约 30 - 100 个客户端。扩展服务器不是问题。最重要的是从服务器到客户端的通知 ,但当然也有从客户端调用到服务器的服务方法。

我们现在要做的是创建一个带有回调 channel 的服务契约,在服务中注册客户端(即服务包含事件回调 channel 的列表)并通过这些回调 channel 发送通知。

我们需要解决的问题是:

  • 连接超时 - 该服务现在包含一些 KeepAlive 方法,客户端大约每分钟 ping 一次
  • 服务器或网络故障后重新连接客户端 - 这是我关心的主要问题。目前我们有一个长时间运行的客户端对象(服务引用,继承自 DuplexClientBase)来调用服务和回调对象来处理收到的通知。上 client.Faulted我们尝试用新创建的客户端替换客户端和回调对象,直到可以再次访问服务器。这种方法涉及到一些奇怪的异常处理...

  • 问题:在每个客户端上启动一个 WCF 服务并在服务器上注册每个客户端的端点会更好吗?对于所描述的两个问题,有没有更好的解决方案?

    编辑:重点是:我错过了什么吗? - 我相信所描述的架构应该很常见,我正在寻找“默认”的最佳方式来做到这一点。这种设置没有一些样本吗?

    最佳答案

    如果您的问题与可用性有关(在这种情况下是服务 -> 消费者和消费者 -> 服务的可用性),那么也许您应该考虑使用一些更容错的传输,如 MSMQ(也许使用 netMsmqBinding)。

    您可以使用简单、持久的订阅存储替换复杂的 WCF 回调基础结构。

    当您需要发送“回调”时,只需从您的订阅商店中检索消费者列表并向每个消费者发送一条消息。

    连接永远不会超时,因为您没有有状态的连接。

    网络故障后从消费者到服务的重新连接也得到了解决——事实上,小的网络中断甚至不会引起注意。

    抱歉,这并没有直接回答您的原始问题,并感谢您对这种规模的返工可能不在您的要求范围内。

    关于带有通知的客户端/服务器的 WCF 最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10017812/

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