我目前正在设计一个最终希望迁移到 Windows Azure 的应用程序。然而,在短期内,它将在我自己托管的服务器上运行。
该应用程序涉及许多独立的 Web 应用程序——其中一些本质上是接收数据的 WCF 服务,而另一些则是供用户管理数据的站点。此外,需要有一个在后台运行的工作服务,它将以各种方式处理数据。
我非常热衷于为此使用解耦架构。理想情况下,我希望组件(即 Web 应用程序和工作服务)尽可能少地相互了解。似乎在这里使用消息队列将是最好的解决方案 - Web 应用程序可以将带有工作单元的消息排入队列,并且工作服务可以将它们挑选出来并根据需要进行处理。
但是,我想为此制定一套好的技术,记住我最终将迁移到 Azure,并希望在迁移到云时尽量减少我需要做的返工量. Azure 有一个内置的队列组件,看起来非常适合我的需求。我想做的是自己创造一些东西,它会尽可能地模仿这一点。
看起来有几个选项(我在 Windows 上使用 .NET,带有 SQL Server 2005 后端)——到目前为止我发现的选项是:
- MSMQ
- SQL Server 服务代理
- 使用数据库表和一些存储过程滚动我自己
我想知道是否有人对此有任何建议 - 或者是否有人做过类似的事情并对要做/避免的事情提出建议。我意识到每种情况都是不同的,但在这种情况下,我认为我的排队要求非常通用,所以我很想听听其他人对最佳方式的想法。
提前致谢,
约翰