我目前正在用 c# 构建一个 ASP.NET MVC Web 应用程序。
我想确保构建此应用程序,以便将来可以横向扩展,而无需进行重大重构。
我非常热衷于使用某种队列将任何写入发布到我的数据库库,并有一个进程异步轮询该队列以执行更新。一旦这些数据被发送回数据库,客户端就需要使用新信息进行更新。这意味着根据服务器上执行的业务规则,将数据写回数据库的过程可能需要很短的时间。
我的问题是从客户端\浏览器的角度处理更新的最佳方式是什么。
我正在考虑将数据发送回服务器并将其添加到队列中并立即向客户端发送响应,然后以某种频率轮询以获取更新的数据。对此的任何最佳实践或模式将不胜感激。
此外,在从数据库读取数据方面,您是否建议使用任何特定技术,或者根据我的情况直接从 db 读取就足够了。
更新 我想我会发布一个更新,因为它已经有一段时间了。我们实际上最终使用了 Windows Azure,但该解决方案适用于其他平台。
我们最终做的是使用 Windows Azure 队列来发布消息\命令。这是一个非常快速的过程并立即返回。然后我们有一个工作角色,它在另一个线程上处理这些消息。这使我们能够最大限度地减少网络角色上的任何数据库写入\更新,理论上使我们能够更轻松地扩展。
我们会根据我们处理的数据类型,通过电子邮件甚至静默方式通知用户。