<style type="text/css">p {font-family:Microsoft YaHei;}</style>
本文对比分析了LotusNotes平台上两种视图技术。架构和运转过程的分析特定于Lotus Notes平台,其后的关于二进制文件和文本文件的讨论则具有普遍性。(严格地说,XPages指的是IBM基于Lotus Domino和JSF的快速开发技术,XPage则指单个页面,两者的首两个字母都大写。笔者一直遵守这个拼写上的规则。)
架构
XPages的引入是Lotus Notes作为一个开发平台二十多年的历史中最具革命性的变化。从架构上讲,最根本的变化就是把视图和数据定义分离开。这里的视图不是指Notes视图,而是应用程序中展现给用户的界面部分。在传统的Lotus Notes应用程序里,表单既是用户界面,又负责定义字段。这样虽然使视图设计和数据设计的工作合二为一,加快了开发速度,但是视图和数据过于紧密不可拆分的联系大大束缚了系统的结构,不仅减少了灵活性,而且很多时候成为负担。新的XPage则和后端的数据设计没有直接的关系。表单退化成仅仅定义各种类型的文档的字段,也就是定义应用程序用到的各种数据实体存储在数据库时对应的容器的规范,类似于基于关系型数据库的应用程序里的表定义。设计表单时不用考虑用户界面,可以使这些“表”设计得更紧凑、合理、高效。另一方面,以XPage作界面解脱了与后端数据库的结构的捆绑,能够专心适应用户对界面的要求,免去了原来每个表单后面拖着的文档的负担,并且可以接合更广泛的数据类型,实现更灵活的处理。
运转过程
除去架构上的优点,XPage作为一种视图技术与Lotus Notes表单也有很大的差异。从运转过程来说,在一个典型的客户端服务器环境的应用程序里,开发人员设计的表单直接以二进制格式存储于服务器上的某个数据库里,随用户打开文档的操作被传输到Notes客户端,然后由客户端解释,最终展现在用户眼前;XPage页面对应的是XML格式的文本文件,XPages设计时引擎首先将它一一对应转化成Java源文件,然后编译成字节码的class文件,用户从浏览器请求某个页面时,XPages运行时引擎装入该XPage对应的class文件,执行生成前端文件(包括HTML、CSS和JavaScript等),返回给浏览器,最后浏览器再解释这些文件将页面呈现给用户。
二进制文件与文本文件
上面提到表单和XPage在存储格式上的不同,这也是两种技术本质上的重大差别。表单和其他传统的设计元素一样,都是以Lotus Notes私有的“复合数据”(Composite Data简称CD)二进制格式存储在数据库里,只能用Designer和Notes客户端这些特定的软件写入、读取和识别(NotesPeek是IBM提供的一个可以一窥LotusNotes数据库和各个设计元素内部组成的小工具)。XPage则是以文本格式保存(当然也是被包容在一个Lotus Notes数据库的基本存储单元note内)。这个二进制与文本格式的差异意味着什么呢?
首先是文件的编辑方式。二进制文件因为对人是不可读的,只能借助于专门的软件读取和修改。此软件将二进制的代码转换成对人有意义的形式,如属性,再将在此形式下的修改转换回二进制代码保存。文本文件则使用任何文本编辑器都能阅读和修改。在涉及到诸如表单和XPage这样的界面文件时,现代的开发工具基本上都装备了可视化的编辑器,用户只需在视图上添加控件,拖拉位置和修改属性就能完成界面设计。似乎背后采用的是二进制还是文本格式关系不大。但是能够以文本形式编辑在某些场合仍然更加便利。比如要批量修改多个对象的属性时,在可视化的编辑环境里使用属性框时,有两种途径可循。第一种是很多开发环境都采用的,即选中多个对象后,在属性框里允许有相同值的属性处可以统一地编辑,新的值会被应用到所有选中的对象。Domino Designer在同时修改多个设计元素的属性(如继承的模版、是否允许设计变更和刷新更新等)时就是如此。第二种方法比较少见,是将某一个对象的某一种属性的当前值复制到其他同类对象上。Designer在编辑视图时,很多视图列的属性就可以这种方式应用到所有列上。
其次是文件的可移植性。二进制文件与所在机器采用的底层编码的某些特性紧密相关,如字节顺序(endianess)、数据对齐(data alignment)和字节填充(byte padding),因而文件从一台机器移植到另一台机器,就可能要做相应的转换。文本文件因为每个字符都具有跨平台的明确含义,并且占用的字节数也是固定的,跨机器的文件复制对用户来说是完全透明的。只要使用一致的字符编码,在任何机器上读写文本文件都没有差别。具体到Lotus Notes的环境,传统的设计元素采用的二进制格式在不同平台的存储器里遵循的规则就可能不同。例如,运行在Intel x86机器上的Lotus Notes客户端和运行在基于POWER指令集的机器上的LotusDomino服务器,一个数据库里的设计元素在这两台机器的存储器里就具有不同的字节顺序【注1】。所以Lotus Notes读写数据库的API规定了不依赖于底层机器的数据标准,各个平台上的不同的Lotus Notes/Domino版本的本机代码负责在所在平台的底层编码和这个标准之间转换【注】。XPage和生成的Java文件都是文本格式的,先天就更容易在不同平台间移植,就像其他常用的跨平台的web开发的脚本语言一样。
第三是文件的版本控制。在比较版本之间的差异,合并分支版本等版本控制的常见任务上,文本文件都比二进制文件容易很多。Lotus Notes平台上迟迟出现的版本控制功能便是利用DXL将设计元素从二进制格式转换成XML的文本文件,其中的XPage相关文件就省去了转换的步骤。
注1:Intel x86平台的字节顺序是little endian,POWER的是big endian。
注2:参看Lotus C API for Domino and Notes的TYPE_xxx - Item Data Type definitions.、ODSReadMemory - Convert a structure from canonical format to machine-specific format.、ODSWriteMemory - Convert a structure from machine-specific format to canonical format.三页。
分享到:
相关推荐
Lotus Domino中使用Xpage技术打造通讯录
Domino/Notes Xpage技术 开发实例讲解,详解介绍xpage开发过程
通过设置应用程序主题将tundra.css引用到xpage 设置xpage属性,引用dojo模块 在xpage中使用dojo编程 2.1 加载dojo.js Xpage会自动加载dojo.js,默认情况下xpage自动查找data\domino\js下的最新版本。也可以...
超全 Lotus Domino Xpages 开发资料——xpages总结归类资料 大全通过分类提供给大家,请大家根据需要下载 全开源,并且一看就懂,不保留 https://blog.csdn.net/weijia3624/article/details/107013401
LOTUS NOTES 相关技术,XPAGE语言入门书籍,类似JSP的界面设计。
\基于Lotus_Domino/Notes办公自动化系统的设计.pdf
Notes里提供了一个可以放在浏览器里的富文本Java(不是JavaScript)小程序,从而可以得到富文本的一些功能,但是你并不能用JavaScript来对它编程,而且它也不是一个真正的HTML对象类型。 更让Notes开发人员惊讶的是...
lotus notes domino xpage 开发工具书
Chapter 4 Anatomy of an XPage Chapter 5 XPages and JavaServer Faces Chapter 6 Building XPages Business Logic Chapter 7 Working with Domino Documents Chapter 8 Working with Domino Views ……
Domino Xpage 101 , new feature of Domino 8.5
小胡子助手 在 IBM Notes XPage 应用程序中使用 Mustache.java 的帮助工具。 从 Notes 视图中的文档读取 Mustache 模板并转换 Notes 文档的 Java Bean
xpage 报404 的解决办法。 资源是图片,看了就明白
基于DOMINO8.5A平台的xpage应用实例。
关于domino Xpage样例,来自于IBM官方原版提供。
Xpage WorkFlow Template 用过的人都知道这个是个好东东. 这个模版开发出来后,用了好多年了. 应用一下这个模版,会帮助很大哈. 现在的notes行情越来越差.所以我们得多共享好东西.
Domino XPage開發與DB2的整合應用
支持多条邮件 2.将所有需要的审批或日常处理的库动态加载至一处,进行统一处理...6.大量注释 使用XPAGE进行开发 7.上传附件为代码,实际使用可能缺少dojo 和jquery包,请自行加载。 8.部分隐私无法提供,如有需要请单联
Binding to multiple datasources on a single xPage
为什么您的应用越来越慢? 优化您的应用 大数据异构模型 结束语 本文档为您做一个全面的分析
XPage XSP对象介绍