【发布时间】:2015-03-13 05:39:32
【问题描述】:
我的任务是设计一个 ASP.net Web 应用程序,该应用程序执行以下操作:
(1) 全市员工将使用相关的移动应用程序。当他们使用移动应用程序时,他们的 GPS 位置会被发送到服务器。
(2) 网络应用程序必须使用 Google 地图绘制城市地图并显示标记以显示每个员工的位置。
有人建议我,Web 应用程序应该每三分钟自动刷新一次数据。
但是,我不禁想知道为什么我坚持使用轮询解决方案;这在 21 世纪似乎已经过时了。
关于浏览器和网络服务器之间的通信,我知道有两种解决方案。
一个是长时间运行的 HTTP 请求,在用户访问应用期间保持打开状态。 (此处演示:http://danielsadventure.info/webconsoledemo)
另一个是 HTML5 Web Sockets。
我认为上述任何一种解决方案都应该足以将数据从服务器近乎实时地流式传输到浏览器。
话虽如此,Web 应用程序的数据模型是在 MS SQL 中。我不知道如何让 Web 服务器知道数据模型何时更新,而无需让 Web 服务器轮询 SQL 服务器。
我想一种可能的解决方案可能是在加载 Web 应用程序时从 SQL 获取关联位置,然后当来自关联的更新到来时,在 SQL 中更新它们的同时将它们发送到所有连接的 Web 浏览器.这将需要让处理来自关联的传入数据的线程自动与将位置数据发送到浏览器的其他线程通信,我不知道该怎么做。即便如此,我也看到自己不得不从另一个线程中轮询一个线程。
在不求助于轮询解决方案的情况下完成客户请求的好方法是什么?如果需要轮询解决方案,我怎样才能最大限度地减少它的缺点?
我知道那里有解决方案。否则,当有新邮件到达时,GMail 将如何告诉您?
编辑:具体情况:假设 Adam 是该领域的同事,Omar 是一名操作员,使用此应用程序监视 Adam 的行踪。
奥马尔登录;他的浏览器向服务器发送一个请求,服务器发回一个告诉亚当所在位置的响应。然后,Omar 的浏览器启动一个长时间运行的 HTTP 请求以接收有关 Adam 去向的更新。
几分钟后,亚当跳上公司的卡车,沿着公路行驶。当卡车开始移动时,Adam 的移动应用程序会向网络服务器发送一个更新,表明他已经移动了。
鉴于上述情况,网络服务器如何与亚当已移动的 Omar 的网络浏览器进行通信(无需 Omar 的浏览器或网络服务器进行任何形式的轮询)?
【问题讨论】:
-
我相信有办法在 MSSQL 中创建河流,然后使用 socket.io 之类的东西向客户端发出更新
-
然而,当你做这种事情时,在 Node 中构建整个东西似乎更合适。
-
当数据被插入到 MSSQL 服务器时,你能不能不广播某种事件,这反过来会导致 websocket 推送?
-
你说的这个“广播事件”是什么,@Keven B。也许你可以详细说明一下并发表你的想法作为答案。
-
嗯,这在很大程度上取决于您用于插入数据的平台(asp、node 等)以及您用于 websocket 服务器的平台(asp、node 等)。当我说事件时,它甚至可能是某种函数调用。我对 asp.net 不够熟悉,无法建议任何类型的 asp 解决方案。
标签: javascript asp.net ajax google-maps-api-3 real-time