Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在web和桌面应用程序中同步数据库?_C#_Asp.net_Database_Desktop Application - Fatal编程技术网

C# 在web和桌面应用程序中同步数据库?

C# 在web和桌面应用程序中同步数据库?,c#,asp.net,database,desktop-application,C#,Asp.net,Database,Desktop Application,我正在尝试开发一个web应用程序(使用ASP.NET和c#),该应用程序使用托管在web服务器上的特定数据库。我将有另一个桌面应用程序,将使用本地数据库。两个数据库在启动时具有相同的结构和数据。然后,当用户向web应用程序添加数据,而员工向桌面应用程序添加数据时,数据库将发生变化。过了一会儿,我必须同步两个数据库。 最好的方法是什么 有没有开源的示例/初学者工具包 谢谢。有趣的问题: 同步数据可能会变得相当复杂,因为覆盖由其他用途更新的数据很容易发生,特别是如果这是通过表行完成的。理想情况下,在

我正在尝试开发一个web应用程序(使用ASP.NET和c#),该应用程序使用托管在web服务器上的特定数据库。我将有另一个桌面应用程序,将使用本地数据库。两个数据库在启动时具有相同的结构和数据。然后,当用户向web应用程序添加数据,而员工向桌面应用程序添加数据时,数据库将发生变化。过了一会儿,我必须同步两个数据库。
  • 最好的方法是什么
  • 有没有开源的示例/初学者工具包

    谢谢。

    有趣的问题:

    同步数据可能会变得相当复杂,因为覆盖由其他用途更新的数据很容易发生,特别是如果这是通过表行完成的。理想情况下,在与在线数据库同步时,每个字段的行上都会有一个最近更新的日期,以创建最新的wins场景

    一个简单的工作流程,让事情变得简单:

    在线数据库将是主数据库,其中每个桌面将不时进行同步,我猜桌面将需要发送自上次同步日期以来的所有更改以更新主数据库,然后从上次同步日期起从主数据库下载所有记录(新记录和更新记录,因为这些记录可能已被其他用户更改)


    如果桌面连接到internet,那么直接连接到数据库可能是值得的。或者,如果它是一台运行中的笔记本电脑,我想可能需要同步设置。

    在我看来,您的要求似乎是为不同的用户提供相同应用程序的不同演示。有些连接到Web,有些连接到桌面。是否不可能为web和桌面同时拥有一个数据库(假设您位于数据库服务器所在的网络上,并且可以访问相同的数据库)

    您是否想过使用智能客户端方法开发它? 我读到它确实为我们提供了离线数据缓存功能


    这里有一些MSDN链接:

    只要知道您给出的高级别要求,我建议您研究一下Microsoft Sync框架。我曾在较小的应用程序上使用过它,并取得了巨大成功。

    如果桌面应用程序仅用于管理,您可以放弃它,编写web管理界面代码。然后,您可以使用类似于将web管理员带到桌面的功能。实际上,使用桌面的用户应该能够脱机工作(当internet不可用时)。并且桌面应用程序中的功能比web应用程序中的功能多得多(根据客户要求)