首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库触发器,它告诉我的网站某些内容已经更新

数据库触发器,它告诉我的网站某些内容已经更新
EN

Stack Overflow用户
提问于 2011-10-03 20:14:36
回答 5查看 1.2K关注 0票数 1

我正在使用ASP.NET/C#和MSSQL08创建一个朋友列表。简单的datalist,它列出了我朋友的个人资料、图像和姓名。

在名字旁边,我有一个标签,显示我朋友的当前状态。例如,Online,Offile,Away等。

我的问题是,我如何才能更改这个标签的值,而不是有一个计时器一直调用数据库来询问当前状态?

我想让数据库(sql Server2008)在发生更改时告诉我,并告诉我的业务逻辑更新状态标签。

这个是可能的吗?

谢谢!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-10-03 23:40:51

我相信这就是为SqlCacheDependency设计的目的。如果您使用的是SQL Server 2005或更高版本*,它将实现从SQL Server到应用程序的推送通知模型,以便在数据集中发生更改时通知您。因此,每次缓存失效时,您都可以获得最新的数据,但在此之前,它只是从缓存的数据集中读取,并保存到数据库的一次访问。它的文档是here

*然而*,

正如评论中所说的那样,这并不是SQL Server设计的核心,我也不知道这个解决方案的效率有多高。如果我正确地理解了您的问题,您将需要每个用户一个缓存依赖项,使用此解决方案很可能完全无法扩展。而不是猜测什么将是最有效的解决方案,你真的应该为自己开发、测试、测量和。每种情况都是不同的,没有“正确的方式”。

*在Sql Server 2000和7中,它使用拉取模型。

票数 0
EN

Stack Overflow用户

发布于 2011-10-03 20:51:55

来完成你正在寻找的东西..这就是我要做的,就是基于表创建一个视图,其中只包含完成任务所需的项。例如,UserID | Online_Status..然后使用AJAX进行调用。它对用户来说是如此之小,以至于他们甚至不会注意到带宽使用/处理……etc..etc...

这几乎就是你所说的你不想要的东西,但即使你有100万用户,他们之间的间隔也是3-5分钟。考虑到执行检查需要几毫秒,您应该没问题。

这只是我的两个观点..

票数 2
EN

Stack Overflow用户

发布于 2011-10-03 22:02:54

我认为你不应该那样做。有一些技术可以使用comet来做到这一点,但它将消耗服务器上的大量资源,从而明显减少了可以访问您的站点/应用程序的用户数量。问题是,服务器和客户端需要打开一个套接字,以便服务器能够将数据推送到客户端。

我要做的是让客户端询问是否有任何更新,将有效负载保持在最低限度。如果服务器说有数据发生了更改,客户端就会发出另一个请求来获取该数据。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7634843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档