【问题标题】:Which mvc3 / c# technology/architecture are we really looking for - nservicebus, WCF or something else?我们真正在寻找哪种 mvc3 / c# 技术/架构 - nservicebus、WCF 或其他?
【发布时间】:2011-10-20 14:58:28
【问题描述】:

这是我们需要做的。

我们有一个允许管理各种实体的 Web 应用程序 (MVC3)。比方说“学校”、“学生”和“老师”。

当这些实体中的任何一个发生更改(创建、更新或删除)时,我们需要将更改告知另一个系统。我们无法控制其他系统,但我们可以访问网络服务,让我们对其进行实时更新。

我知道我不希望我们的用户在我们连接到此 Web 服务并进行更新时等待,因此我们必须需要一种方法来排队更新并将更改作为完全独立过程的一部分。

我非常感谢任何解决此问题的架构指针。我确信有现有的框架可以管理这个队列,例如,如果通信中断,我们可以重新发送数据 - 但我不知道应该查看哪些框架。

干杯!

【问题讨论】:

  • 了解 CQRS 和服务总线

标签: c# asp.net-mvc wcf asp.net-mvc-3 nservicebus


【解决方案1】:

NServicebus 将提供您需要的排队。它提供事务支持,以及在您需要重新处理失败消息的情况下返回源队列实用程序。我会在这里推荐第三个系统来处理调用 Web 服务。此消息处理程序将从队列中读取并调用 Web 服务。

Client -> 发布 NServiceBus Msg -> MessageHandler -> Web Service

然后,此消息处理程序将为您提供所需的关注点分离。

【讨论】:

  • 谢谢,约翰 - 这很有帮助。很高兴知道我对 NServiceBus 的想法并不完全了解。有了这个,改变的对象(“教师”记录或其他)如何被持久化到队列中?是原始 C# 对象还是序列化对象,还是别的什么?
  • 通常您会使用 DTO 来存储消息数据,并将其作为实现 IMessage 的类的属性。
【解决方案2】:

需要数据更新的其他供应商/客户不依赖于您的应用程序。至少不是从你的解释。它们依赖于准确的数据。这意味着您的问题是数据问题,而不是应用程序问题。从这个角度来看,数据解决方案看起来很有吸引力。

如果您使用的是 SQL Server,我会考虑在数据库上使用触发器并在那里启动。如果您想完全卸载数据库操作和应用程序的工作,那么 SQL Server Service Broker 可以很好地工作。

如果您在另一个数据库平台上,您可能或很多没有队列服务。在这些情况下,您可能需要服务总线,但我想看看是否有更简单可靠的异步方法可以先使用。

【讨论】:

  • 谢谢,格雷戈里。确实,其他系统只关心准确的数据。不过,我们无法在数据库级别与该系统集成,只能通过他们提供的 RESTful Web 服务。
猜你喜欢
  • 2013-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-07
  • 1970-01-01
  • 1970-01-01
  • 2011-07-05
  • 1970-01-01
相关资源
最近更新 更多