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 ...
随机推荐
- MyEclipse性能调优初体验
MyEclipse性能调优初体验 简介一下工作环境,MyEclipse2014,你懂的 项目中有一个基于web的工作流引擎,仅仅要执行起来就CPU差点儿耗尽(尽管看似27%,事实上已经把俺4核的CPU ...
- CSS文字样式
font-family:通常文章的正文使用的是易读性较强的serif字体,用户长时间阅读下不easy疲劳.而标题和表格则採用较醒目的sans-serif字体.Web设计及浏览器设置中也推荐遵循此原则. ...
- HDU1171:Big Event in HDU(多重背包分析)
通过分析,要使A>=B并且差值最小.所以只要使sum/2的容量下,B最大就Ok了 #include<iostream> #include<cstdio> #include ...
- 关于两次指针(struct型)传参数的问题
这两天被struct传参给郁闷死了.今天终于解决了. 比如有一个struct如下: struct _ns1__Add_USCORESensorDataArray{ struct xsd__base64 ...
- Spring Annotation vs XML - 示例
来源: http://hanqunfeng.iteye.com/blog/2113820 作者hanqunfeng的示例文件: (可下载) web-mvc.zip
- css中z-index属性(标签层叠次序)
定义和用法 z-index 属性设置元素的堆叠顺序.拥有更高堆叠顺序的元素总是会处于堆叠顺序较低的元素的前面. 注释:元素可拥有负的 z-index 属性值. 注释:Z-index 仅能在定位元素上奏 ...
- 【转】vs2008中leptonica-1.68安装配置
tesseract ocr挺不好配置的,找到一篇不错的文章,分享如下:http://hi.baidu.com/ever8936/blog/item/6998e1196b1d0161dab4bd8f.h ...
- MVC-04 视图(3)
五.Url辅助方法 Url辅助方法与HTML辅助方法很类似,HTML辅助方法用来产生HTML标签,而Url辅助方法则负责用来产生Url网址. @Url.Action("About" ...
- C#计算时间差。
C#中怎么计算两时间相差多少.计算2个时间之间的差,可以计算到时分秒! <1>label1.Text = “2004-1-1 15:36:05″;label2.Text = “2004-3 ...
- 启用Apache Mod_rewrite模块
Ubuntu 环境 在终端中执行 sudo a2enmod rewrite 指令后,即启用了 Mod_rewrite 模块. 另外,也可以通过将 /etc/apache2/mods-available ...