2015-12-29 117 views
-1

我正在开发使用C#.NET中的Windows应用程序,它正常工作, 但客户希望在网站上的输出也,哪有可能? Web服务器和本地使用相同的数据库。,我想同步两个数据库是相同的每15秒间隔或更新数据时间? 请给我一个这个问题的解决方案..关于数据库同步

+1

你可以使用web服务或查看wcf,并且如果它的唯一输出那么它看起来很容易。 –

+1

如果'Web Server'和'Windows应用程序'使用相同的数据库,为什么需要同步它们? –

+0

您可以在解决方案中编写jsonrpc服务,通过它的方法从数据库收集信息。 –

回答

1

这是一个很大的话题和一个非平凡的问题,你应该在决定一个解决方案之前做大量的研究。我在下面写了一些想法,但这些绝不是可能的方法或事情的详尽清单,您应该谨慎。

的第一个决定是网站和应用程序是否应使用数据库的同一副本,或者是否应该有数据库的两个单独的副本,并使用复制保持同步。

复制是一个大题目本身,因为你需要考虑如何在数据库的两个副本之间的数据变化的解决冲突(例如,如果相同的记录被两个数据库更改)。

你说在你的问题中,网站将有“输出”,如果这意味着网站只显示只读数据(即不编辑网站上的数据),那么复制将更简单,因为你只需要将数据复制到网站的数据库副本。

另一种解决方案是为Web和桌面应用程序共享数据库的一个副本。那么问题就是托管该数据库的位置以及如何访问该数据库。目前,您可能正在桌面应用程序中使用数据库连接来访问数据库。在Web上提供数据的最少编码解决方案就是将您的网站托管在客户的网络上,以便桌面应用程序和网站都可以访问数据库。然而,这意味着您的客户现在在他们的网络上托管一个网站,其中存在各种潜在问题(例如安全性,流量,正常运行时间等)

您可以编写REST网络服务(例如ASP .NET WebAPI)将数据提供给客户网络的网站,但这又需要您从客户网络托管一个网站(以及网络服务)。

另一种方法是放置在云数据库,并让从那里的网站和桌面应用程序访问它。这消除了在客户网络上托管网站的需要。但是,您可能会发现,您的桌面应用程序现在会比您期望的要慢,因为它的设计基于对数据的临近和快速访问的期望。如果您已经使用异步数据访问结构编写了桌面应用程序,但问题不大,但如果不是这样,则可能会发现桌面应用程序的运行速度变慢。

但是,如果在数据库中的数据在所有敏感的你可能会发现你的客户不满意与云中的数据之中。如果是这种情况,那么您需要对复制解决方案保持警惕 - 您应该确保您只将网站所需的数据复制到网站的数据库副本中。

另一种解决方案是通过TCP使SQL Server可以使用本地托管的数据库(SQL Server可以做到这一点),但是同样存在安全问题需要考虑,并且您需要考虑客户的网络和互联网连接的可靠性和弹性足以实时为网站提供数据。

为了找到正确的解决方案,您需要考虑(除其他事项外)现在还是将来在网站和应用程序上都将编辑数据,并考虑可能的用户数量网站现在和未来。这也是您需要包括客户的讨论。

+1

伟大的观点,所有这些,并感谢你的努力。然而,这使得这个问题如此糟糕:我们称之为“太宽泛”。有太多可能的解决方案,其中每一个都需要详细解答自己的答案,并提供其他资源的链接,地狱,您可以为每个段落购买多本有关该主题的书籍。实际上,对于每个科目都存在问题。在这个问题甚至可以远程回答之前,OP必须显示他们的研究和他们的推理(即回应发布到问题中的评论)。 – CodeCaster

+1

是的,我完全同意,我真的只是试图证明他们的大量考虑,并给予OP一些研究的东西。 – tomRedox