Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从ASP页执行的.Net程序_.net_Vb.net_Asp Classic - Fatal编程技术网

从ASP页执行的.Net程序

从ASP页执行的.Net程序,.net,vb.net,asp-classic,.net,Vb.net,Asp Classic,我在.net(VB.net)中有一个调用Excel和Word的程序。完成所有任务需要很多时间(它读取许多日志,将数据导出到excel,创建图形,然后将图形导入word模板) 我的第一个解决方案是将该程序作为.dll包含在ASP网站中,但现在我放弃了。该程序的CPU使用率很高,完成所有任务可能需要数小时。网页必须以低CPU使用率和/或快速进程运行进程 现在我有两个选择: A)从ASP执行程序: set WshShell = server.CreateObject("WScript.Shell")

我在.net(VB.net)中有一个调用Excel和Word的程序。完成所有任务需要很多时间(它读取许多日志,将数据导出到excel,创建图形,然后将图形导入word模板)

我的第一个解决方案是将该程序作为.dll包含在ASP网站中,但现在我放弃了。该程序的CPU使用率很高,完成所有任务可能需要数小时。网页必须以低CPU使用率和/或快速进程运行进程

现在我有两个选择:

A)从ASP执行程序:

set WshShell = server.CreateObject("WScript.Shell") 
wshShell.Run program
B)在windows服务中转换程序,并通过MSMQ发送消息,执行例程(读取日志、将数据导出到excel、创建图形…)

我有两个问题:

-首先:这些是“好”的解决方案吗?还有其他“好”的解决方案吗

-Second:我不希望程序中有图形界面。如果word和excel也在后台,效果会更好。有什么办法可以做到这一点吗?
我想唯一的解决方案是选项B),将程序作为windows服务。Excel,word。。。将在另一个“会话”中,并且它不会显示任何内容(我已经阅读了antoher stackoverflow关于此以及获取excel和word工作的问题和解决方案)

B是更好的选择,但我没有任何MSMQ经验。您可能希望使用WCF+MSMQ,因为如果结果证明MSMQ是错误的选项,则可以尝试其他协议,但重新写入的次数较少


对于选项A,ASP classic或ASP.NET都没有针对处理长时间运行的进程进行优化。浏览器在请求中间关闭,IIS可能会阻塞,更难控制工作负载等。此外,如果您有一个ASP页面,这意味着您还有其他人,并且在您的网站中包含长时间运行的任务意味着您面临着用户无法访问其他不相关页面的风险,而所有Web服务器线程都在处理长时间运行的进程。

我也认为B是最佳选择。关于MSMQ,我只在MCF和Visual C++中使用消息。我想这不会很难。至于A,我想当你从asp运行一个程序时,它是在后台执行的,IIS会忘记这个过程。我不想等着完成这个节目。只有ASP运行该程序。选项C如何:让.NET程序执行其任务,以低优先级运行以不烧坏CPU,并将其进度写入数据库或共享文本文件?通过这种方式,经典的ASP可以读取数据库或共享文件并显示进度。是的,事实上,我认为.NET程序可以作为windows服务运行,并每秒读取SQL server中的作业表。在网页(asp)中提交任务时,将发送到作业表。下次windows服务读取此表时,它将作业的状态更改为“正在处理”,并将执行所有任务。当它完成时,它将删除作业。关于进度,这是一个好主意,尽管您必须知道代码中某些地方的“%completed”。但我想我可以估计。