Silverlight调用WCF调用微服务-如何执行简单的请求-响应?

时间:2018-11-07 21:17:48

标签: wcf silverlight signalr microservices

我们有一个大型,复杂的Silverlight应用程序,可通过WCF异步调用与我们的数据库进行通讯。这些功能包括一个临时报告工具,该工具使用户可以使用各种参数设置来设计和运行报告。

呈现报告需要很长时间(10-120秒),并且占用服务器上的内存和CPU时间,因此它似乎是微服务的最佳首选。我们将让我们的应用程序/ IIS服务器通过消息队列将报告-渲染请求传递给渲染服务器。完成后,渲染服务器将使用队列中准备接收的消息。报告二进制数组的大小可以为几兆字节。

对我而言,弯腰是如何从这种断开的消息传递范式切换回WCF的请求-响应范式?

我在WCF RenderReport()方法中使用async / await很好。但这只是将问题推到了代码的更深层。 不知何故我需要做从消息传递回到请求响应的“相移”。

可能的答案?

  • 通过使用双工WCF将Silverlight客户端包括在消息传递范例中,并使用仍处于打开状态的连接在到达时传输报告数据?这带来了比我现在想承担的复杂性更多的事情,并且在我们考虑向REST过渡时,不希望在WCF上加倍努力。
  • 通过将SignalR添加到Silverlight中来在消息传递中包含Silverlight,并让其向客户端发出报告数据准备就绪的信号吗?但是SignalR只能发送几个KB,因此我无法发送报告数据本身……而且,这又增加了复杂性,并且又增加了一次收集数据的往返行程。
  • 放弃“推送”消息传递,只对结果进行Silverlight投票。

我还缺少其他选择吗?

0 个答案:

没有答案