C# 单一数据库和多用户桌面应用程序

C# 单一数据库和多用户桌面应用程序,c#,database,web-services,client-server,data-synchronization,C#,Database,Web Services,Client Server,Data Synchronization,我不熟悉这个概念,所以我需要在下面的场景中最好使用的指导 我必须制作一个包含许多功能的桌面应用程序,如零件库存,员工数据,公司汽车数据等 现在的问题是,许多用户都在使用该应用程序,而安装该应用程序的不同城市都有办公室 我想要一个方案,如果一个上传任何数据到数据库,另一个会得到它的反射,而另一个会立即得到更新。例如,如果添加了更多的汽车,每个使用它们的人都会得到更新的汽车列表 我想使用webservices,数据应该存储在网站数据库的某个地方,这样每个人的应用程序每隔20秒左右刷新一次列表 非常感

我不熟悉这个概念,所以我需要在下面的场景中最好使用的指导

我必须制作一个包含许多功能的桌面应用程序,如
零件库存
员工数据
公司汽车数据

现在的问题是,许多用户都在使用该应用程序,而安装该应用程序的不同城市都有办公室

我想要一个方案,如果一个上传任何数据到数据库,另一个会得到它的反射,而另一个会立即得到更新。例如,如果添加了更多的汽车,每个使用它们的人都会得到更新的汽车列表

我想使用
webservices
,数据应该存储在网站数据库的某个地方,这样每个人的应用程序每隔20秒左右刷新一次列表


非常感谢您的帮助

尝试云计算并将数据存储到云中

好的,在投票失败后,我想恢复我的观点

云(尤其是WindowsAzure)非常适合这个项目。Web服务也会有所帮助,因为它们可以轻松扩展到多个Web服务器(Azure speak中的实例)。让许多桌面客户机直接与数据库对话不是一个好主意,通常会导致可伸缩性问题


如果您经常刷新客户端数据,那么输出缓存在这里会有很大帮助,这几乎不需要代码即可实现。这比管理更改列表容易得多。

您不会不断地重新加载所有数据;这里有两种常见的方法:

  • 保留一份变更清单;如果添加新数据,则添加主数据记录,并写入发生更改的事实(本质上是一个“事件”列表)。然后,您可以定期查询更改日志,只需询问(x)之后的所有事件即可获取和添加/更新/删除
  • 如果基础设施允许,可以使用某种发布/子框架—实际上是相同的方法,但通常使用中间件进行更改,而不是使用主数据库
你是如何获得数据的;投票简单有效;主动推送较难设置,但可能会减少延迟-不确定是否值得在这里使用


不过,另一种方法是将其设计为一个web应用程序——这样,您的所有数据都将保存在服务器场中,并且不需要立即更新。您的“桌面”应用程序可以是一个使用ajax的网页,那么web服务可以完成这项工作吗?就像每个主机都有数据库一样,它是否可以使用Web服务在网站上填充该数据库并在以后使用?提神的一点是伟大的,从来没有想过it@Lagrangian你的意思是“可以使用web服务定期查询数据吗?”绝对正确!不过,为“拉”(轮询)设置Web服务比为“推”(push)设置Web服务更容易,所以要这样做。您只需要一个“让我了解影响我的最新变化”的web服务方法-1,它不会详细介绍如何做到这一点,也不会详细说明为什么这是解决他的问题的好方法。@Irvin+1用于倾听。下次第一次尝试提供更多详细信息。[客户端-服务器体系结构](可能会有所帮助)