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开发中有价值的设计和代码陈列出来。
55. 略谈Lotus Notes的与众不同及系列文章至此的总结的更多相关文章
- Lotus Notes 学习笔记
这是一个学习关于如何使用Lotus Notes的Agent功能来实现自动化办公的学习笔记. 一. 介绍 Lotus Notes/Domino 是一个世界领先的企业级通讯.协同工作及Internet/I ...
- 使用LotusScript操作Lotus Notes RTF域
Lotus Notes RTF域的功能也非常强大,除了支持普通的文本以外,还支持图片.表格.嵌入对象.Http 链接.Notes 链接.附件等等众多的类型.本文将介绍如何使用这些类来灵活操作富文本域. ...
- Lotus Notes中编程发送邮件(二)
在编程发送各种类似通知的邮件时,时常会需要发件人显示为某个特定的帐户,比如某个部门的名称或者管理员的名字.另一种需求是,用户收到某封邮件后,回复邮件的地址不同于发件人栏显示的地址.而正常情况下,发送邮 ...
- C# Windows Service调用IBM Lotus Notes发送邮件
近日研究了下IBM Lotus Mail,这货果然是麻烦,由于公司策略,没有开放smtp,很多系统邮件都没有办法发送,于是入手google学习Lotus Mail,想做成Windows服务,提供wcf ...
- 46. Lotus Notes中编程发送邮件(一)
邮件是Lotus Notes体系的核心和基本功能,以至于Send()是NotesDocument的一个方法,任何一个文档都可以被发送出去,Notes里的一封邮件也只是一个有一些特殊字段的文档.在程序开 ...
- 52. 模版和设计元素——Lotus Notes的代码重用
不论是理论上还是实用上,代码重用都是编程的一个重要议题.可以从两个角度来讨论代码重用. 一是逻辑上代码以怎样的方式被重用.既可以通过面向对象的思想普及以来耳熟能详的继承的方式.比如先建了一个车的基类, ...
- 【Lotus Notes】邮件获取
public class LotusManager { public static int bodyMaxLength, length; public static List<Entity.Lo ...
- C# 使用 Lotus notes 公共邮箱发送邮件
公司的邮件系统用的是反人类的 Lotus notes, 你敢信? 最近要实现一个功能,邮件提醒功能,就是通过自动发送提醒邮件 前前后后这个问题搞了2天,由于公司的诸多条件限制,无法直接调用到公司发送邮 ...
- 我学到的新知识之——Lotus Notes闪退如何修复
很多企业内部都在使用IBM 出品的Lotus Notes 来收发邮件,以及内置的SameTime作为内部交流工具,作为用了多年微软套装产品的我来说,还是有些不适应. 最近遇到一个案例,只要用户登陆sa ...
随机推荐
- https://github.com/coolnameismy/BabyBluetooth github上的一个ios 蓝牙4.0的库并带文档和教程
The easiest way to use Bluetooth (BLE )in ios,even bady can use. 简单易用的蓝牙库,基于CoreBluetooth的封装,并兼容ios和 ...
- Migration data on SQL
从表里面导出数据XML: -- export declare @xml xml set @xml = (select * from ( select TableName = 'Schema', xml ...
- SQL Server2012新特性概述
公司最近要升级数据库,SQL Server 2008R2-->2012.再开始升级之前先找了点资料分析一下2012的新特性和功能,提前预热一下. 2012中主要关注一下三个领域: 性能:改进的核 ...
- MYSQL存储过程事务列子
CREATE DEFINER=`root`@`localhost` PROCEDURE `createBusiness`(parameter1 int) BEGIN #Routine body goe ...
- UVA 10325 lottery 容斥原理
题目链接 给出m个数, 求1-n的范围内, 无法整除这m个数之中任何一个数的数的个数. 设m个数为a[i], 对任意的i, n/a[i]是n中可以整除a[i]的数的个数, 但是这样对于有些数重复计算了 ...
- linux(ubuntu) 遇到的问题 --1
1.使用sudo提示用户不在sudoers文件中的解决方法 切换到root用户 su root 查看/etc/sudoers文件权限,如果只读权限,修改为可写权限 [root@localhost ~] ...
- 10-C语言函数
目录: 一.函数 二.return与exit关键字 三.递归与递推 回到顶部 一.函数 1 函数由函数名.返回值.形参.函数体组成. 函数的使用分三个步骤:声明.定义.调用 2 语法格式: 返回值类型 ...
- arm中的ldr指令
label .equ 0x53000000 ldr r0, label : 将0x53000000地址处的值放入r0中 ldr r0, =label : 将0x53000000付值给r0.
- Android平台APK分析工具包androguard的部署使用和原理分析
原创文章,转载请注明出处,谢谢. Android应用程序分析主要有静态分析和动态分析两种,常见的静态分析工具是Apktool.dex2jar以及jdgui.今天突然主要到Google code上有个叫 ...
- 进一步探索:Windows Azure 网站中解锁的配置选项
编辑人员注释: 本文章由 Windows Azure 网站团队的项目经理 Erez Benari 撰写. 在 Windows Azure 网站 (WAWS) 中管理网站时,许多选项可使用 Azu ...