用webapp和本地服务共享本地数据库,有可能吗?

时间:2014-02-21 12:23:29

标签: sql-server database google-chrome service local-storage

我正在开发一个网络应用程序,显示通过大门的通道的计数器。 该网页在受控环境(Intranet)中运行,并以浏览器的形式运行Google Chrome。(有10个监控门= 10个设置)

客户端计算机具有通过USB连接的光学触发器,每次触发时都会将时间戳和一些其他参数发送到远程DB。这是通过在后台运行的Windows服务完成的。该服务连接到远程数据库(SQL)。

网站(与触发器/服务在同一台计算机上运行)显示一个包含通道数的计数器。该网站每3秒检查一次远程数据库的更改(优选每秒或更少,但为了减少流量,我现在使用3秒)。

为了减少流量并最大限度地降低连接错误的风险,我想在客户端计算机上使用本地数据库。 Chrome和触发器/服务都可以访问数据库,每隔5分钟左右与远程数据库同步一次非常重要。 这可能吗?

还有一个后端页面显示所有门的状态,它从远程数据库获取数据,因此重要的是每个段落都要考虑并更新到远程数据库。

我一直在关注indexedDB和webSQL,但他们似乎无法从Chrome外部获取数据。我一直在考虑在客户端计算机上使用本地Web服务器和数据库(SQL Express),但是如果对应用程序进行了更改,似乎需要进行大量设置并使更新应用程序变得困难。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

这是正确的Chrome或任何浏览器只有在浏览器沙箱中才能访问本地数据。即您无法在桌面上创建与本地数据库或服务的连接。那将是一个安全问题。

我认为WebSockets可以帮助您连接到本地服务并减少流量。您可以运行本地websocket服务器(任何您熟悉的语言,谷歌可用的实现)javascript可以连接到这个websocket服务器并接收实时更新。 Javascript现在可以首先将此数据写入websql,并通过HTTP发送到远程数据库。即使您未连接到远程服务器,数据也将在本地可用。一旦网络可用,就可以将来自websql的数据推送到远程。

因此,它确保您的Web浏览器不会在无限循环中提取数据,但仅在websocket服务器发送时才接收。将数据发送到远程也是如此,当您拥有本地数据并连接时发送数据。

inly catch在这里,你需要再次在本地计算机上使用websocket服务器,但这不是一个重量级的东西。如果浏览器没有启动,Yoy可以将数据缓存在内存中,但我认为大部分时间都应该是这样。所以基本上你的数据都存在于websql和远程数据库中。 Websql在本地提供服务,并且还与远程同步。

希望这会有所帮助。

相关问题