use*_*754 0 .net c# sql wpf wcf
好吧,坚持下去,因为这里有很多层次,虽然这可能需要一点时间来阅读所有这些,但我认为我们所提出的答案对整个社区都非常有用. ,让我设置问题:
我有一个C#.Net桌面应用程序(Windows Forms,但它可以像我想的那样很容易就是WPF),这是一个销售订单输入和管理系统.我遇到的问题是,我需要在应用程序中使用的最重要的数据列表之一是相当大(大约15k记录,并且正在增长)并且正在发生变化,我想保留列表内存与数据库同步,而不是每2秒或两次轮询数据库.应用程序也不是单实例,因此所有这些列表都将应用程序需求从数据库引入内存并在每个实例中保留一次.
好了,既然你已经看到了困境,那就让我们看看我们是否能够找到解决方案.
我的想法:
如果我们能够使用.NET 4.0(我可以),我认为在内存中只保留一组数据的答案是使用内存映射文件.虽然它看起来像是一个本垒打,但它的管理要复杂得多,而且可能有些过分.思考?
为了将数据库中的数据加载保持在最低限度,我想到了将各种列表保存到用户PC上某些特殊文件夹中的XML文本文件,然后是一个最终XML文件,用于跟踪XML文件及其日期.在应用程序启动时,将执行对DB的单个调用,获取表/列表列表以及每个列表的"上次更新日期".对于具有相同上次更新日期的每个XML文件,我可以从XML文件加载,而不是查询数据库.对于过时的列表,我可以查询自我拥有的日期以来的更改,然后加载XML文件,然后提交更改.这样,我不得不等待的更多可能是更频繁更新的列表的更改,而不是所有表/列表.好吧,我承认我不是最擅长解释事情,但我认为你应该能够想象它.
至于实时保持最新状态我正在考虑插入和更新触发器(不会发生删除)然后调用SP,这就是我有点模糊的地方,以某种方式传递插入/更新的信息应用程序已订阅的WCF服务,并通过WCF回调将更新推送到客户端.现在我认为这应该都可行,但是,例如,这不会导致应用程序的3个实例同时更新内存中的相同更改吗?WCF服务是否能够将更新仅发送到每个客户端PC的一个实例; 它可以分化吗?
在此先感谢任何和所有的想法,意见和投入.我会保留至少48小时"给予"答案,因为我希望每个人都有机会投入2美分,让这个线程对未来更有用......
我无法看到将数据库保存在内存中的好处.数据库的要点是数据库.
您必须在应用程序中重现多用户数据库功能.
这似乎是一个没有胜利的主张.把它留给微软.而是创建一个使用sql server的所有功能的n层应用程序.然后,当你有一个工作的beta版本时,查找应用程序的部分内容很慢并从那里移动.
| 归档时间: |
|
| 查看次数: |
803 次 |
| 最近记录: |