【问题标题】:MSMQ/.EXE vs. Web Service.... MEF IoC?MSMQ/.EXE 与 Web 服务.... MEF IoC?
【发布时间】:2011-03-08 11:36:25
【问题描述】:

我们正在讨论设置通知服务的正确方法。该服务将被各种应用调用,该服务需要返回相关数据。

我的感觉是您只需创建一个 Web 服务,Intranet 门户(或任何东西)可以通过发送用户 ID 访问并作为回报获取任何信息(用户 425 报告是 90 天到期,应用程序已被拒绝......等。 .) 我们有多个 Intranet 应用程序以及门户(我们称它们为 App A、B 和 C)。

这里的另一个人说我们需要使用 MSMQ.. 所以我做了一些研究,据我所知,MSMQ 的重点是当你有一个用户执行某种长且无法运行的请求时同步..如果这些调用需要 0.02 秒.. MSMQ 有什么优势?我所做的只是发回一条消息......

那么哪个更有意义?

奖励:应用程序 A、B 和 C 都有自己的业务逻辑,用于确定将哪些消息发送回主门户应用程序......所以我可以。

  1. 通知 Web 服务是否包含应用程序 A B 和 C 的所有逻辑?现在的问题是,我需要了解应用程序 A B 和 C 的工作方式,以便让 WS 回发适当的消息。

  2. 使用 MEF/IoC,作为构建过程的一部分,我得到了一个实现特定接口的 MEF .DLL。所以我的通知程序 jsut 会转到各种应用程序并说给我你的业务逻辑 DLL.... 所以一旦我拥有所有的 DLL 并知道接口,我就可以循环遍历并获取我需要的数据......这样由其领域的专家 A、B 和 C 的开发人员来实现此消息传递接口。

帮助。 (我几乎不懂 MEF,所以我可能会离开那里)

【问题讨论】:

    标签: web-services msmq mef inversion-of-control


    【解决方案1】:

    我认为这里的部分问题在于,对于 MSMQ 将在其中扮演什么角色存在一些混淆。基本上你有两种方法来做这些通知:

    1. 拥有一系列 Web 服务,可以查询这些服务以获取所需的通知(可以说是拉模型)
    2. 让应用程序发布在其工作过程中发生的状态更改,其中一些可以由通知服务获取然后处理(推送模型)

    现在,在选项 2 的情况下,您可以使用类似 NServiceBus 的东西来设置一个发布/订阅消息系统,该系统将允许应用程序发布系统中的重要事件,以及一个通知服务来订阅需要生成通知的消息。碰巧 NServiceBus 在幕后使用 MSMQ 作为默认传输,所以在这种情况下 MSMQ 会出现,但只是作为实现细节。

    对于选项 1,您可以通过多种方式实现它,包括 WCF Web 服务。

    就我个人而言,我发现 Pub/Sub 模型是最具可扩展性和灵活性的选项,而且项目的文档也高于标准,这很好。

    【讨论】:

    • 我最初的想法是版本 1。它更简单,更切中要害。有人登录,它会向通知系统发出请求以恢复任何通知。如果这些应用程序正在为我的通知服务创建将长时间运行的工作,那么选项 2 对我来说似乎很好......所以假设通知服务可以在 0.05 秒内启动和完成它所做的任何事情......我不明白这一点有任何队列
    • 队列为您提供了一些额外的可靠性,因此如果在 Web 服务调用期间出现一些严重故障(Windows 更新),而不是迷失在以太中,它实际上被写入队列,所以当事情发生故障转移或重新启动时,等待消息被处理。这实际上取决于您如何看待您的架构,您是在询问服务的状态,还是您的服务会提醒其他服务正在发生的事情。
    • 如果我创建了一个 Windows 服务来更新“通知”表并在发现需要发送的通知时创建条目。然后我想其他应用程序可以调用一个查找该 nable 的 Web 服务并返回通知集合..我看不到 pub/sub 在这里有什么帮助,否则我不明白...内部应用程序没有以任何方式“订阅”,除非它们有调用通知的代码网络服务..应用程序没有发布任何状态更改..通知网络服务具有逻辑和数据库。
    • 换句话说,您已经在数据库表之上实现了 MSMQ :-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多