2012-01-17 24 views
2

的Mircosoft建议不办公工具(Considerations for server-side Automation of Office) 不过,我看没有其他选择的服务器端自动化。我想要做的是将vsd文件转换为html(超链接的图像+地图)。这在Aspose.Diagram中尚不可行,这里引用了类似问题的答案。 LibVisio这是/将在LibreOffice 3.5中使用尚未完成,也不支持超链接。替代的Visio服务器端自动化

还有什么我可以尝试吗? 如果没有:如何为ASP.NET Web服务设置访问权限的任何提示,以便它可以访问Visio而不会成为主要的安全风险,我们将不胜感激。 (一个教程只是设置它冒充系统管理员帐户,这听起来有点危险)

回答

1

办公自动化和网络应用程序的主要问题是,办公室程序不是设计有多个副本执行在同时。如果在Web请求中立即执行Visio或其他办公程序,您可能会遇到什么类型的共享内存问题。这些应用程序的内存占用空间不适合处理10个甚至100个同时连接。此外,请求浏览器可能会因为任何原因而离开,并且确实没有任何阻止应用程序执行的好方法。

考虑到这一点,只要您扼杀应用程序,就可以成功。一种方法是使用Web服务设置一种排队系统,以便Visio不会在服务器上多次实例化。

我会做的是建立一个“visio服务器”。意味着安装了Visio的单独机器。然后,我会编写一个控制器应用程序,其目的是将单个作业从队列堆栈中取出,运行作业并保存结果。这样,您可以确保一次只有一个作业,因此一次只能运行一个Visio副本。请注意,这整齐地处理一些授权问题。

因此,Web应用程序会将作业发布到数据库队列中。控制器会轮询这些工作,一旦找到,就会执行并存储结果。冲洗并重复。

的Web应用程序可以查询数据库时看到的结果是准备给他们的用户。可能是某种类型的Ajax页面,每隔15秒左右检查一次。或者,用户可能只是通过电子邮件发送结果,或者他们可以“稍后再回来查看”...

作为一个备注,这避开了任何类型的安全风险,因为控制器和visio将运行在单独的机器。这个单独的机器不需要任何其他权利,而只需执行visio并从数据库中提取作业信息。所以,即使你有一些类型的流氓视觉事件,损害仅限于一台机器。