离线+在线数据库应用程序
本文关键字:应用程序 数据库 在线 离线 | 更新日期: 2023-09-27 18:31:58
我正在为客户开发一个会计系统。此应用程序有一些特殊要求。我留下特定于帐户的会计系统详细信息。我提到那些使我感到困惑的要点。
应用程序应在联机和脱机环境中工作。如果用户正在工作,但应用程序突然脱机 用户应该能够脱机工作。所有离线工作都存储在本地数据库中,并在下次应用程序连接到互联网时同步到中央数据库。此应用程序有许多用户,所有用户将同时处理相同的信息。
例如,如果用户输入库存物料,则另一个用户也可能在此时输入同一物料。应用程序应能够验证正确的信息并禁止用户复制。
用户本地数据库必须始终更新,无论其他用户是否工作。如果其他用户正在工作,则本地数据库中应提供所有更新的信息,以确保当用户脱机时,所有信息都已更新。
问题是如何开发这种应用程序?是否有任何标准方法可以实现这一目标?是否有任何标准或非标准模式来构建这种软件?
请注意,我正在使用 C# Dot Net,并打算为此应用程序使用 .NET 远程处理或 WCF 或 ASP.NET MVC。
任何形式的帮助将不胜感激。谢谢。
Tim McCarthy 的书 .NET Domain-Driven Design with C#: Problem - Design - Solution 设计和实现具有类似需求的系统。 这有点过时了,但我认为会为你指出一个好的方向。 (请看第五页,他列出了本书正在设计的系统的要求,它们与你的相似。
他使用 C#、WCF、Microsoft 的同步框架、智能客户端等。 他指出,在本书印刷时,Visual Studio 不提供实体框架,因此他创建了自己的实体框架(这没关系,但我认为如果他能够包含 EF,这本书会好得多。
我希望这有所帮助!
我有两个答案给你。如果您在后端使用 Web API 或 Servicestack,并在客户端使用 HTML5 和 upshotjs。这将为您在浏览器中存储数据。
但是,当您使用至关重要的帐户类型内容时,我将使用富客户端类型应用程序。后端将是相同的,但现在您将有两个数据库,一个在服务器上,另一个在客户端上。用户将在客户端中输入详细信息,但数据将与服务器同步。为此,您也可以检查NoSQL选项。
如果需要更多详细信息,请告诉我。
总结:
- 服务器端的 WCF
- 任何数据库和客户端框架都很好
- 客户端使用本地数据库,并且有后台进程来同步新数据并获得编辑权限。
- 服务器业务逻辑级别控制冲突并(自动)或通过通知客户端来解决冲突。 在
- 很少的情况下,最好在数据库级别解决冲突。
完整答案
真的看不出任何异国情调的插件有任何需要。
如我所见,您正在构建具有服务器端同步的客户端应用程序。WCF 将是非常好的选择,无论您使用什么应用程序框架都可以,即使它是 win8 Metro 应用程序)
当然会有2个数据库客户端和服务器端。您可以选择最适合应用程序需求的任何数据库。它可以是不同的服务器和客户端数据库。
客户端从服务器获取信息,并使用 WCF API 将新数据(和数据更改请求)发布到服务器。
我建议让用户直接使用本地数据库并使用异步请求进行服务器同步。然后您的应用程序将运行得更流畅,没有烦人的滞后。
因此,您的应用程序有两个业务逻辑部分。一个用于与用户交互并存储他的数据,另一个用于在后台同步所有数据。
数据冲突怎么办?我认为解决此类冲突的最佳方法是在服务器的业务逻辑级别解决它们。在很少的情况下,最好在数据库级别解决冲突。
此链接如何检测在线/离线浏览器...可以帮助您检查浏览器联机/脱机状态,以便可以切换连接字符串。其余的东西可以作为正常的应用程序开发。
我正在考虑更改连接字符串,这是在在线和离线模式之间切换的最简单方法。但是你必须处理同步。