Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET web服务使用哪种异步持久消息队列服务解决方案?_C#_Asp.net_Sql Server_Message Queue_Appfabric - Fatal编程技术网

C# ASP.NET web服务使用哪种异步持久消息队列服务解决方案?

C# ASP.NET web服务使用哪种异步持久消息队列服务解决方案?,c#,asp.net,sql-server,message-queue,appfabric,C#,Asp.net,Sql Server,Message Queue,Appfabric,我有一个ASP.NET web服务,它需要通过另一个服务(单独的进程)发布异步处理请求。因此,要求是一个持久队列。服务器是运行SQL server的Windows server 我考虑使用数据库中的一个表编写自己的排队服务,在该表中发布请求,并通知另一个服务它随后处理的新行。如果服务失败,在启动时,它将处理队列表中所有未处理的项 然后,我考虑在ASP.NET应用程序中不使用DB来维护队列和管理进程中的队列。为了持久性,所有作业都将写入数据库,以便在出现故障时检索 但是,此选项可能不合适,因为其想

我有一个ASP.NET web服务,它需要通过另一个服务(单独的进程)发布异步处理请求。因此,要求是一个持久队列。服务器是运行SQL server的Windows server

我考虑使用数据库中的一个表编写自己的排队服务,在该表中发布请求,并通知另一个服务它随后处理的新行。如果服务失败,在启动时,它将处理队列表中所有未处理的项

然后,我考虑在ASP.NET应用程序中不使用DB来维护队列和管理进程中的队列。为了持久性,所有作业都将写入数据库,以便在出现故障时检索

但是,此选项可能不合适,因为其想法是使用通用队列服务来处理来自任何服务器应用程序的作业

于是我开始了一段探索之旅,从如何通知我的监听服务在数据库中插入一行开始。我读到了这篇文章,这篇文章把我带到了一页。在那里,我学到了一些知识,其中包括。我不确定这在这里是否相关,但这让我阅读了关于和的文章,两者都是排队消息的理想选择(尽管Azure不是一个选项,因为出于法规遵从性原因,我们的服务器不能在环境之外发送数据)

最后,我了解到微软会(所以对我来说不再是一个选择),这将是我选择的武器

然后,在与同事讨论上述问题后,MSMQ(或类似的排队软件)可能被认为是最好的选择,因为它允许我们进行更多的控制


根据我的要求和前述的发现之旅,对什么是一个好的策略或一个好的解决方案的任何建议都是非常值得赞赏的。

鉴于你已经做了一些研究,我个人建议你进一步研究MSMQ。虽然它很复杂,一开始可能会让人望而生畏,但它似乎确实为您的项目提供了所需的灵活性

老实说,除了我个人的观点之外,很难简单地就几个问题的几段说什么是正确的行动方针。

如今,MSMQ通常拥有更多的思想份额——它在金融行业非常重要,而且非常具有企业精神

良好的讨论和比较非常重要。

您可以将NCache(开放源代码或企业版)作为一种支持全面故障切换的解决方案,它还可以加快您的速度,因此一举两得

您提到了SQL server上的查询通知,而NCache恰好也以连续查询的名义支持该通知

它基本上是一个分布式缓存,克服了关系数据库的瓶颈,而且非常易于使用。Redis也是分布式缓存的一个很好的例子


免责声明:我为Alachisoft工作,如果您有任何问题,请立即询问。

分布式队列?主动-被动故障切换?分布式队列:。。。高可用性:遗憾的是,我不再受雇于我拥有源代码的公司。你能为所有社区重新创建它吗?你对社区的贡献