gpt4 book ai didi

c# - 使用 IIS 中托管的 WCF 处理长时间运行的服务操作的正确方法是什么?

转载 作者:可可西里 更新时间:2023-11-01 09:15:51 25 4
gpt4 key购买 nike

我正在构建一个将公开多个操作的 WCF 服务,它将在 IIS 中运行,因为它需要 HTTPS 端点。大多数操作将在几秒或更短时间内执行;但是,其中一两个操作需要 5-90 分钟。

此服务的主要使用者将是 ASP.NET MVC 应用程序;处理这个问题的正确方法是什么?

我应该增加超时并进行一些 ajax 调用吗?我是否应该向我的数据库添加一个表,让长时间运行的操作更新这个数据库,并让 Web 界面每分钟轮询一次这个表?我不确定对此普遍接受的最佳做法是什么(如果有的话)。

最佳答案

我为我的高级项目写了一些类似的东西,基本上是一个作业调度框架。

  1. 我选择了将“工作”的“状态”存储在数据库中的方式。
  2. 我编写了一个实现 WCF 客户端(代理)的管理器 Windows 服务
  3. 我编写了一个 WCF 服务来实现我的“工作主机”。

管理器服务将从数据库中读取队列,并将工作分配给我所有的“工作主机”。我让 Windows 服务执行此任务而不是让 UI 直接与工作主机对话的原因是因为它对整个过程提供了额外级别的控制。

我不喜欢从我的工作主机上“拔掉网络电缆”的想法,而且再也不会从这个特定的工作中获得状态更新。因此,Windows 服务使我能够持续监视 WCF 工作主机的进度,如果发生连接错误(或其他意外情况),我可以将状态更新为失败。因此,没有孤立的工作。

关于c# - 使用 IIS 中托管的 WCF 处理长时间运行的服务操作的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11087826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com