【问题标题】:WCF Endpoint with Priority [closed]具有优先级的 WCF 端点 [关闭]
【发布时间】:2008-10-08 16:01:40
【问题描述】:

我需要具有 3 个端点的 WCF 服务

  1. 正常

大多数消息将通过正常和低端点发送。 如果出现高消息,则必须尽快处理。

有人知道怎么做吗???

【问题讨论】:

    标签: wcf endpoint


    【解决方案1】:

    您应该看看 MSDN 杂志上 Michele Leroux Bustamante 的这个由两部分组成的精彩系列:

    Building a WCF Router, Part 1Building a WCF Router, Part 2

    尤其是第 1 部分,您会很感兴趣:

    有时引入一个 之间的中介或路由器服务 一个客户端和一个目标服务 接收在之间流动的消息 他们并执行其他活动 例如日志记录、优先路由、 在线/离线路由,加载 平衡,或引入证券 边界。当这样一个中间 服务被引入,它变成 有必要调整一些寻址和 消息过滤行为 适应。

    [我的重点已添加]

    她的blog 上也有相关的source code

    【讨论】:

    • 博客和链接不见了
    【解决方案2】:

    为什么不运行两个单独的端点进程,一个用于低/正常,一个用于高。如果你有能力,你甚至可以将它定位在单独的(更好的?)硬件上。否则,如果您必须在单个进程中执行此操作,那么在我看来,优先队列似乎是您所需要的。

    【讨论】:

      【解决方案3】:

      我能想到的最简单的方法是两次部署您的服务:一次使用低/中端点,然后使用完全不同的实例使用高端点。正如 Endian 在他的回答中所说(我投票支持 BTW),你可以在物理上将它们分开,但你也可以让它们运行 在同一个盒子上是你谁使用不同端口的两个实例。如果我必须这样做,这就是我会这样做(或真正推动)的方式。

      您的另一个(不吸引人的)选项是创建一个自定义通道,该通道能够处理消息并将它们放在单独的“VIP”行中,以及可以从“VIP”行中提取的相应操作行为服务操作已准备好接收消息。与第一个选项相比,这并没有真正为您买任何东西,因为您所做的只是确保您的服务在一个“集合”服务实例中运行。我猜在你的情况下,这对你没什么好处。

      就停止和重新启动服务是更高优先级的请求而言,有龙。如果可能的话,我会避免它。如果没有,您可能需要考虑将服务创建为 WF 工作流并使用它的一些流程启动/停止功能,但您仍然需要一些自定义通道和一些自定义行为才能使其正常工作。此时,您可能需要考虑 BizTalk。

      【讨论】:

        【解决方案4】:

        我想您必须自己实现该优先级。

        如果有高优先级,您将不得不停止其他所有事情(保存其状态或其他内容)并开始做任何需要做的事情。

        只是一个想法

        【讨论】:

        • -1 没错,“只是一个想法”。问题是“有人知道怎么做吗???”
        猜你喜欢
        • 2010-09-28
        • 1970-01-01
        • 1970-01-01
        • 2014-03-15
        • 2023-04-02
        • 1970-01-01
        • 2011-01-18
        • 1970-01-01
        相关资源
        最近更新 更多