如果您在使用相同数据库的不同客户端上有桌面应用程序,如果一个客户端更改了数据,您如何通知其他客户端。假如您作为1号客户端正在查看具有不同客户的数据网格,而客户端号2更新您在数据网格中查看的客户之一的名称。客户端1如何从数据库中了解更改?我不认为解决方案是将每一秒都拉到服务器上。那么选择会是什么?
答案 0 :(得分:1)
您可以使用SignalR等技术通知客户端已发生更改,并让他们有机会强制刷新(如果不引起任何冲突,则可以自动更新表,也许通过淡入新行。)
这样可以避免不断轮询服务器以进行更改。您仍然会遇到冲突(可能是客户断开连接并进行更改)但您可以找出最适合您需求的方法。
我在How to implement real time data for a web page中讨论了使用Web客户端完成此操作的几种方法。该技术与桌面应用程序类似,因为除了clients available for .NET之外还有SignalR JavaScript。
请注意,此技术不仅限于SignalR。存在其他技术堆栈,例如Socket.IO,但SignalR将与.NET进行最紧密的集成,因为它来自Microsoft。
答案 1 :(得分:0)
您可以查看Observer Pattern:
定义对象之间的一对多依赖关系,以便在一个对象之间 对象更改状态,其所有依赖项都会得到通知和更新 自动。
基本上,只要客户端按下Save(或任何其他更改数据的操作),您的服务器就会向其客户端发送通知。然后,客户端将检查此更改是否会影响用户。如果是,则客户端可以向服务器请求数据的新副本(理想情况下,在通知用户新数据可用之前)。