0

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

我的第一个解决方案是将程序作为 .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工作的问题和解决方案)

4

1 回答 1

0

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

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

于 2012-12-03T21:15:01.867 回答