4

我正在为客户开发一个会计系统。此应用程序有一些特殊要求。我留下了特定于帐户的会计系统详细信息。我提到了那些让我感到困惑的观点。

该应用程序应在在线和离线环境中工作。如果用户正在工作并且突然应用程序脱机用户应该能够脱机工作。所有离线工作都存储在本地数据库中,并在下次应用程序连接到互联网时同步到中央数据库。这个应用程序有很多用户,所有用户都将同时处理相同的信息。

例如,如果一个用户输入了一个库存项目,那么另一个用户可能在那个时候也输入了相同的项目。应用程序应该能够验证正确的信息并禁止用户复制。

用户本地数据库必须在其他用户工作或不工作时随时更新。如果其他用户正在工作,则所有更新的信息都应该在本地数据库中可用,以确保用户离线时所有信息都得到更新。

问题是如何开发这种应用程序?有没有实现这个目标的标准方法?是否有任何标准或非标准模式来构建此类软件?

请注意,我正在使用 C# Dot Net 并打算为此应用程序使用 .NET Remoting 或 WCF 或 ASP.NET MVC。

任何形式的帮助将不胜感激。谢谢。

4

4 回答 4

2

Tim McCarthy 的书.NET Domain-Driven Design with C#: Problem - Design - Solution设计并实现了具有类似要求的系统。这有点过时了,但我认为会给你指明一个好的方向。(看第五页,他列出了本书设计的系统的要求,它们与你的相似。)

他使用 C#、WCF、Microsoft 的 Sync Framework、Smart Clients 等。他说,在本书印刷时,Visual Studio 不提供实体框架,因此他创建了自己的(这没关系,但我认为如果他能够包含 EF,这本书会好得多。)

我希望这会有所帮助!

于 2012-05-25T15:12:36.817 回答
0

我有两个答案给你。如果您在后端使用 Web API 或Servicestack ,并在客户端使用 HTML5 和 upshotjs。这将为您将数据存储在浏览器中。

但是当您使用重要的帐户类型的东西时,我将使用富客户端类型的应用程序。后端将是相同的,但现在您将拥有两个数据库,一个在服务器上,另一个在客户端。用户将在客户端输入详细信息,但该数据将与服务器同步。为此,您也可以检查 NoSQL 选项。

如果需要更多详细信息,请告诉我。

于 2013-01-09T10:32:06.357 回答
-1

概括:

  • 服务器端的 WCF
  • 任何数据库和客户端框架都不错
  • 客户端使用本地数据库,并且有后台进程来同步新数据并获得编辑权限。
  • 服务器业务逻辑级别控制冲突并(自动)或通过通知客户端来解决它们。
  • 在数据库级别解决冲突更好的情况很少。

完整答案

真的没有看到任何异国情调的插件有任何需要。

正如我所见,您正在使用服务器端同步构建客户端应用程序。WCF 将是非常好的选择,无论您使用什么应用程序框架都可以,即使它是 win8 Metro 应用程序)

当然会有2个数据库客户端和服务器端。您可以选择最适合您的应用程序需求的任何数据库。它可能是不同的服务器和客户端数据库。

客户端从服务器获取信息并使用 WCF API 将新数据(和数据更改请求)发布到服务器。

我建议让用户直接使用本地数据库并使用异步请求进行服务器同步。然后您的应用程序将运行更流畅,没有恼人的滞后。

所以你的应用程序有两个业务逻辑部分。一个与用户交互,提供并存储他的数据,另一个在后台同步所有数据。

数据冲突怎么办?我认为解决此类冲突的最佳方法是在您服务器的业务逻辑级别解决它们。在数据库级别解决冲突更好的情况很少。

于 2012-04-23T07:53:35.737 回答
-1

此链接如何检测在线/离线浏览器...可以帮助您检查浏览器在线/离线状态,以便您可以切换连接字符串。其余的东西可以作为正常的应用程序开发。

我正在考虑更改连接字符串,这是在在线和离线模式之间切换的最简单方法。但是你必须处理同步。

于 2012-05-25T14:57:22.597 回答