Azure Mobile Services vs web sockets for device as a server
我想到了一个场景,Windows 8应用程序将充当服务器,接收来自不同客户端(其他Windows 8应用程序或Excel Web应用程序)的消息。这些消息需要达到低延迟(在大多数情况下<1s)。 我在考虑许多不同的解决方案。我肯定需要某种服务器主干来进行匹配(将消息路由到适当的设备)。我试着在两者之间做出决定
Azure移动服务。源将向Azure发送消息
Azure会将它们作为推送通知发送给相应的
"服务器"设备。问题是这里的延迟不是很好。
Azure移动服务(或简单的Web API站点之类的东西)仅用于匹配:
将与每个客户建立实际的消息发送
与服务器应用程序的Web套接字连接。我们在这里非常
低延迟,但我担心连接问题。这个事实
服务器不会存储任何消息,从数据保护更好
透视,但使灾难恢复和处理服务器应用程序将在后台稍微困难的时刻。
Azure Service Bus。它应该是为此而做的(服务器
订阅客户端消息的订阅源),但我认为新队列会
需要为每个服务器创建(然后客户端必须
了解该队列的名称,以便在选项中进行一些匹配
2将是必要的))
你会推荐什么?
提前致谢!
我之前一直在开发类似的东西,我建议您使用Windows Azure Mobile解决方案构建此解决方案,特别是它现在支持Node JS NPM。
http://weblogs.asp.net/scottgu/archive/2013/06/14/windows-azure-major-updates-for-mobile-backend-development.aspx
对于客户端,我还建议您使用SignalR构建它,这是专为实时应用程序需要从服务器端进行大量事务的情况而设计的。
http://www.asp.net/signalr
您还可以在以下链接中找到有关如何将它们集成的更多详细信息:http://hhaggan.wordpress.com/2013/07/12/signalr-node-js/
我希望这些可以帮助你,如果你还需要其他任何东西,请告诉我。
经过一番思考,阅读你的回复(以及msdn论坛上的其他人)并分析我的场景,查询模式和我更熟悉的技术,我决定了以下内容:
SQL Azure上的统一Web Api模型(在一种情况下甚至可能返回OData IQueryable)将处理消息发送和匹配。
将转发到Windows 8 hub应用程序的消息将通过SignalR和Web Sockets完成。这两个链接向我展示了如何处理应用程序进入后台(http://msdn.microsoft.com/nl-be/windows/apps/jj662740.aspx)或失去连接(http://msdn.microsoft.com / nl-be / windows / apps / jj710180) - 我仍然希望支持几分钟的连接丢失,在此期间服务器将累积消息并发送所有尚未接收的消息(在一段时间后匹配将被视为超过并且数据库将被清理 - 我不确定我是否将以编程方式处理此工作流程或使用工作线程上的工作流程。此时,以编程方式处理它似乎很简单。
如果我在配对期间需要推送通知,我可以在Web Api中实现它们(它需要比移动服务更多的工作):http://www.codeproject.com/Articles/506733/Windows-8-Notifications-Push -Notifications-通赢
所以它更像是解决方案2.如果我遇到任何并发症,我会告诉你。我最初可能需要更多的代码来通过移动服务进行设置,但我认为一旦我按照基本教程设置基础知识,我将能够以更加无缝的方式扩展解决方案。我甚至可能尝试使用Entity Framework 6来进行全异步并最小化node.js上的吞吐量开销(但我不希望任何严重的负载)。