C# 使用托管在IIS中的WCF处理长时间运行的服务操作的正确方法是什么?
我正在构建一个WCF服务,它将公开多个操作,它将在IIS中运行,因为它需要HTTPS端点。大多数操作将在几秒钟或更短时间内执行;但是,其中一个或两个操作需要5-90分钟 此服务的主要使用者将是ASP.NET MVC应用程序;正确的处理方法是什么 我应该增加超时时间并进行一些ajax调用吗?我应该向数据库中添加一个表,让长时间运行的操作更新这个数据库,让web界面每分钟轮询一次这个表吗?我不确定这方面公认的最佳实践是什么(如果有)。看看这个 可能还有其他选择,但它们几乎是一样的。您还可以在下面的链接中提供一些推送通知(我假设没有返回任何数据)C# 使用托管在IIS中的WCF处理长时间运行的服务操作的正确方法是什么?,c#,asp.net,.net,wcf,C#,Asp.net,.net,Wcf,我正在构建一个WCF服务,它将公开多个操作,它将在IIS中运行,因为它需要HTTPS端点。大多数操作将在几秒钟或更短时间内执行;但是,其中一个或两个操作需要5-90分钟 此服务的主要使用者将是ASP.NET MVC应用程序;正确的处理方法是什么 我应该增加超时时间并进行一些ajax调用吗?我应该向数据库中添加一个表,让长时间运行的操作更新这个数据库,让web界面每分钟轮询一次这个表吗?我不确定这方面公认的最佳实践是什么(如果有)。看看这个 可能还有其他选择,但它们几乎是一样的。您还可以在下面的
我为我的高级项目写了类似的东西,基本上是一个作业调度框架
我不喜欢从我的工作主机上“拔掉网线”,再也不会从这个特定的工作中得到状态更新。因此,windows服务使我能够不断监视WCF工作主机的进度,如果发生连接错误(或其他意外情况),我可以将状态更新为failed。因此,没有孤立的作业。如果长时间运行的操作没有传输数据,那么您可能应该将其分解为异步处理器。因此,客户端会请求启动作业,然后定期检查以获得响应或消息“稍后检查”。@Noah,长时间运行的操作不会返回太多数据,直到它们完成,如果你不传输数据,你肯定不应该让http连接打开那么长时间,所以最好把它断开@Jim提供了一个很好的例子。你有没有理由推出自己的经理而不是使用MSMQ?不特别是。我从未使用过MSMQ,正如我所说的,这只是学校/合作社的一个项目。我相信有很多方法可以改进设计,但对于我所需要的,它已经足够简单了。该应用程序的主要目的是处理WCF,尽管MSMQ会很有用,但它并不是重点。在您的设计中,您的每个“工作主机”都会向正在寻找工作的经理查询吗?或者经理会在需要的时候给每一个工作打电话吗?这些“工作主机”只是愚蠢的工作人员。它们有一组实现,根据接收到的服务调用来调用它们。他们不与任何其他人进行任何交流。当经理轮询更新时,他们只响应状态更新,等等。。。