繁体   English   中英

可以使用按钮来运行cpu密集型代码,然后使用c#和asp.net为Web应用程序显示结果吗?

[英]Can a button be used to run cpu intensive code and then display the results using c# and asp.net for a web app

我目前正在尝试创建一个具有主页的应用程序。 在此主页上,有一个按钮,它将运行CPU密集型代码,然后显示结果。 正如我在标题中所述,该应用程序使用的是ASP.NET和C#,而不是Windows Forms,我看过的其他一些网站似乎暗示了这一点。

我对C#还是比较陌生,还没有尝试使用其他任何编程语言进行此操作。 我也没有要显示的代码,因为我真的不知道该如何进行。

是的,它可以在服务器上运行CPU密集型代码。 请注意,这通常会阻止您的Web应用程序在合理的时间内发送响应,并且该Web应用程序似乎已冻结。

您打算使用哪种类型的CPU密集型代码? 有许多方法可以处理这种情况。

通过“ CPU密集型”,我想您是说该过程需要很长时间才能完成? 在Web应用程序中,所有花费多于几分钟的时间都应异步完成。 在HTTP的请求/响应模型中,最好(出于多种原因)最好快速响应发出请求的客户端。

对于长时间运行的进程,“异步”并不是指使用AJAX,因为它仍然像其他任何请求/响应一样。

“异步”在这种情况下的意思是,您希望有一个单独的服务器端进程来处理CPU密集型任务,并且Web应用程序除了将任务排队等待运行并检查任务状态时,无外乎人们在寻找它。 然后,它可以在完成任务后报告任务的结果。

因此,该架构的基本概述如下所示:

  1. Web应用程序中的用户单击按钮以“启动任务”。
  2. 该Web应用程序将一条记录插入数据库表中,以表明该任务已排队(也许带有排队的任务的用户ID,时间戳,您需要了解的其他信息)。
  3. 永久运行单独的计划应用程序(控制台应用程序或Windows Service)。 (可以在始终运行的Windows Service中使用计时器,也可以计划将其作为控制台应用程序反复运行(例如每隔几分钟)。)此应用程序检查数据库表中是否有新的排队任务。
  4. 当应用程序看到任务时,它将在数据库中将其标记为“已启动”(因此,应用程序的后续运行不会尝试并行运行同一任务)并开始运行它。
  5. 该Web应用程序可以在数据库表中查看该任务的状态,并将其显示给请求该任务的用户,因此用户可以看到该任务仍在运行。
  6. 任务完成后,数据库表中的任务记录将更新,并将结果存储在某处。 (取决于结果是什么。数据?在数据库中。某种报表文件?另存为文件。这完全取决于您。)
  7. Web应用程序可以查看已完成任务的状态以及记录的任何其他信息,并且用户可以请求查看任务的输出。

这里要记住的主要事情是将职责分为两个应用程序 该Web应用程序旨在提供用户界面。 Web应用程序不适合长时间运行的后台任务。 因此,将责任转移到更适合该目的的单独应用程序中。 这两个应用程序通过共享数据库进行协调。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM