办公自动化和网络应用程序的主要问题在于,办公程序并非旨在同时执行多个副本。如果在Web请求之后立即执行Visio或其他Office程序,可能会遇到什么类型的共享内存问题。这些应用程序的内存占用量不足以处理10个甚至100个同时连接。此外,请求浏览器可能因任何原因而消失,并且确实没有阻止应用程序执行的好方法。
考虑到这一点,只要你限制应用程序就可以成功。一种方法是使用Web服务设置一种排队系统,这样Visio就不会在服务器上多次实例化。
我要做的是设置“visio服务器”。意味着安装了visio的单独机器。然后我会编写一个控制器应用程序,其目的是从队列堆栈中取出一个作业,运行作业并保存结果。这样,您可以确保一次只能运行一个作业,因此一次只能运行一个Visio副本。请注意,这可以很好地处理一些许可问题。
因此,Web应用程序会将作业发布到数据库队列。控制器将轮询这些作业,并在找到它们时执行它并存储结果。冲洗并重复。
Web应用程序可以轮询数据库以查看结果何时准备好并将其提供给用户。可能是某种类型的Ajax页面每15秒检查一次。或者,用户可以通过电子邮件发送结果,或者他们可以“稍后再回来查看”......
作为旁注,这可以避免任何类型的安全风险,因为控制器和visio将在单独的机器上运行。这个单独的机器不需要任何其他权限,只需简单地执行visio并从数据库中提取作业信息。所以,即使你有某种类型的流氓visio东西,它的损害仅限于那台机器。