具有频繁在线同步的C#桌面应用程序

时间:2012-12-10 09:07:44

标签: c# .net offline-caching

我将开发一个患者管理系统,它将成为一个用c#.Net构建的桌面应用程序 问题是很多医生都会使用它,并且不同的房间之间不能建立联系,因为它是政府医院和医生,或者是自己做,所以他们买不起网络基础设施,他们能做的就是他们可以只要在机器上可用,就连接到互联网。

这就是我需要的。在安装了系统的每台机器上都会有一个本地数据库,只要有互联网可用性和用户点击update按钮,它就会更新。 系统还允许用户更新在线数据库。因此,需要支持推拉操作。


现在Qustion:.Net是否支持这种功能。如果是,那么任何特定的api,如果没有,我有什么选择。

2 个答案:

答案 0 :(得分:2)

如果您要通过互联网传输患者记录,那么您将不得不仔细考虑这样做的合法性。这几乎肯定会涉及确保患者记录被加密存储和传输,存储它们的服务器经过仔细配置和维护,具有基本的安全更新,并且访问此数据的医生的PC被验证为被允许这样做(经过验证是合法的并且被授权有权访问特定记录)。

任何这样的错误都可能导致机密的患者数据被泄露,这可能导致您的手术(以及可能的您自己)诉诸法律。如果您发现疏忽,您甚至可能会面临刑事指控的风险。 (IANAL,你需要做自己的尽职调查。)

就我个人而言,我建议尽一切可能实现局域网。这将消除这些法律问题中更敏感的问题,因为您将不再与公共网络连接。网络并不昂贵或困难,如果您解释情况并提供其成本的详细信息,您甚至可以自己设置预算。

如果您拥有大量医生PC,每个人都会更新自己的本地数据缓存,然后定期更新集中存储,那么您迟早会发现最终会出现数据冲突。一个天真的系统将简单地用最近推动的更改覆盖旧数据,丢失任何先前的独立更改。由于我猜你不想丢失数据,所以你需要选择一个策略来避免这种情况。这可能涉及记录锁定或某种形式的冲突解决。查看concurrency control维基百科文章。

答案 1 :(得分:1)

  

c#是否支持这种功能。

是的,它被称为编程。 C#是一种语言(根据语言规范)。它支持某人编程的一切。

  

如果是,那么任何特定的api,如果没有,我有什么选择

不在C#中,没有。 C#根本没有API - 甚至没有在控制台上写一行的API(Console.WriteLine是.NET框架的API,而不是C#应用程序的API)。

如果您起诉SQL Server或为此编写自己的提供程序,Microsoft可以使用SYNC FRAMEWORK。检查http://msdn.microsoft.com/en-us/sync/bb736753.aspx以了解此框架的开始。