17611538698
webmaster@21cto.com

onlyoffice:为在线和桌面应用程序使用相同的源代码

资讯 0 3440 2019-04-25 11:57:23
4.25_.3_.1_.png

 
ONLYOFFICE是一个开源办公套件,用于处理用JavaScript编写的文档,电子表格和演示文稿。它有在线和桌面版本,基本上共享相同的源代码。
 
在本文中,我们将告诉您它是如何完成的以及如何放弃本机应用程序实际上可以帮助项目。
桌面版本差异
 
ONLYOFFICE从在线编辑开始,这些编辑被设想为开源Microsoft Office替代方案:
 
基于OOXML格式(docx,xlsx,pptx),与将ODF作为本机格式的LibreOffice不同。
 
在线工作,允许实时协作,如Google Docs。
 
与Google Docs不同,它可以部署在自己的服务器上或与其他应用程序集成。
 
但事实证明,许多用户仍然渴望使用桌面应用,因为:
 
桌面应用程序更为熟悉。
 
它们工作得更快(可以使用系统资源,而不仅仅是浏览器资源)。
 
可以使用本地字体。
 
语言是自动确定的(在线版本中,您需要手动设置文档和段落语言)。
 
使用剪贴板更方便。
 
打印很容易(不需要先将文档保存为PDF)。
 
那时,我们的资源有限,所以我们必须仔细权衡我们的决定。
 
方法我们拒绝的选项:原生应用
 
如果我们选择创建本机应用程序,我们将不得不重写我们拥有的所有代码以及重新考虑可视化。除此之外,在将来,我们必须测试和更新实际上分别执行相同操作的Web和桌面编辑器。
 
我们选择了什么
 
因此,我们决定使用在线版本中相同的旧JS代码来促进开发和更新。
 
我们需要:
 
JS和C ++之间的通信代码相同。这意味着我们需要一个跨平台的浏览器引擎。由于我们熟悉V8(我们用于构建文件版本),我们将使用某种类型的Chromium。
 
跨平台GUI。我们决定使用QT框架来实现这一目标。
 
能够在将来切换到本机渲染方案。我们不会更改编辑器的JS代码,但我们可能会更改渲染机制以加快应用程序的速度。
 
渲染
 
当我们推迟实现本机渲染时,我们需要一个跨平台的WebView。我们有几个想法。
 
我们可能已经使用了开箱即用的解决方案,因为我们选择了QT,即QWebView或QWebEngineView。但是,QWebView被其开发人员抛弃了。它也很慢并且使用与应用程序相同的过程。这对我们来说至关重要,因为ONLYOFFICE编辑器具有选项卡界面,这绝对意味着同时在同一实例中处理多个文档。因此,如果一个选项卡和一个文档中出现问题,则会影响其他选项卡中的其他文档。QWebEngineView基于Chromium并且正在积极开发中。它更快,并在一个单独的过程中工作。但它在JS代码过程中无法与本机代码一起正常工作。那里的通信是通过网络插座组织的,我们觉得不方便。此外,在4K显示器上渲染速度很慢。
 
纯铬。优点 - 速度和完整的功能。微软的Visual Studio Code基于Chromium,让我们认真考虑一下。
Chromium嵌入式框架。它定期更新(cefbuilds.com),比纯Chromium更容易,但缺乏一些功能。
我们拒绝了标准方法(第一和第二个变体),并采用了Chromium Embedded Framework。因此,最终,我们根据我们的需求实施了CefWebView。
 
应用方案
 
生成的应用程序如下:

4.25_.3_.3_.2_.png

 
在创建V8上下文时,我们嵌入了自己的对象,从而访问了本机JS代码。如果我们需要将数据传输到另一个进程,我们使用内置的CEF消息传递机制来处理进程之间的交互。同样,我们将来自其他进程的消息发送给JS。
 
适用于Mac OS的XCode
 
并非一切都按计划进行。例如,MacOS的应用程序是使用XCode而不是QT创建的。
 
我们将QTabWidget用于带编辑器的选项卡,而MacOS则相当慢。这只是拖放编辑器的标签,这看起来不是一个严重的问题。但为了使其正常工作,有必要从头开始实现此控件。使用XCode定位MacOS很方便。
因此,我们确实为此操作系统提供了一些本机代码。
 
结论
 
所以,你现在知道这个秘密。我们的桌面应用程序是某种仅适用于文档的浏览器。当然,它有一些限制,但最后,它完全值得,因为:
 
我们为用户提供了桌面编辑功能。
 
该应用程序实际上可以用作MS Office / LibreOffice的替代品或作为在线版本的客户端(这意味着您可以访问存储在云中的文档并直接从应用程序进行协作)。
 
它适用于所有平台(因为它是一个浏览器,实际上,它能够在支持HTML的任何东西上运行)。
 
开发和更新过程实际上节省了我们为相同源代码制作的时间和精力。
 
在GitHub上可以找到 ONLYOFFICE桌面编辑器的源代码(以及在线版的源代码)。您也可以从官方网站下载该应用程序。
 
 
 

评论