我在.net(VB .Net)中有一个调用Excel和Word的程序。完成所有任务需要花费大量时间(它会读取许多日志,将数据导出到Excel,创建图形,然后将图形导入到单词模板中)。
我的第一个解决方案是将该程序作为.dll包含在ASP网站中,但现在我已经解雇了。该程序具有较高的CPU使用率,可能需要数小时才能完成所有任务。网页必须运行CPU使用率低和/或快速进程的进程。
现在我有两个选择:
A)从ASP执行程序:
set WshShell = server.CreateObject("WScript.Shell")
wshShell.Run program
B)在Windows服务中转换程序,并执行通过MSMQ发送消息的例程(读取日志,导出数据到excel,创建图形...)。
我有两个问题:
- 首先:这些“好”解决方案?还有其他“好”的解决方案吗?
- 第二次:我不想在程序中使用图形界面。如果word和excel也在后台,那就更好了。有没有想过要做到这一点? 我想唯一的解决方案是选项B),程序作为Windows服务。 Excel,word ...将在另一个“会话”中,并且它不会显示任何内容(我已经阅读了有关此问题的antoher stackoverflow以及获得excel和word工作的问题和解决方案)
答案 0 :(得分:0)
B是更好的选择,但我对MSMQ没有任何经验。您可能希望使用WCF + MSMQ,因为如果事实证明MSMQ是错误的选项,则可以尝试使用较少重写的其他协议。
对于选项A,ASP经典或ASP.NET都没有针对长时间运行的进程进行优化。浏览器关闭请求,IIS可以抓住,更难以节省工作负载等等。另外,如果你有一个ASP页面,这意味着你有其他人,包括你的网站中长时间运行的任务意味着你冒着用户的风险无法访问其他不相关的页面,而所有的Web服务器线程都处理长时间运行的进程。