一个按钮可以用来运行cpu密集型代码,然后用c#和asp.net显示结果吗?

本文关键字:然后 asp net 结果 显示 代码 cpu 一个 按钮 运行 密集型 | 更新日期: 2023-09-27 18:04:36

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

我对c#比较陌生,也没有尝试过用任何其他编程语言。我也没有代码要展示,因为我真的不知道如何进行

一个按钮可以用来运行cpu密集型代码,然后用c#和asp.net显示结果吗?

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

你想要什么类型的CPU密集型代码?有许多方法可以处理这种情况。

我想你的意思是这个过程需要很长时间才能完成?在web应用程序中,任何耗时超过几分钟的事情都应该异步完成。在HTTP的请求/响应模型中,(出于多种原因)对客户端发出的请求做出快速响应是最好的。

对于长时间运行的流程,我所说的"异步"并不是指使用AJAX,因为它仍然是一个请求/响应。

在这种情况下,我所说的"异步"是指你想要有一个单独的服务器端进程来处理CPU密集型任务,而web应用程序所做的只是将任务排队等待运行,并在人们寻找它时检查任务的状态。然后,它可以在任务完成后报告任务的结果。

所以架构的基本概述是这样的:

  1. web应用程序中的用户单击按钮以"启动任务"。
  2. web应用程序将一条记录插入到数据库表中,表明任务已经排队(可能带有排队的用户ID,时间戳,您需要知道的任何其他内容)。
  3. 一个单独的计划应用程序(控制台应用程序或Windows服务,最有可能)一直在运行。(可以在始终运行的Windows服务中使用计时器,也可以作为控制台应用程序,将其一遍又一遍地安排运行,例如每隔几分钟。)这个应用程序检查数据库表中是否有新的排队任务。
  4. 当应用程序看到一个任务时,它在数据库中将其标记为"已启动"(因此应用程序的后续运行不会试图并行运行相同的任务)并开始运行它。
  5. web应用程序可以在数据库表中看到任务的状态,并将其显示给请求它的用户,以便用户可以看到它仍在运行。
  6. 任务完成后,更新数据库表中的任务记录,并将结果存储在某处。(取决于结果是什么。数据?在数据库中。某种类型的报告文件?将其保存为文件。这一切都取决于你。
  7. web应用程序可以看到任务的完成状态和记录的任何其他信息,用户可以请求查看任务的输出。
这里要记住的主要事情是将职责分解为两个应用程序。web应用程序的目的是提供用户界面。web应用程序不适合长时间运行的后台任务。因此,这个责任被转移到一个更适合这个目的的单独的应用程序。这两个应用程序通过共享数据库进行协调。
相关文章: