Wcf 服务结构-本地群集-队列

Wcf 服务结构-本地群集-队列,wcf,azure-service-fabric,msmq,bus,queuing,Wcf,Azure Service Fabric,Msmq,Bus,Queuing,我的情况是,我可以使用服务结构(本地),但不能利用Azure服务总线(或任何“云”)。排队/酒吧预订的必然结果是什么?服务结构是允许的,因为它能够在本地容器中运行,并且是“免费的”。其他第三方消息传递基础设施,如RabbitMQ,目前也不在讨论之列 我已经使用本地开发的总线构建了系统,基于MSMQ和WCF构建,但我不知道如何在SF中实现同样的功能。我想我可以让SF服务使用一个定制的ICommunicationListener来公开msmq,但这只在集群内部可用(以我的理解)。我可以在它们前面构建

我的情况是,我可以使用服务结构(本地),但不能利用Azure服务总线(或任何“云”)。排队/酒吧预订的必然结果是什么?服务结构是允许的,因为它能够在本地容器中运行,并且是“免费的”。其他第三方消息传递基础设施,如RabbitMQ,目前也不在讨论之列

我已经使用本地开发的总线构建了系统,基于MSMQ和WCF构建,但我不知道如何在SF中实现同样的功能。我想我可以让SF服务使用一个定制的ICommunicationListener来公开msmq,但这只在集群内部可用(以我的理解)。我可以在它们前面构建一个HTTPBridge(SF),使它们在集群之外可用,但这样我就失去了生命周期解耦(客户端可以使用队列调用服务,即使该服务当时不在线),因为桥本身不会从队列的任何方面受益

我有一些可能性,但都有一些只存在于局部SF的疾病。此外,同样的代码需要轻松地部署到完整的Azure SF(在这里我可以使用ASB,这个问题就消失了),因此我不想仅仅因为在某些情况下托管它而构建两个单独的系统

谢谢你的提示

  • 例如,您可以自己构建它。这将使用
    BrokerService
    ,将消息数据分发给订阅的服务和参与者
  • 您还可以使用运行集装箱排队平台
  • 通过在集群内运行队列系统,您不会引入外部依赖关系

  • 例如,您可以自己构建它。这将使用
    BrokerService
    ,将消息数据分发给订阅的服务和参与者
  • 您还可以使用运行集装箱排队平台

  • 通过在集群内运行队列系统,您不会引入外部依赖关系。

    问题不在于SF,您的设计的主要问题在于将架构需求与实现相耦合。SF运行在VirtualMachines之上,最终,唯一的区别是SF将服务放在这些机器中,使用另一种解决方案,您可以让代理在其中部署这些服务,或者进行手动部署。挑战是一样的

    从描述中可以清楚地看出,设计中的需求是对消息队列的需求,队列的概念是相同的,无论是服务总线、RabbitMQ还是MSMQ。然后,每个队列都将具有队列的基本基础,以及每个实现的细节,一些可能添加事务,一些可能实现多个模式,等等

    如果您根据特定的实现进行设计,您将把您的解决方案与实现结合起来,使您的解决方案难以维护,并面临您所描述的挑战

    像NServiceBus和Masstransit这样的解决方案减少了代码中的许多耦合,如果您认为这些还不够,您可以创建自己的抽象。然后使用配置将业务逻辑与实现绑定起来

    尽管有上述建议,我不建议您使用不同的 每个环境的解决方案,因为如前所述,每个解决方案 它有自己的实现,它们可能不会相互同化,例如,您可能会在 因为您是在开发和测试中针对MSMQ开发的 环境,并且当部署到生产环境时,您使用ServiceBus时 有不同的限制,如邮件大小、保留期和时间 开


    如果您愿意使用MSMQ,您可以将MSMQ添加到运行群集的VM中,并从您的服务进行连接,而不会出现任何问题。首先看看这个问题:

    问题不在于SF,设计的主要问题在于将架构需求与实现相耦合。SF运行在VirtualMachines之上,最终,唯一的区别是SF将服务放在这些机器中,使用另一种解决方案,您可以让代理在其中部署这些服务,或者进行手动部署。挑战是一样的

    从描述中可以清楚地看出,设计中的需求是对消息队列的需求,队列的概念是相同的,无论是服务总线、RabbitMQ还是MSMQ。然后,每个队列都将具有队列的基本基础,以及每个实现的细节,一些可能添加事务,一些可能实现多个模式,等等

    如果您根据特定的实现进行设计,您将把您的解决方案与实现结合起来,使您的解决方案难以维护,并面临您所描述的挑战

    像NServiceBus和Masstransit这样的解决方案减少了代码中的许多耦合,如果您认为这些还不够,您可以创建自己的抽象。然后使用配置将业务逻辑与实现绑定起来

    尽管有上述建议,我不建议您使用不同的 每个环境的解决方案,因为如前所述,每个解决方案 它有自己的实现,它们可能不会相互同化,例如,您可能会在 因为您是在开发和测试中针对MSMQ开发的 环境,并且当部署到生产环境时,您使用ServiceBus时 有不同的限制,如邮件大小、保留期和时间 开


    如果您愿意使用MSMQ,您可以将MSMQ添加到运行群集的VM中,并从您的服务进行连接,而不会出现任何问题。首先看看这个:

    对。我计划设计一个“总线”抽象,以便插入其他实现(一个是“本地”总线,生活在公司网络中,使用可用的部件,MSMQ就是其中之一)。我还将构建一个针对ASB的实现。重点是部署/利用符合需要的总线(mo