繁体   English   中英

基于.NET MSMQ的同步系统的体系结构

[英]Architecture of .NET MSMQ-based synchronization system

我有一个简单易用的现有ASP.NET MVC Web解决方案。 基于服务器的内容将信息写入数据库。 现在,我要将此系统与其他许多第三方系统集成/同步。 我想将集成处理与现有核心处理分开,使现有系统尽可能保持不变。

我的计划如下:

  1. 每当在核心系统服务器上发生数据库写操作时,我都会向MSMQ队列写一条消息。
  2. 一个完全独立的基于服务器的Windows服务将轮询MSMQ,查看消息并将消息写入一个或多个“出站”同步MSMQ队列。
  3. 其他Windows服务将监视“出站”同步队列,并在必要时与第三方系统进行通信,以管理出站同步。

我有几个问题:我应该只用一个Windows服务来完成所有这些工作,还是应该有几个服务,一个中央“路由”服务,每个第三方系统一个服务? 我应该使用WCF进行任何此类操作。 考虑到用于写入初始队列的“触发”已经在基于服务器的进程中“发生”,那对我有什么帮助?

非常感谢。

首先,单独的Windows服务总是比任何将其与asp.net运行时集成的尝试都更安全。

其次,不要自己写任何东西。 采用

http://code.google.com/p/masstransit/

它很简单,可以满足您的所有需求。 从他们的nuget包中引用该库,阅读一些教程,您会喜欢它的。

要回答您的问题:

我应该只有一个Windows服务来完成所有这些工作吗

当然不。 如果要扩展路由服务或将其迁移,该怎么办?

我应该使用WCF吗

如果您对msmq有所了解,那么WCF的唯一好处就是它提供了一种方便的,行之有效的方法来设计和托管服务端点,并且是在System.Messaging中进行处理的替代方法。 我想说,在此阶段没什么大不了的。

那买什么东西吗

不确定您的意思,但是正如Wiktor在他的帖子中所说,您可以选择不使用vanilla .Net或WCF,而选择诸如masstransit或nservicebus之类的服务总线类型框架。

这样做的好处是,它使您脱离了消息传递子系统,因此理论上您将来可以从msmq转移到Rabbitmq或Azure队列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM