因此,我的公司在foxpro数据库中存储了大量数据并试图绕过直接触摸它的性能,我正在考虑发送任何可以异步完成的消息,以获得更快捷的用户体验。我开始关注ActiveMQ,但不知道C#将如何与它挂钩。想听听你们所有人的想法。
编辑:它将成为一个Web应用程序。触摸这个foxpro的任何东西都有点慢(可能是因为10年前设置它的人把它搞得一团糟,一些表文件非常大)。我们每晚都会将foxpro复制到sql,我们的大部分数据都是正常的,所以我们专注于写入。加上写入会影响用户体验(购买)的关键部分,我们将其存储在sql中,然后只是消息将它放入foxpro中。我希望我们可以摆脱foxpro,不幸的是,该公司不想摆脱他们购买的依赖它的旧软件。
答案 0 :(得分:6)
使用Spring.NET集成和NMS,ActiveMQ可以很好地与C#配合使用。有一些链接的帖子可以帮助您开始这个方向is here。还要考虑使用MSMQ(System.Messaging命名空间)或基于.NET的异步消息解决方案,some options here。
答案 1 :(得分:4)
MSMQ(Microsoft消息队列)可能是一个很好的选择。它是操作系统的一部分,作为可选组件出现(可以通过“添加/删除程序/ Windows组件”安装),这意味着它是免费的(当然,只要你已经为Windows支付了费用)。 MSMQ提供Win32 / COM和System.Messaging API。更现代的Windows Communication Foundation(又名Indigo)queued channels也使用MSMQ。 请注意,Windows的Home SKU(XP Home和Vista Home)不支持MSMQ
答案 2 :(得分:1)
值得一提的是ActiveMQ open source project定义了C# API for messaging called NMS,它允许您针对单个C#/ .Net API进行开发,然后可以使用各种消息传递后端,例如
答案 3 :(得分:1)
您可能想要查看MSMQ。它可以由.NET和VFP使用,但您需要重写才能使用它们。这篇文章告诉您如何使用VFP中的MSMQ。 http://msdn.microsoft.com/en-us/library/ms917361.aspx
答案 4 :(得分:0)
对不起,如果这不是你要求的...... 您是否在使用winsock在c / c ++中使用异步套接字时考虑了某种类似于“存储桶系统”的幕后缓存?基本上,它的工作原理是接受请求,并立即将响应发送回Web应用程序,当它最终找到您的记录时,它会通过AJAX或您选择的任何其他技术在应用程序上更新它。由于我不是C#程序员,因此无法提供任何具体示例。希望这有帮助!
答案 5 :(得分:0)
Fox应用程序是否使用.CDX索引?如果是这样,您可以通过添加索引来提高性能,而无需更改任何程序代码。但是,如果它使用.IDX索引,则必须在实际应用程序中完成更改。
答案 6 :(得分:0)
问题在于写入,我更倾向于>删除<表上的任何不需要的索引。正如在RDBMS中常见的那样,FoxPro表上的每个索引都会降低写入操作的速度,因为索引需要更新,并且由于您不是直接从表中读取(或者可能是直接查询),因此您不需要很多索引。您可能还希望查看表上的任何触发器或字段规则,因为它们可能会降低写入操作的速度。尽管如此,请确保您的参照完整性仍然保留。