我正在为客户开发会计系统。此应用程序有一些特殊要求。我留下了特定于账户的会计系统细节。我提到那些令我困惑的观点。
应用程序应该可以在联机和脱机环境中运行。如果用户正在工作并且突然应用程序脱机,则用户应该能够脱机工作。当应用程序连接到互联网时,所有离线工作都存储在本地数据库中,并在下次同步到中央数据库。此应用程序有许多用户,所有用户都将在同一信息上同时工作。
例如如果用户输入库存物品,则另一个用户可能也会在那时输入相同的物料。应用程序应该能够验证正确的信息并禁止用户复制。
用户本地数据库必须在其他用户正在工作或不工作时进行更新。如果其他用户正在工作,则应在本地数据库中提供所有更新的信息,以确保用户下线时所有信息都会更新。
问题是如何开发这种应用程序?有没有标准的方法来实现这个目标?是否有任何标准或非标准模式来构建这种软件?
请注意我使用C#Dot Net和Intend为此应用程序使用.NET Remoting或WCF或ASP.NET MVC。
任何形式的帮助将不胜感激。 感谢。
答案 0 :(得分:2)
他使用C#,WCF,Microsoft的Sync Framework,智能客户端等。他指出,在本书的印刷中,实体框架不适用于Visual Studio,所以他创建了自己的(这是好的,但我认为如果他能够包含EF,这本书会好得多。)
我希望有所帮助!
答案 1 :(得分:0)
我有两个答案给你。 如果您在后端使用Web API或Servicestack,并在客户端使用带有upshotjs的HTML5。这将在您的浏览器中存储数据。
但是当你正在处理关键的帐户类型的东西时,我将使用Rich客户端类型的应用程序。后端将是相同的,但现在您将拥有两个数据库,一个在服务器上,另一个在客户端上。用户将在客户端输入详细信息,但该数据将与服务器同步。为此,您也可以检查NoSQL选项。
如果需要进一步的详细信息,请告诉我。
答案 2 :(得分:-1)
<强>要点:强>
完整答案
真的没有任何异国情调的插件需要。
正如我所见,您正在构建具有服务器端同步的客户端应用程序。 WCF将是非常好的选择,无论你使用什么应用程序框架都可以,即使它将是win8 metro应用程序)
当然会有2个数据库客户端和服务器端。你可以选择最适合你应用程序的任何数据库。它可以是不同的服务器端和客户端数据库。
客户端从服务器获取信息,并使用WCF API将新数据(和数据更改请求)发布到服务器。
我建议让用户直接使用本地数据库,并使用异步请求进行服务器同步。然后你的应用程序将运行更顺畅,没有恼人的滞后。
因此,您的应用程序中有两个业务逻辑部分。一个与用户交互并提供和存储他的数据,另一个用于同步后台的所有数据。
数据冲突怎么样?我认为解决此类冲突的最佳方法是在服务器的业务逻辑级别解决它们。在数据库级别上解决冲突更好的情况很少。
答案 3 :(得分:-1)
此链接How to detect online/offline browser...可帮助您检查浏览器的在线/离线状态,以便您可以切换连接字符串。其余的东西可以作为正常的应用程序开发。
我正在考虑更改连接字符串,这是在线和离线模式之间切换的最简单方法。但是你必须处理同步。