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 ...
随机推荐
- ios蓝牙开发(一)蓝牙相关基础知识
蓝牙常见名称和缩写 MFI ======= make for ipad ,iphone, itouch 专们为苹果设备制作的设备 BLE ==== buletouch low energy,蓝牙4.0 ...
- zoj 2256 Mincost
#include<stdio.h> int main(void) { int kil; ; double sum; ) { sum=; flag=; while(kil) { ) { su ...
- iOS 设置状态栏的颜色
1.在plist文件中设置如下属性: 2.在delegate中设置 [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarSt ...
- 1.3. chromium源代码分析 - chromiumframe - 窗口系列
在_tWinMain中有这样两条语句: MainWindowDelegate delegate; view::Window::CreateNativeWindow(NULL, gfx::Rect(), ...
- BZOJ 1668: [Usaco2006 Oct]Cow Pie Treasures 馅饼里的财富( dp )
dp , dp[ i ][ j ] = max( dp[ k ][ j - 1 ] ) + G[ i ][ j ] ( i - 1 <= k <= i + 1 , dp[ k ][ j - ...
- cocos2d-x教程1 hello world
HelloworldScene.h #ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "cocos ...
- android sdk Manager path
- android--email发送邮件,文本还有附件形式的邮件
1.首先用的jar包为javaemail 下载地址: https://yunpan.cn/cB3kY8WIvcGtU (提取码:e042) 2.工具包 package com.kllayhello.u ...
- 转: Transact-sql游标使用详解~~很详细
/*原理:游标就是把数据按照指定要求提取出相应的数据集,然后逐条进行数据处理.1.1游标的概念 游标(Cursor)它使用户可逐行访问由SQL Server返回的结果集. 使用游标(cursor)的一 ...
- QT不让windows休眠的方法
对于一些Windows应用程序,必须要保证os不能休眠才能有效工作,如迅雷下载软件,如果os进入休眠,则会导致网络不正常,从而导致不能下载东西.那木有没有1种机制,当打开软件的时候,就自动将os设为不 ...