1

我有一个用 ASP.Net WebAPI 编写的服务方法:http ://diningphilospher.azurewebsites.net/api/dining?i=12

JavaScript 客户端获取响应并在此处可视化

但是哲学家就餐问题的本质是我永远不知道什么时候会发生死锁或饥饿。因此,我不想通过请求/响应来流式传输数据,而客户端 JavaScript 则以异步方式读取我假设为 JSON 的数据。目前有几篇文章指导我更改 WebAPI 中的默认缓冲区限制,以便您获得类似流式传输的行为。

存在哪些其他(简单或有效)方法来实现上述行为。

4

1 回答 1

1

您可以从 ASP.NET Web API 返回 PushStreamContent 并在客户端使用服务器发送事件 (SSE) JavaScript API。查看Henrik博客中的推送内容部分。另请参阅Strathweb。我不确定后一种实现的一件事是 ConcurrentQueue 的使用。Henrik 的实现使用 ConcurrentDictionary 并且允许您从与退出的客户端对应的字典中删除 StreamWriter 对象,在我看来,这将很难使用 ConcurrentQueue 实现。

此外,Strathweb 实现使用 KO。如果您不喜欢使用 KO,则不必使用。SSE JavaScript API 与 KO 无关。

顺便说一句,IE 9 或更低版本不支持 SSE。

要考虑的另一件事是横向扩展选项。负载平衡将是有问题的,从某种意义上说,负载可能不会均匀分布,因为客户端与它们首先命中的服务器(或 Web 角色)相关联。

于 2013-05-16T12:58:09.243 回答