55. 略谈Lotus Notes的与众不同及系列文章至此的总结
在二十多年的悠久历史里,Lotus Notes发展出一整套独特的概念、技术和思维。由于它早期惊人的领先时代和后续发展中同样惊人的忠于传统,这位软件领域的寿星在如今发展更新速度远超往日和技术愈趋公开互通的时代,尤显与众不同。
在这里你可以进行速度上无与伦比的快速开发,有图形用户界面和远程数据库,能自动更新的,多用户的,有高度安全性的,权限严密控制的,可以离线使用和自动同步数据的客户端服务器模式的应用程序。
但是你却不需要掌握数据结构、编译连接、关系型数据库设计和面向对象的思想,不需要了解控件、SQL语言、XML。
你会遇上语法独特的公式语言,需要掌握表单、视图、代理等设计元素的概念,熟悉文档这样一个既是数据库存储单元又是编程中重要对象的东西,最常打交道的事隐藏公式、字段类型。
在这个孤处海上的岛国里,你用着与流行于世界的语言截然不同的古老语言。(计算机专业毕业的学生会发现他在大学所学没有用武之地,变得和其他专业的人处于相同的起跑线。这或许也是Lotus Notes的开发人员当中非专业背景的比例特别高的原因之一。)
有时候这种差异是因为通行的技术和标准诞生得比Lotus Notes所采用的晚。比如Lotus Notes的表单是由被称为“复合数据”(Composite Data简称CD)的二进制格式定义的。为什么不采用流行的XML呢?原因很简单,那时候还没有XML。
尽管是一个专有的(proprietary)技术世界,Lotus Notes的各种技术和蕴含的理念,有些先于后来流行者,如程序和数据都存储在服务器上却下载到客户端运行就可以看作大行其道的Web应用程序的先声;还有很多在LotusNotes没有明确提出的观念,实际上平台本身都体现了,比如Notes文档和表单紧密结合在一起就执行了数据绑定的概念。
笔者认为,以关系型数据库、Web程序开发、MVC架构这些Lotus Notes技术世界以外的标准和思想来比较和看待它,既能获得对Lotus Notes更深入的理解,又常常能从其获得启发。这也基本上是贯穿笔者所写的Lotus Notes杂谈系列文章的想法之一。
另外一个想法与LotusNotes作为开发平台的特点有关。从开发的角度,Lotus Notes是一个快速开发(RAD)平台,很多技术细节都被封装起来,无需开发人员考虑,以使程序开发过程更简单。这样做的好处不言而喻,坏处则是太容易了易导致缺乏良好的设计和周详的考虑,无须了解会引致不了解不理解。技术细节的资料不足又因为Lotus Notes是专有技术而缺乏公共的讨论可能和补充渠道。对复制或保存冲突、API的各种场合的详细行为和特性、视图索引、文档的读写等等对于开发人员设计良好的程序重要但又缺乏相信文档说明的领域,只有通过广泛搜集、思考、测试和经验来获得认识。把这些知识分享出来,便是笔者这一系列文章的另一个想法。
最后一个目的,自然是把笔者这么多年Lotus Notes开发中有价值的设计和代码陈列出来。