WebOffice及其相关技术介绍
1、WebOffice组件是一种支持在线文档编辑的中间件,目前支持的主流文件格式有:Word、Excel、WPS等编辑文档。
中间件是什么?中间件是一种独立的系统软件或服务程序,可以让不同技术之间共享资源。中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。如WebOffice连接Web应用本身和本地的office软件之间的资源共享。
图1-1
2、WebOffice是标准的ActiveX组件,支持在B/S、C/S应用开发平台中嵌入整合,是在微软的DSOframer控件的基础上封装开发的,已经为我们提供好了数字证书,可直接使用。
ActiveX是什么?activeX控件也叫OLE控件或OCX控件,它是一些软件组件或对象,可以将其插入到WEB网页或其它应用程序中。使用ActiveX,可轻松方便的在Web页中插入多媒体效果、交互式对象、以及复杂程序等。但只有IE能够识别ActiveX控件,所以如果需要得到其他浏览器内核的识别还需要通过插件技术来完成。如WebOffice提供的ffactivex-setup-r39.exe插件。
DSOframer是什么?DSOframer是微软提供一款开源的用于在线编辑、调用Word、 Excel 、PowerPoint等的ActiveX控件。
数字证书是什么?数字证书是一个经证书授权中心(CA机构)数字签名的包含公开密钥拥有者信息以及公开密钥的文件。最简单的证书包含一个公开密钥、名称以及证书授权中心的数字签名。数字证书的作用是确保信息传输的保密性、数据交换的完整性、发送信息的不可否认性、交易者身份的确定性。数字证书还有一个重要的特征就是只在特定的时间段内有效。
数字签名技术是什么?将报文按双方约定的哈希算法计算得到一个固定位数的报文摘要。在数学上保证:只要改动报文中任何一位,重新计算出的报文摘要值就会与原先的值不相符。这样就保证了报文的不可更改性。
将该报文摘要值用发送者的私人密钥加密(对明文进行解密完全没问题,会得出一个不可读的“明文”),然后连同原报文一起发送给接收者,而“加密”后的报文即称数字签名。
接收方收到数字签名后,用同样的哈希算法对原报文计算出报文摘要值,然后与用发送者的公开密钥对数字签名进行解密,得到的报文摘要值相比较。如相等则说明报文确实来自所称的发送者,因为于只有拥有私钥的签名者能通过加密摘要生成签名,因此具有安全和不可抵赖性。
那为什么是对报文摘要进行加密,而不是对原报文进行加密呢?这是因为RSA加解密非常耗时,被加密的报文越大,耗得时间越多,因此聪明的人类对其摘要进行加密,(因为报文摘要是要比原报文小得多),仍然能够起到同样的作用。这就是为什么多了个报文摘要。
数字签名算法依靠公钥加密技术来实现的。在公钥加密技术里,每一个使用者有一对密钥:一把公钥和一把私钥。公钥可以自由发布,但私钥则秘密保存;还有一个要求就是要让通过公钥推算出私钥的做法不可能实现。这里用一个简单的例子来解释数字签名的应用过程:假如现在Alice向Bob传送数字信息,为了保证信息传送的保密性、真实性、完整性和不可否认性,需要对传送的信息进行数字加密和签名,其传送过程为:
1.Alice准备好要传送的数字信息(明文);
2.Alice对数字信息进行哈希运算,得到一个信息摘要;
3.Alice用自己的私钥对信息摘要进行加密得到Alice的数字签名,并将其附在数字信息上;
4.Alice随机产生一个加密密钥,并用此密码对要发送的信息进行加密,形成密文;
5.Alice用Bob的公钥对刚才随机产生的加密密钥进行加密,将加密后的DES密钥连同密文一起传送给Bob;
6.Bob收到Alice传送来的密文和加密过的DES密钥,先用自己的私钥对加密的DES密钥进行解密,得到Alice随机产生的加密密钥;
7.Bob然后用随机密钥对收到的密文进行解密,得到明文的数字信息,然后将随机密钥抛弃;
8.Bob用Alice的公钥对Alice的数字签名进行解密,得到信息摘要;
9.Bob用相同的哈希算法对收到的明文再进行一次哈希运算,得到一个新的信息摘要;
10.Bob将收到的信息摘要和新产生的信息摘要进行比较,如果一致,说明收到的信息没有被修改过。
3、点聚的WebOffice和卓正的PageOffice的比较。
- 相同点:
1)可以对基本的office文档格式(Word、Excel、PowerPoint等)进行编辑。
2)打开、保存文档均有实时进度提示。
3)可更换界面主题,支持多种界面风格。
4)word的修订痕迹、手写批注、签名、套红与保护等功能。
5)可以通过js脚本实现控制文档权限,调用、删除本地文档,上传Web服务器功能。
- 区别:
1)免费试用版的卓正PageOffice在打开、保存文档时的实时进度提示有卓正的版权商标字样,并提示去使用收费版本。点聚WebOffice则没有。
2)点聚WebOffice组件只依赖前端脚本技术语言,卓正PageOffice需要配合后端的脚本使用,如后端使用Java语言则需要下载相应的PageOffice支持jar包,并撰写相应的java代码支持使用。
3)WebOffice的免费版本是永久免费的,而PageOffice的试用版只有3个月的试用期。
4)PageOffice可以实现读取服务器文档的并发控制,WebOffice则不可以。
WebOffice是怎样运作的?
1、首先下载exe安装包和cab组件包。exe安装包用于客户端手动安装,如图1-1;cab组件包用于系统集成,放在服务器通过代码实现客户端通过IE自动安装,如图2-2中的codebase属性(但只有IE才能识别,还要依赖用户IE的安全级别设置并且有时会失效)。
图2-1
图2-2
2、在网页中使用<Object>标签作为组件的载体,并使用js来取得对象的引用(如图2-2),即可调用其提供的方法。
3、WebOffice可以打开本地文档,也可以从服务器下载文档进行打开。从服务器下载文档的原理其实是把服务器的文档下载到本地的一个默认文件夹中(可以调用接口获得其路径),然后再打开本地文档。
4、WebOffice可以调用office的保存、另存为等接口,但一般情况我们是希望保存文档到服务器中,其原理的调用WebOffice的相应接口把默认路径的临时文件上传到服务器,从中还可以传递一些额外参数过去,服务器接收后返回一个结果,再由接口返回其结果;若服务器不返回结果,则接口也会返回一个默认的结果success。
5、需要注意的是,WebOffice是内置了一个HTTP引擎,所以通过调用WebOffice的接口与服务器交互(包括上传、下载等),其实是调用其自身的HTTP引擎发送的请求。这意味着此次请求的Session对象与当前页面所对应的Session对象不是同一个。这时候若要调用原来Session的信息或者需要判断相关权限操作,则需要另行处理,如自建一个Session池等。