asp.net-mvc – 可扩展的SignalR Azure – 在哪里放置SignalR,我
我正在开发一个具有各种类型通知的应用程序.通知示例:
>消息创建 我想将所有这些都绑定到SignalR,以便任何连接的客户端实时获得更新. 就架构而言 – 现在该应用程序完全位于Azure网站上托管的单一解决方案中.每种通知类型的触发器都存在于此应用程序中. 当触发器被击中时,我想告诉signalR,“嘿,将此消息发送给以下客户端”以及userIds列表.我假设可以基于userId识别连接的客户端……我假设向客户端发送消息的过程应该在Web应用程序之外执行,以免降低MVC应用程序或风险在断开的异步调用中丢失数据.第一个问题 – 这些假设是否正确? 假设如此,这意味着我需要像专用的web / worker角色那样向客户端发送消息.我可以将来自我的Web应用程序的消息直接传递给此过程,但是如果该过程死亡会发生什么?弹性问题让我相信传递消息的正确方法是通过某种队列.第二个问题 – 这是一个有效的思路吗? 假设是这样,这意味着我可以使用一个好的’Azure SQL数据库作为队列,但似乎有一些专门的(也许更便宜的)服务来处理消息队列,例如: http://www.windowsazure.com/en-us/develop/net/how-to-guides/queue-service/ 第三个问题:这应该用作signalR的排队机制吗?我有兴趣在将来使用Redis进行缓存…… Redis会比队列服务更好还是更差? 最后的问题: 我试图在这里说明我提出的架构: 我在这里最不清楚的是MVC应用程序将如何知道何时排队,或者SignalR进程将如何知道何时进行广播. MVC应用程序应该盲目排队,而不关心连接的客户端吗?这似乎在队列中引入了大量浪费的空间,并且在工作者角色中浪费了周期,因为很少一部分客户端将被连接. 我能想到的唯一其他方法是以某种方式让MVC应用程序可以看到SignalR进程,以查看客户端是否已连接……如果是,则为Enqueue.这让我感到不舒服,因为这意味着我必须在图表上为每个被击中的触发器击中红线,即使完成异步 – 让我担心性能和可靠性. 可扩展,高性能SignalR消息广播的推荐架构是什么?绩效是重中之重,紧随其后的是成本. 奖金问题: >如果某些消息的优先级高于其他消息怎么办?是否应该使用两个队列,其中一个总是在另一个队列之前被检查? 解决方法
如果你想针对一些用户,你将不得不想出一个机制,我可以举一个例子,如果有任何用户点击一个页面,你可以为该页面创建一个组并推送到所有用户该组/该页面中的用户.
我不清楚为什么你需要队列.通常用户在点击页面时会订阅某些事件,或者通过加入聊天室等某些操作来订阅,服务器会在适当的时候使用这些事件/功能来推送数据. 为了扩展,您可以在不同的服务器上运行signalr,在这种情况下,您应该使用sql server,或者使用service bus或redis作为背板. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 如何为ASP.NET 4.5 Web API创建MultipartFo
- asp.net-mvc – Font Awesome在优化和CDN时无法在Firefox中
- asp.net(c#)动态修改webservice的地址和端口(动态修改配置
- ASP.NET:在URL中隐藏查询字符串
- asp.net-mvc – 如何在ASP.NET MVC 3 WebGrid列名(Header)中
- asp.net ajax实现无刷新验证码
- asp.net-mvc-3 – FluentValidation入门问题
- asp.net-core – 安装特定版本的dnx
- asp.net-mvc – ASP.NET MVC泛型基础视图类
- asp.net – Web.config加密错误
- asp.net-mvc – 使用ASP.NET MVC中绝对路径访问视
- asp.net-core – 使用新的signalR for DotNet核心
- asp.net – 使用Microsoft Access和VB.NET进行SQ
- ASP.NET优化不会将LESS转换为CSS
- asp.net-mvc – 该类型不能分配给服务autofac
- asp.net-mvc – 如何使用不同的名称绑定视图模型
- asp.net-mvc – 返回空ActionResult
- regex – ASP Classic:检查字符串是否只包含有效
- asp.net – 来自masterpage的Html.RenderPartial
- ASP.NET MVC在IIS7下发布无法显示的解决办法