我目前正在使用WebSocket作为向客户端传输数据的一种方法。基础设施看起来像这样。
客户端 - > Web服务器 - > Microsoft SQL数据库Microsoft SQL数据库的WebSocket侦听器
我认为最理想的情况是这样的: 客户端打开一个套接字服务器。 服务器打开Microsoft SQL数据库的套接字。 每当数据库更新(某些数据已插入)时,数据库将数据写入套接字。 服务器将数据写回客户端。 虽然这可能有点乏味,也许我可以以某种方式直接从客户端打开数据库的套接字?
我想知道是否有办法自动通知套接字到Web服务器如果MSSQL数据库更新,以便它可以处理该信息。
主要问题是真的;我将如何做这项工作?我研究过一些与WebSocket一起工作的项目,如Node.JS和Socket.IO,也是Tornado。尽管我还没有找到任何有关在哪里寻找这个特定功能的线索。我发现了一些针对NodeJS的MSSQL数据库的相当不稳定的驱动程序,但不明白是否有任何方法可以向数据库创建套接字,并在将数据泵入数据库时立即通过套接字发送数据。我也认识到,在客户端和数据库之间建立一个套接字并不聪明,至少说安全性是明智的,因为现在这不是问题,并且SQL不是实时应用程序的方式,米绑定到它现在:)
编辑1:
感谢@tomfanning我现在知道了解决这个问题的,但是严重怀疑在性能上的提升。让我为你描绘情况。在我使用MSSQL数据库上的触发器的情况下,我想象会发生这种情况。
情况1
- 数据库中获取更新
- 扣动扳机
- 的CLR脚本使得对Web服务器的连接。无论是通过 由它来打开套接字和关闭每一个触发器或通过 涉及打开和关闭头(其 是无用的开销)
- Web服务器接收到触发和HTTP(S)请求将数据发送到客户端 。
- 客户端更新。
现在想象同样的场景,但然后用AJAX
情况2:
- 1000毫秒的超时是在客户端AJAX设置请求
- 客户端超时并发出AJAX请求
- 数据库执行一些查询并回传结果
- 客户端更新。
在情况1你需要一个请求和一个套接字发送/接收,在情况2你只需要一个请求。如果我将AJAX请求的超时设置为10MS,那么它对用户来说就好像它是一个像websocket一样的实时应用程序?或者情况1仍然更有效率,我只是夸大了?
在此先感谢!
如果你可以通过websockets以不安全的方式访问你的数据库,我也可以。如果我可以访问你的数据库,我会把它扔给卢尔兹。安全不是一个笑话。 – Raynos
@Raynos我知道安全不是一个玩笑,我一定会考虑它。但我现在只需知道是否有办法做到这一点。 –