使用 C# 进行消息传递的用途

Posted

技术标签:

【中文标题】使用 C# 进行消息传递的用途【英文标题】:What to use for Messaging with C# 【发布时间】:2010-09-05 11:26:41 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

ActiveMQ 与使用 Spring.NET 集成和 NMS 的 C# 配合得很好。带有一些链接的帖子可以让您朝着这个方向开始is here。还可以考虑使用 MSMQ(System.Messaging 命名空间)或基于 .NET 的异步消息传递解决方案,some options here。

【讨论】:

此博客不再可用【参考方案2】:

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

【讨论】:

【参考方案3】:

值得一提的是,ActiveMQ open source project 定义了一个 C# API for messaging called NMS,它允许您针对单个 C# / .Net API 进行开发,然后可以使用各种消息传递后端,例如

ActiveMQ MSMQ TibCo 的 EMS 任何 STOMP 提供商 通过StompConnect 的任何 JMS 提供程序

【讨论】:

【参考方案4】:

您可能想查看 MSMQ。 .NET 和 VFP 可以使用它,但您需要重写才能使用它们。这是一篇文章,告诉您如何从 VFP 使用 MSMQ。 https://docs.microsoft.com/en-us/previous-versions/visualstudio/foxpro/ms917361(v=msdn.10)

【讨论】:

【参考方案5】:

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

【讨论】:

【参考方案6】:

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

【讨论】:

【参考方案7】:

由于问题在于写入,我会更倾向于>删除

【讨论】:

以上是关于使用 C# 进行消息传递的用途的主要内容,如果未能解决你的问题,请参考以下文章

跨语言消息传递[关闭]

使用队列的 C# STOMP 消息传递

如何在 chrome 扩展本机消息传递和 c# 应用程序之间发送/接收消息

C#进程间通信--API传递参数(SendMessage)

如何从 C# 客户端应用程序执行 ebMS3 AS4 消息传递

Firebase Spark 计划云消息传递限制 [重复]