开发场景: 客户需要每一个参加展会的人,签到时候,需要在展会的大屏幕实时显示签到人的信息。
思考: 如果让以前的我做,一想到就是做AJAX异步请求数据,设置循环间隔时间。但是这样会有问题,第一如果时间设置太长,无法实现实时,如果时间设置太短,会发送很多无效的请求大量占用资源,这个时间就无法去定义。
思路: 此时,我在想,如果要是【有人盯着】数据库,当数据有变化的时候,【有人通知】能通知我们,这样岂不是完美了,敢想就敢干,Just Doing!
通过在百度海洋的搜索,了解到了SqlDependency可以实现这个效果,连接数据库之后,编写查询语句【有注意点,后面讲】,然后使用SqlCommand初始化连接对象和执行的语句,在将SqlDependency初始化填入SqlCommand对象,然后给SqlDependency添加事件,然后执行SqlCommand命令。当数据库的某张表数据变动,就会触发SqlDependency添加的事件。
Signalr可以实现推送消息,应用程序启动之后,浏览器和服务器会建立一个连接(Signalr不懂可以百度看看原理),当服务器有什么需要推送的,可以推送指定的人、组,以及所有人。
ALTER DATABASE [你需要监听的数据库名称] SET NEW_BROKER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE [你需要监听的数据库名称] SET ENABLE_BROKER;
在数据库执行命上面两个命令。
这个只是测试代码,如果在实际情况中,不知道会不会出问题,打算使用Redis做缓存,处理并发的请求,后面有时间写个API,进行接口压力测试一下效果,如果有好的方案,欢迎来探讨!
为什么没贴代码了,你看看我给的几个文档就可以做出来,动手实践才是硬道理,如果有功能实现不了的,可以给我留言!
原文地址:https://www.cnblogs.com/2828sea/p/13402532.html