c# - 如何处理 ASP.NET MVC 站点上长时间运行的进程?

标签 c# asp.net asp.net-mvc asp.net-mvc-4

该程序用于将已导入的数据逐行导出到规范化表中。有时可能需要几个小时。

它的工作原理是

  1. 使用按下按钮开始处理
  2. 从 jquery 调用 MVC Controller 上的方法。
  3. 该 Controller 调用一个 DLL,然后开始长处理

一次只有一个人使用这个程序。

我们担心它会占用 ASP.NET IIS 线程。如果我们可以创建一个计划任务,每 30 分钟运行一个 EXE 来检查和处理代码,而不是网站运行代码,这样会更有效吗..

编辑 1:在与同事交谈后,我们现在要做的工作是简单地从网站上删除处理的按钮,并将该处理重构为每 5 分钟运行一次的计划任务......如果有对此有任何评论,请告诉我。

问题实际上是关于网站运行代码与完全独立的 EXE 之间的区别...IIS 线程与进程...它有帮助吗?

最佳答案

如果处理需要几个小时,它绝对应该在一个单独的进程中,而不仅仅是一个单独的线程。通过将其放入单独的进程中,您可以使线程锁定和管理、垃圾收集和其他事情复杂化。例如,如果您的 Web 服务器需要重新启动,您的独立进程可以继续运行而不会受到影响。通过一些工作,您甚至可以根据需要在单独的服务器上启动此进程(当然,您需要更改进程启动机制才能执行此操作)

关于c# - 如何处理 ASP.NET MVC 站点上长时间运行的进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20708689/

相关文章:

c# - 添加前缀以控制 id 并仍然绑定(bind) MVC Razor

c# - 在哪里可以找到生成 EAN 128 条形码的字体?

c# - 使用 Rhino Mocks 测试异步回调

c# - 在 asp.net 4.5.1 的 web 表单中使用身份和角色

c# - 在 C# 中重写 protected 内部虚方法

asp.net-mvc - 隐藏字段 VS 数据库调用

c# - LINQ OrderBy 仅适用于第二个属性

c# - StyleCop SA1402 和泛型

asp.net - 对 HTTP 处理程序的同时请求不起作用

c# - 如何使用 Ajax 将文件和表单数据一起发布到 MVC Controller ?