【发布时间】:2016-05-13 20:22:42
【问题描述】:
所以我有一个 SPA(单页应用程序),其中 AngularJS 作为前端,.NET Web API 作为后端(C#)。我需要根据某些用户操作生成 SQL Server Reporting Services (SSRS) 报告,即选择一些数据并按下按钮。这是我现有架构的粗略说明:
FRONT END BACK END SSRS Report
========== ========= ===========
**AngularJS Web page**-->**.NET Web API controller**-->**Intermediary class (passes arguments to report)** -->**Generate report and save to file**
这可行,但问题是在生成报告时,应用程序必须坐在那里等待它们完成,同时用户不能做任何事情。如果要创建许多报告,例如 100 多个,则可能需要一两分钟以上的时间,这对我来说是不可接受的。
这就是 RabbitMQ 的用武之地。我的想法是让 .NET Web API 控制器向服务器发送消息,一旦服务器接收到消息,就会对上面的中间类执行调用,从而生成报告,然后将响应发送回客户端,让他们知道报告已生成。我想我需要为此使用 RPC 场景,所以我在 RabbitMQ 网站上完成了相应的教程,看起来很简单。
但我不知道,这就是我的问题,是如何从 .NET Web API 应用程序启动客户端和服务器。坦率地说,我现在有点迷茫,因为这是我第一次真正体验任何类型的消息传递,我不太确定如何处理它,架构方面的。如果我能在脑海中详细了解整个事情是如何工作的,我可以从那里编写代码,但是在这一点上,我无法想象如何构建应用程序。
所以,问题:
如何从 .NET Web API 控制器启动 RabbitMQ 服务器和客户端?服务器和客户端应该是类库还是控制台应用程序,还是完全是其他东西?
我所设想的架构会起作用还是有更好的方法?
任何关于如何实现我想要完成的任务的一般性建议都将不胜感激。
【问题讨论】:
标签: c# asp.net-web-api reporting-services rabbitmq