sqlserver实时监听_ASP.NET Core监听SQL Server数据库的实时信息
发布日期:2021-09-13 07:38:20 浏览次数:2 分类:技术文章

本文共 1678 字,大约阅读时间需要 5 分钟。

(给DotNet加星标,提升.Net技能)

转自:喜欢吃鱼的青年 cnblogs.com/2828sea/p/13402532.html

一、开发环境

  • 开发工具:Visual Studio 2019

  • 数据库:SQL Server2012

  • 开发环境:.Net Core 3.1

二、使用技术

  • Signalr:实现消息推送

  • SqlDependency:通过它的OnChangeEventHandler事件去监听数据库的波动【只针对SQL Serer】

  • Microsoft.EntityFrameworkCore:连接数据库

三、业务逻辑(虽然最后没做成,但是这技术我还学会了)

开发场景:客户需要每一个参加展会的人,签到时候,需要在展会的大屏幕实时显示签到人的信息。

思考:如果让以前的我做,一想到就是做AJAX异步请求数据,设置循环间隔时间。但是这样会有问题,第一如果时间设置太长,无法实现实时,如果时间设置太短,会发送很多无效的请求大量占用资源,这个时间就无法去定义。

思路:此时,我在想,如果要是【有人盯着】数据库,当数据有变化的时候,【有人通知】能通知我们,这样岂不是完美了,敢想就敢干,Just Doing!

四、使用的技术讲解

有人盯着:通过在百度海洋的搜索,了解到了SqlDependency可以实现这个效果,连接数据库之后,编写查询语句【有注意点,后面讲】,然后使用SqlCommand初始化连接对象和执行的语句,在将SqlDependency初始化填入SqlCommand对象,然后给SqlDependency添加事件,然后执行SqlCommand命令。当数据库的某张表数据变动,就会触发SqlDependency添加的事件。

有人通知:Signalr可以实现推送消息,应用程序启动之后,浏览器和服务器会建立一个连接(Signalr不懂可以百度看看原理),当服务器有什么需要推送的,可以推送指定的人、组,以及所有人。

五、效果展示

b6fe6a6939070c9c2755509508248cc7.png

6f5bd653e01e219603a0772e0f3f4688.png

六、注意事项

  • 编写的SQL:查询语句中不能使用 *,表名要加[dbo].[xx]

  • 在你的数据库中需要开启BROKER:

ALTER WITH

在数据库执行命上面两个命令。

  • 创建GlobalHubServer服务,用户获取实例对象(当我们监听到数据库变动的时候,我们需要通知,可以通过GlobalHubServer和我们的ChatHub实现依赖注入,这样容器给我创建了一个实例,我们只需要注入就行了)。

  • Signalr中自定义的方法,注意格式驼峰命令法

  • SqlDependency需要提起开启

七、参考文档

  • 利用SignalR实现实时推送信息功能

  • 启用数据库的 Service Broker

--is_broker_enabled为0未启用,为1启用 SELECT name,is_broker_enabled FROM sys.databases WHERE name = 'DBNAME' ALTER DATABASE DbName SET NEW_BROKER WITH ROLLBACK IMMEDIATE; ALTER DATABASE DbName SET ENABLE_BROKER;
  • GlobalHubServer由来

  • Get started with ASP.NET Core SignalR

八、不足的地方

这个只是测试代码,如果在实际情况中,不知道会不会出问题,打算使用Redis做缓存,处理并发的请求,后面有时间写个API,进行接口压力测试一下效果,如果有好的方案,欢迎来探讨!

九、结尾

为什么没贴代码了,你看看我给的几个文档就可以做出来,动手实践才是硬道理,如果有功能实现不了的,可以给我留言

- EOF -

e943b0a0e14d75a2781d1764a80f7876.png

推荐阅读   点击标题可跳转 人工智能 ?.NET Core一样胜任 .NET Core WebApi使用JWT验证签名 .NET Core自带分布式事务的微服务开源框架JMS

看完本文有收获?请转发分享给更多人

关注「DotNet」加星标,提升.Net技能 

c41af7f7088dd7e9e9546f9fc69b7484.png

好文章,我在看❤️

转载地址:https://blog.csdn.net/weixin_39785600/article/details/111380101 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:软文发布系统源码_「多鱼媒体」自媒体营销:软文的推广技巧
下一篇:嵌入式软件工程师需要掌握什么_用一张图片告诉你 一个合格算法工程师需要掌握哪些技能...

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年03月31日 11时38分11秒