因此,我的公司在 FoxPro 数据库中存储了大量数据,并试图避免直接接触数据对性能的影响,我正在考虑发送任何可以异步完成的消息,以获得更快的用户体验。我开始看 ActiveMQ 但不知道 C# 与它的挂钩效果如何。想听听大家的想法。

编辑 :它将是一个网络应用程序。任何接触这个 FoxPro 的东西都有点慢(可能是因为 10 年前设置它的人把它搞砸了,一些表文件非常大)。我们每晚将 FoxPro 复制到 sql,并且大多数数据读取都可以在一天前完成,因此我们将重点放在写入上。再加上写入会影响用户体验(购买)的关键部分,我们将其存储在 sql 中,然后在可能的情况下发送消息将其放入 Foxpro 中。我希望我们能够摆脱 Foxpro,不幸的是,该公司不想摆脱他们购买的依赖于它的非常旧的软件。

有帮助吗?

解决方案

ActiveMQ 使用 Spring.NET 集成和 NMS 与 C# 配合良好。包含一些链接的帖子可帮助您朝这个方向开始 在这儿. 。还可以考虑使用 MSMQ(System.Messaging 命名空间)或基于 .NET 的异步消息传递解决方案, 这里有一些选项.

其他提示

MSMQ(微软消息队列)可能是一个不错的选择。它是操作系统的一部分,作为可选组件出现(可以通过“添加/删除程序/Windows 组件”进行安装),这意味着它是免费的(当然,只要您已经为 Windows 付费)。MSMQ 提供 Win32/COM 和 系统消息传递 蜜蜂。更现代的 Windows Communication Foundation(又名 Indigo) 排队通道 也使用MSMQ。请注意,Windows 的家庭 SKU(XP Home 和 Vista Home)不支持 MSMQ

值得一提的是 ActiveMQ开源项目 定义了一个 用于消息传递的 C# API,称为 NMS 它允许您针对单个 C# / .Net API 进行开发,然后可以使用各种消息传递后端,例如

  • ActiveMQ
  • 消息队列
  • TibCo 的 EMS
  • 任何 STOMP 提供商
  • 任何 JMS 提供商通过 Stomp连接

您可能想查看 MSMQ。它可以被 .NET 和 VFP 使用,但是您需要重写才能使用它们。这里有一篇文章告诉您如何从 VFP 使用 MSMQ。 http://msdn.microsoft.com/en-us/library/ms917361.aspx

抱歉,如果这不是您所要求的......您是否考虑过在使用 Winsock 在 C/C++ 中使用异步套接字时,幕后的某种缓存,其作用有点像“存储桶系统”?基本上,它的工作原理是接受请求,并将立即响应发送回网络应用程序,当它最终找到您的记录时,它会通过 AJAX 或您选择的任何其他技术在应用程序上更新它。由于我不是 C# 程序员,因此无法提供任何具体示例。希望这可以帮助!

Fox 应用程序是否使用 .CDX 索引?如果是这样,您也许可以通过添加索引来提高性能,而无需更改任何程序代码。但是,如果它使用 .IDX 索引,则必须在实际应用程序中进行更改。

由于问题在于写入,我会更倾向于>删除<表上任何不需要的索引。正如 RDBMS 中常见的那样,FoxPro 表上的每个索引都会减慢写入操作,因为索引需要更新,并且由于您不是直接从表中读取(或可能直接查询)表,因此您不需要太多索引。您可能还想查看表上的任何触发器或字段规则,因为它们可能会减慢写入操作。不过,请确保您的引用完整性仍然保留......

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top