前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ASP.NET Core 监听SQL Server数据库的实时信息

ASP.NET Core 监听SQL Server数据库的实时信息

作者头像
梁规晓
发布2020-11-05 10:51:02
1.9K0
发布2020-11-05 10:51:02
举报
文章被收录于专栏:DotNet程序园

1.开发环境:

  • 开发工具:Visual Studio 2019
  • 数据库:SQL Server2012
  • 开发环境:.Net Core 3.1

2.使用技术:

  • Signalr:实现消息推送
  • SqlDependency:通过它的OnChangeEventHandler事件去监听数据库的波动【只针对SQL Serer】
  • Microsoft.EntityFrameworkCore:连接数据库

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

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

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

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

4.使用的技术讲解

有人盯着:

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

有人通知:

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

5.效果展示

6.注意事项

  • 编写的SQL:查询语句中不能使用 *,表名要加[dbo].[xx]
  • 在你的数据库中需要开启BROKER:
代码语言:javascript
复制
ALTER DATABASE [你需要监听的数据库名称] SET NEW_BROKER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE [你需要监听的数据库名称] SET ENABLE_BROKER;

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

  • 创建GlobalHubServer服务,用户获取实例对象(当我们监听到数据库变动的时候,我们需要通知,可以通过GlobalHubServer和我们的ChatHub实现依赖注入,这样容器给我创建了一个实例,我们只需要注入就行了)。
  • Signalr中自定义的方法,注意格式驼峰命令法
  • SqlDependency需要提起开启

7.参考文档

  • 利用SignalR实现实时推送信息功能 他是使用ASP.NET MVC开发的,所有他有些东西,我在ASP.NET Core是用不了【GlobalHost】,这个是用来获取实例对象,我采用是GlobalHubServer代替
  • 启用数据库的 Service Broker
  • GlobalHubServer由来
  • Get started with ASP.NET Core SignalR

8.不足的地方

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

9.结尾

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

原文地址:https://www.cnblogs.com/2828sea/p/13402532.html

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DotNet程序园 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.开发环境:
  • 2.使用技术:
  • 3.业务逻辑(虽然最后没做成,但是这技术我还学会了)
  • 4.使用的技术讲解
    • 有人盯着:
      • 有人通知:
      • 5.效果展示
      • 6.注意事项
      • 7.参考文档
      • 8.不足的地方
      • 9.结尾
      相关产品与服务
      数据库
      云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档