在C#中使用什么消息传递
因此,我的公司将大量数据存储在foxpro数据库中,并试图解决直接触摸它所带来的性能损失,我当时想将可以异步完成的任何消息传递给用户,以使其更加敏捷。我开始研究ActiveMQ,但不知道Cwill对此有多满意。想听听你们所有人的想法。
编辑:这将是一个Web应用程序。触摸此foxpro的一切都有点慢(可能是因为10年前设置它的人把它搞砸了,有些表文件非常大)。我们每晚将foxpro复制到sql,并且大多数数据读取一天就可以了,因此我们将重点放在写入上。加上写入会影响用户体验(购买)的关键部分,我们将其存储在sql中,然后仅发出消息将其尽可能地放入foxpro中。我希望我们能摆脱foxpro,不幸的是,该公司不想摆脱他们购买的非常老的依赖于它的软件。
解决方案
回答
ActiveMQ与使用Spring.NET集成和NMS一起可以很好地工作。这里有一些带有链接的文章,可朝着这个方向开始。还可以考虑使用MSMQ(System.Messaging名称空间)或者基于.NET的异步消息传递解决方案,并在此处提供一些选项。
回答
抱歉,这不是我们所要的...
我们是否考虑过在后台使用某种Winsock在c / c ++中使用异步套接字时在某种程度上类似于"存储桶系统"的后台缓存?基本上,它通过接受请求来工作,然后将立即响应发送回Web应用程序,当最终找到记录时,它将通过AJAX或者我们选择的任何其他技术在该应用程序上对其进行更新。由于我不是程序员,因此无法提供任何具体示例。希望这可以帮助!
回答
Fox应用程序是否使用.CDX索引?如果是这样,我们可能可以通过添加索引来提高性能,而无需更改任何程序代码。但是,如果使用.IDX索引,则必须在实际应用中进行更改。
回答
值得一提的是,ActiveMQ开源项目为消息传递定义了一个CAPI,称为NMS,它允许我们针对单个C / .Net API进行开发,然后可以使用各种消息传递后端,例如
- ActiveMQ
- MSMQ
- TibCo的EMS
- 任何STOMP提供者
- 通过StompConnect的任何JMS提供程序
回答
由于写操作存在问题,因此我将更多地考虑>删除<表上任何不需要的索引。在RDBMS中很常见,由于需要更新索引,因此FoxPro表上的每个索引都会减慢写入操作的速度,并且由于我们无需直接从表中读取(或者直接查询),因此我们不需要太多索引。我们可能还希望查看表上的所有触发器或者字段规则,因为它们可能会减慢写入操作的速度。但是,请确保仍然保留参照完整性。
回答
MSMQ(Microsoft消息队列)可能是一个不错的选择。它是操作系统的一部分,并且是一个可选组件(可以通过"添加/删除程序" /" Windows组件"安装),这意味着它是免费的(当然,只要我们已经为Windows付费)。 MSMQ提供Win32 / COM和System.Messaging API。更现代的Windows Communication Foundation(又名Indigo)排队通道也使用MSMQ。
请注意,Windows的Home SKU(XP Home和Vista Home)不支持MSMQ。
回答
我们可能需要查看MSMQ。 .NET和VFP可以使用它,但是我们需要重写才能使用它们。这是一篇文章,告诉我们如何使用VFP中的MSMQ。 http://msdn.microsoft.com/en-us/library/ms917361.aspx