我已经阅读了整个VSTO文档,并开始浏览MSDN上的大多数Office加载项(office.js)文档,但没有找到我的问题的答案。
您能否请给我一个答案,如果可能的话,请指出我在MSDN上回答我的问题的页面?
问题
在客户端计算机未安装Microsoft Office且使用浏览器访问Office Online并且他加载使用Office.js编写的Office加载项的情况下,在这种情况下,计算机在哪里托管COM对象及其驻留的Office进程?
以下是我对使用Office.js加载项所涉及的元素的理解:
包含数据的Open XML文档。这只是死肉。它必须加载到一个过程中。
早些时候,该进程曾经是非托管的WINWORD.EXE(或EXCEL.EXE或POWERPNT.EXE或其他办公应用程序)进程。
现在,对于office.js,当使用Office Online,即Web客户端时,非托管Office进程仍然必须在某些计算机的内存中分配?基本上,这是我问题的核心。
我的猜测是 它必须,并且该过程可以远程运行 服务器。文档本身可以远程托管,而不是 但这个过程也很重要,对于Office来说也是如此 在线,非托管办公流程在远程计算机上运行。它 这是我想要确认或无效的假设。
有客户端用户界面。这曾经是办公应用程序中的非托管C ++代码网格,以及.NET使用VSTO和Windows窗体或WPF创建的托管UI。现在,使用Office.js,这可以使用HTML / CSS / JavaScript完成,并且可以由任何类型的客户端(桌面/ Web)加载。
托管文档并提供基础Document
,Bookmark
,Range
等对象的流程。我的问题是 - 对于没有在客户端计算机上安装MS Office的Office Online客户端,如果他们使用使用office.js编写的Office加载项,这个过程现在在哪里?
我认为Office加载项的JavaScript API只调用我们已经知道的现有Office COM基础结构,这是错误的吗?如果我是对的,那么承载Winword.exe(或任何Office应用程序)进程的机器在哪里?
答案 0 :(得分:3)
回答代码执行位置的问题:没有" COM"对象本身(Office.js API的新浪潮不是基于VBA COM对象,至少不是直接)。但确实有一个支持服务器,它将文档打开并在内存中。在Excel的情况下,Excel Online前端是一个相当简单的"层,几乎所有操作都由支持服务器执行。该服务器不直接运行EXCEL.exe,但它有一个类似于Excel的Web服务(并且它共享许多相同的底层C ++代码),它运行在"无头& #34;模式,每个文档一个实例。另一方面,在Word的情况下,Word Online有更多的业务逻辑可以在本地执行,因此很多操作在浏览器上执行并在空闲时同步回服务器(很像最终用户操作),但仍有一个支持服务器为Word Online前端提供适当的数据,并处理某些操作(例如range.getOoxml()
或image.getImage()
)。
希望这有帮助。
答案 1 :(得分:2)
Office Web加载项(office-js)是利用特定库(office-js)促进加载项和主机应用程序之间通信的Web应用程序。
由于这些加载项只是Web应用程序,因此它们可以在各种Office平台(Windows,Web,Mac,iOS)上运行。对于基于浏览器的Office版本,加载项显示在iframe
中。对于本机版本,它们托管在嵌入式浏览器中(IE11,Webkit等,具体取决于平台)。
加载项由两个组件组成,即XML清单和Web应用程序。清单可以从多个位置加载,从直接侧载,到网络共享,再到numpy.nanmean
。网络应用程序托管在您通常托管您的网络应用程序的任何地方(我建议Office Store,但我有点偏颇)。它们永远不会由Microsoft直接托管。