我可以访问提供位置信息的实时数据源,我想围绕此建立一个网站,但我不确定用什么架构来满足我的需求。
不幸的是,我有权访问的提要只允许每个IP地址进行一次连接,因此构建一个直接与该提要进行对话的网站 - 因为每个用户都会生成一个新的请求,这将被拒绝。还需要对数据执行一些预处理,所以我想我需要某种后端来检索数据,对其进行处理,然后将其提供给网站。
从前端连接的角度来看,Web服务听起来可能有用,但是这也会为每个用户创建多个Feed连接?我还希望后端连接是持久的,以便即使在没有访问该站点时也可以检索和处理数据,我相信IIS会在闲置时回收Web服务和网站吗?
我希望设计保持相当灵活 - 将来我会添加一些移动客户端,因此API需要支持远程连接。
简单的解决方案是将所有处理过的数据记录到数据库中,然后由网站提取,但这会丢失数据的实时方面。理想情况下,我希望每次数据更改或现在收到数据时都将数据推送到网站。
实现这一目标的最佳方法是什么,以及哪些技术可以提供帮助? Comet架构听起来接近我的需要,但这需要构建一个可以同时处理多个基于Web的查询的后端,这看起来非常重要。
理想情况下,我会寻找一个基于C#/ ASP.NET的Javascript客户端解决方案,虽然我想这个问题更多地基于架构和概念,而不是技术实现。
提前感谢所有建议!
答案 0 :(得分:2)
最简单的解决方案似乎是有一个专门用于读取实时Feed的组件。然后,它可以将接收到的数据发布到队列(或多个队列),供架构中的其他组件使用。
此组件(A)将是一个独立的流程,也许是一项服务。
队列可以通过以下方式读取:
如果您使用的是.NET堆栈,那么SignalR似乎正在获得最大的吸引力。您还可以查看XSockets(realtime web tech guide中有更多选项。只需搜索“.NET”。
您需要使用signalR来管理订阅,然后将消息发布到注册客户端(PubSub - this SO post seems relevant,也许您可以要求更多信息)。
您还可以查看将PubSub组件卸载到托管服务,例如我为{/ em>工作的Pusher,。这将处理订阅和组件C只需要将数据发布到适当的通道。 realtime web tech guide中列出了其他所有选项。
所有这些组件都附带一个JavaScript库。
组件:
如果您提供更多信息,我会更新我的答案。
答案 1 :(得分:1)
一个很好的解决方案就是http://rubyeventmachine.com/或http://nodejs.org/。它不是asp.net,但它可以轻松解决向其他用户分发实时数据的问题。由于每个都内置了用户连接,订阅和频道广播,这将使其余的编码变得非常简单。您的客户只需通过标准tcp连接即可。
如果您需要客户端轮询更新,那么您需要一个que系统来存储下一个请求的信息。根据您的要求和用户数量,这可能是一个简单的数组,也可能是一个更复杂的que系统。
.net可能有解决方案我不知道做同样的事情,但那些是我所知道的。