C# 我们真正想要的是哪种mvc3/c技术/体系结构—nservicebus、WCF还是其他什么?

C# 我们真正想要的是哪种mvc3/c技术/体系结构—nservicebus、WCF还是其他什么?,c#,asp.net-mvc,wcf,asp.net-mvc-3,nservicebus,C#,Asp.net Mvc,Wcf,Asp.net Mvc 3,Nservicebus,这是我们需要做的 我们有一个允许管理各种实体的web应用程序(MVC3)。让我们说“学校”、“学生”和“老师” 当这些实体中的任何一个发生更改(创建、更新或删除)时,我们需要将更改告知另一个系统。我们无法控制另一个系统,但我们可以访问一个web服务,让我们对它进行实时更新 我知道我不想让我们的用户在我们连接到这个web服务并进行更新时等待,所以我们必须有一种方法将更新排队,并将更改作为一个完全独立的过程的一部分 我真的很感激任何解决这个问题的架构指针。我确信有一些现有的框架可以管理这个队列,例如

这是我们需要做的

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

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

我知道我不想让我们的用户在我们连接到这个web服务并进行更新时等待,所以我们必须有一种方法将更新排队,并将更改作为一个完全独立的过程的一部分

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


干杯

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

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


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

NServicebus将提供您需要的排队。它提供事务性支持,并在需要重新处理失败消息时提供返回源队列实用程序。我建议在这里使用第三个系统来处理调用web服务的问题。此消息处理程序将从队列中读取并调用web服务

客户端->发布NServiceBus消息->消息处理程序->Web服务


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

请阅读有关CQR和service busThanks的文章,Gregory。的确,另一个系统只关心准确的数据。不过,我们无法在数据库级别与该系统集成,只能通过他们提供的RESTful web服务。谢谢,John-这非常有用。很高兴知道,想到NServiceBus,我并没有完全偏离目标。这样,更改的对象(“教师”记录或其他内容)如何持久化到队列中?是原始C#对象还是序列化对象,还是其他对象?通常您会对消息数据使用DTO,并将其作为实现IMessage的类的属性。