在二十多年的悠久历史里,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开发中有价值的设计和代码陈列出来。

55. 略谈Lotus Notes的与众不同及系列文章至此的总结的更多相关文章

  1. Lotus Notes 学习笔记

    这是一个学习关于如何使用Lotus Notes的Agent功能来实现自动化办公的学习笔记. 一. 介绍 Lotus Notes/Domino 是一个世界领先的企业级通讯.协同工作及Internet/I ...

  2. 使用LotusScript操作Lotus Notes RTF域

    Lotus Notes RTF域的功能也非常强大,除了支持普通的文本以外,还支持图片.表格.嵌入对象.Http 链接.Notes 链接.附件等等众多的类型.本文将介绍如何使用这些类来灵活操作富文本域. ...

  3. Lotus Notes中编程发送邮件(二)

    在编程发送各种类似通知的邮件时,时常会需要发件人显示为某个特定的帐户,比如某个部门的名称或者管理员的名字.另一种需求是,用户收到某封邮件后,回复邮件的地址不同于发件人栏显示的地址.而正常情况下,发送邮 ...

  4. C# Windows Service调用IBM Lotus Notes发送邮件

    近日研究了下IBM Lotus Mail,这货果然是麻烦,由于公司策略,没有开放smtp,很多系统邮件都没有办法发送,于是入手google学习Lotus Mail,想做成Windows服务,提供wcf ...

  5. 46. Lotus Notes中编程发送邮件(一)

    邮件是Lotus Notes体系的核心和基本功能,以至于Send()是NotesDocument的一个方法,任何一个文档都可以被发送出去,Notes里的一封邮件也只是一个有一些特殊字段的文档.在程序开 ...

  6. 52. 模版和设计元素——Lotus Notes的代码重用

    不论是理论上还是实用上,代码重用都是编程的一个重要议题.可以从两个角度来讨论代码重用. 一是逻辑上代码以怎样的方式被重用.既可以通过面向对象的思想普及以来耳熟能详的继承的方式.比如先建了一个车的基类, ...

  7. 【Lotus Notes】邮件获取

    public class LotusManager { public static int bodyMaxLength, length; public static List<Entity.Lo ...

  8. C# 使用 Lotus notes 公共邮箱发送邮件

    公司的邮件系统用的是反人类的 Lotus notes, 你敢信? 最近要实现一个功能,邮件提醒功能,就是通过自动发送提醒邮件 前前后后这个问题搞了2天,由于公司的诸多条件限制,无法直接调用到公司发送邮 ...

  9. 我学到的新知识之——Lotus Notes闪退如何修复

    很多企业内部都在使用IBM 出品的Lotus Notes 来收发邮件,以及内置的SameTime作为内部交流工具,作为用了多年微软套装产品的我来说,还是有些不适应. 最近遇到一个案例,只要用户登陆sa ...

随机推荐

  1. 30天自制操作系统第八天学习笔记(u盘软盘双启动版本)

    暑假学习小日本的那本书:30天自制操作系统 qq交流群:122358078    ,更多学习中的问题.资料,群里分享 environment:开发环境:ubuntu 第八天的学习思考: 关于鼠标是怎么 ...

  2. [每日一题] OCP1z0-047 :2013-08-22 正则表达式---[^Ale|ax.r$]'

    正确答案:DE 一.Oracle正则表达式的相关知识点 '[^Ale|ax.r$]': ^:匹配行的开始字符 $:匹配行的结束字符 []:方括号表示指定一个匹配列表,该列表匹配列表中显示的任何表达式. ...

  3. ViewState是什么

    在做ASP.NET的时候遇到ViewState,当时不知道他是什么意思. 就在当前页面中保存数据的. 像session.是会话级别的.只要会话没有过期.session中存的数据就在. viewstat ...

  4. BZOJAC400题留念

    BZOJAC400题了...

  5. SQL中 and or优先级问题

    资源来源:http://www.linuxidc.com/Linux/2012-03/56267.htm 刚刚在项目中遇到这样一个问题,SQL语句如下: select * from LOAN_BACK ...

  6. c 语言 指针 与地址

    1.如何实现交换两个数的值 void swap( int *a,int *b) { int  tep=*a;//*a其实就是主函数a的值,a是主函数存a数值的地址. *a =*b; *b =tep; ...

  7. [转]android Handler使用

    转 http://blog.csdn.net/new_abc/article/details/8184634 不过这个我看不懂 不知道为什么i的值可以接着增长... package com.examp ...

  8. w3c标准的selection对象介绍

    简介 术语 属性 方法 document.activeElement document.designMode = 'on'; 简介 selection是对当前激活选中区(即高亮文本)进行操作. 在非I ...

  9. Oracle 集群心跳及其參数misscount/disktimeout/reboottime

    在Oracle RAC中,能够从多个层次,多个不同的机制来检測RAC的健康状况,即能够通过心跳机制以及一定的投票算法来隔离故障.假设检測到某节点失败,则存在故障的节点将会被逐出集群以避免故障节点破坏数 ...

  10. c#个性化安装包

    近来想做一个模仿QQ或猎豹浏览器那样的个性化安装包,NSIS或IS等简单看了一下,比较复杂还不确定能不能实现. 想了一下,可以自己开发一个安装包程序,新建一个windows项目,但不知如何将已开发完成 ...