Ste*_*e B 5 asp.net-mvc asynchronous signalr message-bus asp.net-web-api
我计划构建一个相当大的应用程序(在并发用户/请求数量方面很大,而不是在功能方面)。
基本上,我将在某处提供服务,即等待命令执行它们,并在稍后确认完成。在发出确认消息之前,此服务将使用服务总线进行通信,从而使执行成为最终结果。
此服务的使用者可以是任何类型的应用程序(WPF、SL、...),但我的主要(也是第一个)客户端将是一个 asp.net MVC 应用程序 + WebApi (.Net 4.5) 或 MVC only (.Net 4.0) ) 与 ajax 控制器操作。
Web 应用程序将依靠 Ajax 调用来保持用户友好的响应式应用程序。
我对这种成熟的异步架构还很陌生,我有一些问题可以避免将来的头痛:
在实现细节/框架方面,我想我会使用:
我的 Web API 调用可能需要一些时间。我应该如何正确设计 api 以支持长时间运行的操作(某种异步?)。
我不是 100% 确定你要去哪里。您提出了有关异步的问题,但也通过引入 RabbitMQ 和 MassTransit 提到了消息队列。消息队列默认是异步的。
您还提到执行命令。如果您指的是 CQRS,则将命令和查询分开。但我并不是百分百了解您在提到“长时间运行的进程”时所指的内容。
使用此模型时,长时间运行的进程可能需要长达 10 分钟才能完成,但这并不重要。我不会详细介绍单个线程实际上需要 10 分钟才能完成,包括数据库锁定,但我希望您能明白这一点。将消息放入队列后,您的 API 几乎会立即释放。那里不需要异步。
我对服务的调用将包括发布消息并等待确认消息。
我不明白这一点。.NET Framework 和您的排队平台会为您处理这个问题。为什么要等待 ack?
在公共交通中
Bus.Instance.Publish(new YourMessage{Text = "Hi"});
Run Code Online (Sandbox Code Playgroud)
在 NServiceBus 中
Bus.Publish(new YourMessage{Text = "Hi"});
Run Code Online (Sandbox Code Playgroud)
我也想知道 SignalR 是否可以帮助我。
我应该这么想吧!由于消息传递的异步性质,用户必须“等待”更新。如果您可以通过 SignalR 将更新“推送”给用户来提供此数据,那就更好了。
我是否完全脱离了主题,我应该采取另一种方法吗?
或许,我还是不确定你要去哪里。也许可以阅读以下资源。
资源:
http://www.udidahan.com/2013/04/28/queries-patterns-and-search-food-for-thought/ http://www.udidahan.com/2011/10/02/why-you-应该使用cqrs-almost-everywhere%E2%80%A6/ http://www.udidahan.com/2011/04/22/when-to-avoid-cqrs/ http://www.udidahan。 com/2012/12/10/面向服务的-api-implementations/
http://bloggingabout.net/blogs/dennis/archive/2012/04/25/what-is-messaging.aspx http://bloggingabout.net/blogs/dennis/archive/2013/07/30/partitioning-data -through-events.aspx http://bloggingabout.net/blogs/dennis/archive/2013/01/04/databases-and-coupling.aspx
| 归档时间: |
|
| 查看次数: |
1950 次 |
| 最近记录: |