4

鉴于 Web 是一种非常单向的同步架构,使用 MVC4 启用 NSB 的 Web 应用程序有什么好处吗?

我喜欢 NSB 带来的容错性和易于开发,但由于该技术都是关于单向异步消息传递的,我如何围绕它设计我的应用程序,使用户不会(经常)注意到他们的回发发生时命令尚未完成?在设计我的 UI 以自然地适应 NServiceBus 的曲率时,我应该采用什么范式?

事实上,NSB 似乎是网站与其 SQL 存储之间不必要的复杂性,因为用户总是认为当他们的浏览器完成刷新时“工作”已经完成。在这方面我错了吗?

编辑:我见过其他解决方案,其中每个命令处理程序在 NSB 服务完成工作时发布一个事件,并且 ASP.NET 项目上的事件处理程序将创建启用 Java 脚本的页面不断的“存根文件”轮询以指示操作已完成。这是弥合单向同步和异步平台之间差距的唯一方法吗?

4

2 回答 2

3

NServiceBus 非常适合任何 Web 前端。您只需要了解异步消息处理如何影响您的 UI。在大多数情况下,可以简单地向用户表明请求已被接受并将被处理。但在其他情况下,您可能需要放弃最终一致性以立即保持一致。

例如,对于用户注册,我通常检查用户名的可用性,然后立即注册用户,但我发送一个命令以通过电子邮件发送激活消息,这样用户就不必等待。用户最终收到他们的电子邮件。因此会显示一条消息,指示将发送一封电子邮件,并且他们需要单击激活链接,即使该邮件可能仅在 5 分钟内发送。

另一个示例是用户可以将各种文档格式转换为 TIFF 的应用程序。请求将被发送,Web 前端将轮询以等待转换结果,然后显示转换后的页面。

所以它会影响你的 UI/UX 的工作方式。它绝对仍然有用,并且在某些情况下可以让您的生活变得更轻松。

就我而言,我使用了 FOSS Shuttle Service Bus:http ://shuttle.codeplex.com/ --- 但这些概念仍然适用。

于 2013-01-03T06:15:40.637 回答
3

NServiceBus 与典型的 MVC Web 应用程序有挂钩,允许您使用户的回发等待响应通过总线到达。请参阅 AsyncPages 示例以了解它是如何完成的。

于 2013-01-03T12:00:59.767 回答