Lotus Domino/Notes Toolkits综述(一)
1 概述
1.1 为什么要了解Lotus Toolkits
在使用Domino/Notes开发企业应用的过程中,不断遇到了Domino要和其他业务系统相结合的问题。Domino是一个比较独特、比较封闭的系统,要作为整个企业的应用整合平台很困难。应当采用一种更通用、更开放的技术来构建这个平台。
Domino/Notes作为群件系统的典型,它在处理文档信息、协同工作方面有特点,也有优势,而且公司在这个平台上有很多积累。因此,如何在一个开放的平台上,将Domino/Notes应用有机地结合进来,是需要解决的一个重要问题。
为此,我们需要了解有哪些途径可以从外部得到Domino/Notes系统中的数据、对象,Lotus提供了什么样的接口和工具。这些工具就是Lotus Toolkits。
1.2 有哪些Toolkits
按Lotus产品系列来分,Lotus提供下列产品的工具包:
Notes/Domino
Sametime
QuickPlace
Discovery Server
Other
其中,Notes/Domino和Sametime的工具包比较多,C、C++、Java语言的都有,其他产品的则很少。从这个角度,也可以看出文档数据处理、协同工作是Lotus系列产品的核心价值所在。 其中,Notes/Domino的工具包有:
Lotus C API toolkit
Lotus C++ API toolkit
Lotus Domino Toolkit for Java/CORBA
Lotus and Notes Toolkit for COM
Lotus Domino Driver for JDBC (简称LDDJ)
NotesSQL
Lotus XML Toolkit(简称DXL)
Custom Tag Converion kit(简称DCT)
LotusScript Extensions toolkit(简称LSX)
1.3 本文有哪些内容
本文着重介绍Notes/Domino的部分工具包:
能用来完成什么样的工作,不能完成什么样的工作
工作机制
如何配置和使用
比较分析如何选择使用这些工具包。
2 Lotus C API
2.1 简介
在Domino/Notes的Toolkit中,C API的功能最为强大:
· 可以操纵notes数据库中几乎所有的数据对象
o 数据库及ACL
o 文档和域
o 表单
o 视图和文件夹
o 代理
· 可以为Notes客户端的增加附加菜单
· 可以用来创建附加的Domino服· 务任务
· 可以用来扩展Domino/Notes的事件管理
主要限制:
· 不· 能修改已有的Domino/Notes软件,· 不· 能去除其已有的功能、特性,· 或者改变其工作机理。
· 不· 能修改安全特性
· 不· 能修改用户活动记录
支持的操作系统:
WindowsNT/2000, Linux, Solaris SPARC/Intel, HP-UX, MacOS, AIX, AS/400, S/390等。
最新版本M
R5的最新版本for R5.0.12,发布于2003.03.13 R6的最新版本 for 6.0.1,发布于2003.2.24
2.2 开发和使用
使用条件
Lotus C API需要notes.ini,并会调用Domino/Notes已有的程序,因此,需要安装Domino Server或Notes Client。
用户身份
使用Lotus C API的独立应用将根据notes.ini中的信息来得到当前用户的信息,根据相应的ID文件来验证用户身份。在Domino服务器上程序将使用服务器ID。
Domino/Notes运行环境初始化
在调用C API之前,需要初始化Domino运行环境,并且在程序关闭之前清理环境。Lotus C API提供了多种方式来完成这项工作。
如果遵循C API的某些标准,Domino/Notes能自动进行初始化和清理的工作,也可以调用NotesInitExtended函数来完成初始化,调用NotesTerm函数来完成清理工作。
样例:
Structure of main Structure of NotesMain
main(){
NotesInitExtended();
…
…body of the program
…
NotesTerm();
exit;
} STATUS LNPUBLIC NotesMain(){
…
… body of the program
… }
显式进行运行环境的初始化和清理 自动完成
Notes客户端扩展
利用C API可以为Notes客户端添加附加的菜单,为此需要在notes.ini中添加相应的条目,例如:
AddInMenus =uiaddin1.dll
相应的dll需要遵循API的标准。Notes客户端在启动时,会根据配置文件和dll的入口函数进行一些初始化。利用这一特性,可以自动完成用户登录和身份验证处理。
扩展事件管理
在Domino/Notes中,对各类数据对象的操作会触发各种事件,例如,文档被打开、文档被关闭、数据库被创建、数据库被删除等等。在Notes Designer中,提供了一些入口,可以相应这些进行处理,例如:WebQueryOpen,WebQuerySave等等。
利用Lotus C API能大大扩展对这些事件的处理能力,可以在Domino/Notes系统处理这些事件之前和之后,进行额外的处理,例如活动日志、数据有效性检查、用户身份认证、加密界面等数据处理等。DSAPI就是一个很好的例子。为了实现这些例子,需要在代码实现上遵循API的规范,并在notes.ini中进行配置,例如:
EXTMGR_ADDINS=mymngr1.dll,mymngr2.dll
总之,Lotus C API的提供了多种手段来操纵Notes数据对象,并可以利用它来扩展Notes客户端的功能,扩展Notes事件的处理,功能非常强大。同时,由于C语言本身的特性,其效率很高,但编码实现的难度也最高。因此,适合于对数据处理效率要求很高,或者是只有C API才能完成的工作。
3 Lotus C++ API
3.1 简介
C++ API是建立在C API的基础上的又一个工具包,两者也比较相似:
· 可以操纵Domino/Notes中的绝大部分数据对象:
o 数据库:创建、拷贝、复o 制、删除、修改ACL
o 文档:创建、拷贝、删除
o 域:创建、修改、拷贝、删除,o 对RTF域具有强大的处理功能
o 视图和文件夹的使用
o 可以创建验证者,o 并能用验证者来注册用户和服o 务器
· 可以用来创建附加的Domino服· 务任务
主要限制:
和C API的主要限制也很相似:
· 不· 能修改已有的Domino/Notes软件
· 不· 能直接修改数据库复· 制历史、用户活动记录等
· 不· 能修改Notes客户端的桌面信息,· 例如在工作台上增删数据库图标· 、修改标· 题
支持的操作系统和编译器
平台 编辑器 备注
MS Windows NT/2000 MS Visual C++ 6.0
IBM VisualAge C++ 3.5 v2.3不支持Borlad C++的编辑器,v2.1支持。
Solaris Sparc Sun WS
Linux g++
AIX IBM PortaPak
AS/400
最新版本
v2.3,发布于2003.03.10
3.2 开发和使用
C++ API的开发和使用和C API也很相似,同样需要Notes/Domino软件的支持,同样使用Domino/Notes的安全机制。
对象结构
除此之外,API还提供了大量公共函数来处理这些对象,并有一些内置的数据类型,例如:LNString、LNText、LNNumber、LNDatetime、LNBOOL、LNCHAR、LNINT等。
程序结构 使用C++ API时,同样需要在使用之前进行Domino/Notes运行环境的初始化和清理,如下图所示:
开发环境
以使用MS Visual C++ 6.0为例。
要注意的是C++ API中包含的一些头文件和VC使用的是同名的,例如:
mq.h, neterr.h, and stats.h
需要使用C++ API所带的头文件。因此,或者在程序中指定头文件的绝对路径,例如:
#include "c:/notescpp/include/mq.h"
或者在VC的环境配置中,将Notes API的include目录列在VC的include目录前面。
总之,C++ API使用了面向对象的技术,在处理Notes数据对象时,程序的逻辑比较清晰,易于阅读和维护,能以比较高的效率来开发高性能的应用。同时,在C++ API中还可以调用C API,两者结合使用,可以达到更好的效果。
4 Toolkit for Java/CORBA
4.1 功能简介
这是一个for Java的工具包,能实现对Notes数据库中数据对象的处理,并对数据元素具有一定的处理能力:
· 数据处理
o 文档:新建、拷贝、修改、删除、发送(作为邮件)
o 视图:相当于记录集,o 可以用于获取文档或视图显示记录
o 域:新建、修改、删除,o 支持RTF域、附件的处理
o 数据库:新建、拷贝、复o 制、删除
· ACL控制
· 设计元素
o 可以获取、运行、删除代理
o 可以获取并删除视图、表单(包括字表单)
o 可以创建大纲,o 并向大纲添加多个条目
这个工具包命名为Toolkit for Java/CORBA,是因为在处理本地Notes数据库和远程数据库两种不同情况时,使用的技术有所不同。但在程序实现的接口上,两者基本相同,使得相同的代码实现可以适应不同的环境,为开发带来了便利。
最新版本
v2.1 for R5.0.8,发布于2001.10.02
4.2 支持的Domino对象及结构
如下图:
4.3 访问本地Notes应用
使用环境
既然是访问本地Notes应用,无疑是安装了Domino/Notes软件的。此时,需要将notes.jar添加到classpath中(在Domino/Notes运行环境中会自动添加)。
程序将使用notes.ini来获取当前用户。如果用户启动并且进入Notes客户端,当前用户ID设置为允许Notes外接程序共享标识符口令,则不用再次输入密码。
工作机理
当从Java程序中使用本地Domino类时,实际上是通过瘦Java层直接访问了Domino后端用C++实现的代码。Java使用JNI机制来访问在动态链接库中的Domino类,Domino的代码被装载入JVM 的进程中。
从性能角度来看,这是最好的选择:这提供了在Java和C代码间的最快的连接,所有的东西都在同一个内存空间中。
但是Domino要求对每个线程的初始化和结束做特殊处理(与C/C++ API类似)。
本地的Domino对象库提供了一个类,lotus.domino.NotesThread来自动的完成这种初始化处理和结束处理。如果使用NotesThread而不是java.lang.Thread来创建一个线程,Domino所需要的init/term调用都自动被执行。同时,NotesThread也是从Thread派生出来的,没有减少任何功能。如果使用NotesThread来创建线程,则需要调用NotesThread类的两个静态方法:sinitThread()和stermThread(),来完成初始化和结束处理。
4.4 访问远程Domino应用
使用环境
只需要将NCSO.jar添加到客户端的classpath中就可以了,不再需要安装Notes客户端或者Domino。
需要目标Domino服务器启动HTTP和DIIOP服务。
在这种情况下,Domino会根据用户所提供的用户名/密码来验证用户身份。
工作机理
Domino使用CORBA技术来实现Java程序对远程对象的访问。
在这种情况下,Java程序不再需要在JVM的进程空间中访问任何Domino的C/C++代码,因此不需要做线程初始化和结束处理。因此,可以实例化Session对象、Database对象,使用类似于连接池的技术来重用这些对象,提高访问效率。
在关闭session对象时,系统将自动关闭session中打开的各种Notes对象,例如数据库、视图、文档等,自动释放内存。在不关闭Session对象的情况下,则要注意随时关闭这些对象(使用recycle方法),否则这些对象所占用的内容不能被自动释放重用,严重时会导致系统崩溃。
总之,Lotus Toolkit for Java/CORBA使用户可以摆脱对Notes客户端的依赖,自由地访问远程Domino服务器。同时它对Notes数据以外的对象处理能力有限,系统安全性相对较弱,性能上要低于C/C++ API。建议在网络环境比较安全、对数据访问速度要求不是特别高的情况下使用。
5 Lotus Domino Driver for Java
5.1 功能简介
LDDJ是Type 2类型的JDBC Driver,符合JDBC1.0规范,在jdk1.1.8环境下开发的。它使得开发人员可以通过Java程序像访问关系数据库一样访问Domino/Notes数据库。
下表是Notes数据库中的对象和关系数据库中对象之间的对照关系。
SQL 对象 Domino/Notes对象
Table Form或者Universal Relation
Column Form Field或者View Column
Index View
View View
和关系数据库相比,它有如下一些限制:
· 字符串最长为15360
· 表名· 最长64个字符
· 列名· 、索引名· 、视图名· 最长32个字符
· 不· 支持回滚和两阶段提交
· 不· 支持 BIT,TINYINT,BIGINT
· 不· 支持 BINARY,VARBINARY,· 即不· 支持大对象的存取
· 不· 支持Primary Key,Foreign Key,Unique
· 不· 支持存储过程
同时,提供如下特殊的功能:
· 列值允许为多值(文本),· 可以存取,· 但不· 能通过JDBC创建这样的列
· 对于insert语句,· 域的缺省值、输入转换、输入校验依然有效
· delete table时,· 不· 删除数据
· 提供一些内置域,· 例如NotesID、NotesForm、LastModified等
· 读者域对阅读范围的控制依然有效
和其他方式对Notes数据处理相比,又有如下不同:
· 不· 可以插入不· 在表单定义中的 field
· 文档中存在多个同· 名· 的域,· 只处理第一个(按创建先后次序)
· 如果视图名· 和表单名· 相同,· 只能访问表对象,· 无法访问视图对象
· 对于RTF域,· 只能处理文字部分内容,· 不· 能处理附件
· 单个域内容最多为15360字节
支持平台
Windows 98,NT 4.0,2000,XP
最新版本
v1.5,发布于2002.10.11
5.2 开发和使用
使用环境
LDDJ v1.5支持R5以上版本,可以直接连接远程Domino服务器,需要本地安装Domino/Notes,并且当前用户对远程数据至少具有读者权限。同时还需要将LDDJ包中的JdbcDomino.jar文件加到classpath中,将包中的几个dll文件拷贝到Windows的系统目录下(例如system32)。
LDDJ和Notes 客户端使用相同的安全机制,使用Notes ID,如果用户启动并且进入Notes客户端,当前用户ID设置为允许Notes外接程序共享标识符口令,则不用再次输入密码。
工作机理
LDDJ是Type 2的JDBC驱动,因此,本地需要Notes应用支持。其原理图如下:
开发
使用LDDJ开发应用主要注意两点:
第一,数据库url的语法。需要在url中指定服务器、数据库路径,设置文本域、富文本域的最大长度等设置。详细用法请看LDDJ的文档。
第二,为了得到比较好的数据存取效率,需要合理地创建视图。视图建立的方式不同会对会对应用的效率产生极大的影响。
6 NotesSQL
NotesSQL是Notes数据库的ODBC驱动,符合ODBC 2.0规范。
在功能上,NotesSQL和LDDJ比较相似,用于以关系数据库的方式存取Notes数据库中的数据,并利用Domino/Notes软件来实现网络传输和安全方面的特性。
除了上一章(LDDJ)描述的特性之外,NotesSQL还提供了一个名为Authentication List Manager的工具,可用来指定只有哪些用户可以通过NotesSQL连接Notes数据库(本地或远程),进一步加强安全性。
另外,NotesSQL还支持数据库连接可以为多个用户复用,而且对每个用户都可以实现各自的存取权限对数据访问的控制。
NotesSQL支持从4.6.4到R6各个版本的Notes数据库,最新的版本是3.02b,发布于2003.02.06。
NotesSQL先后经历了多个版本,软件比较稳定。但只限于Windows平台,使用ODBC技术,效率不高。
7 Lotus XML Toolkit(DXL)
Domino对数据存储结构和显示方式的处理方法和XML有很多相似之处,因此,有人称Domino对XML提供天然的支持。在Domino/Notes R6中,软件提供了有关以XML方式处理Domino数据的类。
除此之外,Lotus还提供单独的工具包,即Lotus XML Toolkit,来以XML的方式存取Domino数据,包括文档、RTF域和一些设计元素:
· 数据库属性和ACL
· 文档
· RTF域
按钮、计算文本、附件、内嵌图片、连接、段落和边距设置、区段、表格、文本及其显示格式等
· 设计元素
表单、子表单、视图、文件夹、共享域、共享操作、图像资源、帮助文档
支持的平台和开发工具
DXL只支持Windows平台。
DXL提供了Java和C++的API。For C++的应用开发需要MS Visual C++ 6.0,for Java的需要jdk 1.1.8以上版本支持。
最新版本
v1.0,发布于2001.03.27
使用场景
DXL应用的开发和应用需要安装Domino/Notes 5.0+,利用ID文件来标识用户,使用Domino/Notes的安全特性,使用当前用户的存取控制权限来判断对数据和设计元素的存取权限。
利用DXL,可以把上述数据和对象以XML格式输入,保存为xml文件,或者作为字节流直接进行处理,例如使用XSL技术来格式化数据的表现方式,使用XSLT来重新组织数据,以便和其他系统或数据进行交互等。
利用DXL,也可以将格式化好的数据导入到Domino/Notes数据库中,DXL能自动根据导入的数据和数据库中已有的数据,进行新增、修改、删除工作。
在导入设计元素要特别注意,所有被导入的设计元素,在数据库中都是没有被签名的。在某些情况下会带来问题,需要用其他工具来完成对设计元素的签名操作。
DXL所处理的xml数据格式,其描述请参考Domino DTD,在DXL的文档中有详细的描述。可以使用URL命令http://servername/dbpath/viewname?ReadViewEntries查看输出的XML数据样例。
8 其他
8.1 Custom Tag Converion kit (DCT)
Domino R6提供了一套自有的JSP标记,开发人员可以使用这些标记来开发JSP页面,灵活定义Notes数据的显示格式。相应地,DCT可以将Notes数据库中已有的视图和表单,转换成用JSP文件。转换后效果将模拟在Notes客户端中视图和表单的显示格式。
这个工具只支持Windows平台,需要Domno R6支持。
目前DCT仍属于IBM Alpha项目,尚未正式发布。
8.2 Lotus Toolkit for COM
用来开发使用COM技术存取Domino对象的应用。详细信息请看工具包自带的文档。
最新版本是 v1.0,for Domino/Notes 5.0.7,发布于2002.12.12。
8.3 LotusScript Extensions toolkit(LSX)
LSX是在Lotus C++ API基础上开发出来的,用来扩展LotusScript的功能:
· 使得Notes应用可以和Lotus家族其他产品,· 例如Lotus 1-2-3,· 进行交互
· 使Notes应用可以与其他已有应用系统进行交互
· 使Notes应用可以和操作系统进行某些交互
LSX被编译成为动态链接库(在非windows平台上为其他类型的共享程序库),LotusScript可以在Notes中调用。
详细信息请参见LSX的文档。
最新版本为v3.1,发布于2001.03.27。
9 分析与比较
9.1 Domino/Notes的特点
笔者认为,Lotus系列应用有这样几个特色:
· 非结构化数据处理
这是Domino/Notes最核心的特性之一,· 也是其固有的技术特点。在Notes数据库中,· 可以任意为记录添加字段,· 可以添加列表型的字段,· 可以处理RTF域、附件这样的大对象。数据处理非常灵活。在灵活的同· 时,· 对数据处理效率也有较大的影响。
· 存取控制权限和管理
这也是Domino/Notes固有的技术特点。
每个Notes数据库在保存应用数据的同· 时,同· 时也保存了权限控制信息。首先是ACL中对于用户权限级别和角色的处理,· 其次是设计元素对权限的限制,· 第三是读者域、作者域对权限的控制。
Notes数据库在权限信息保存和处理方面的模式很值得借鉴。
同· 时,· Domino还可以做到在修改用户名· 称时,· 自动完成数据库中该用户有关信息地自动更改。在分布存储权限信息的同· 时,· 实现了统一管理权限的概念。
· 协同·
Lotus在协同· 方面的特色,· 源于两点:
第一,· Domino将用户管理、邮件服· 务器很好地结合了起来,· 提供了方便易用的编程接口,· 以及相关的权限、安全方面的特性,· 对企业级应用的部署有很好的支持。;
第二,· 在协同· 这个应用领域,· Lotus系列产品除了Domino服· 务器外,· 还有Sametime、QuickPlace、EveryPlace、Workflow、Domino.Doc、iNotes等一系列应用,· 可以满足用户对于协同· 工作各个方面的需求。
9.2 Domino/Notes应用开发的趋势
9.2.1 需求角度
对于客户来说,企业的生产、管理应当是个整体,是统一管理的。企业应用软件也应当是一个统一的整体。
Domino/Notes原来是一个相当封闭的系统。它在非结构数据处理,在工作流、协同方面很有特点。同时在其他方面,例如业务数据处理,又有很大的局限性。因此,从企业应用整体范畴来看,Domino/Notes应用应当作为建立在企业应用平台之上的一类应用,作为特定领域的解决方案。
从IBM产品线的规划来看,可以看到,将使用WebSphere和DB2作为基础平台,把Lotus系列软件作为协同方面的应用集成到平台中,作为该领域的解决方案来进行销售。
9.2.2 技术角度
结构化和非结构
在整理屋子的时候,笔者总是会把大部分东西整整齐齐地分类摆放好,并且留出一片空间,以便随手放些杂物。
这个世界的大部分数据也是整整齐齐的,是格式化的。同时,在每个人的工作中,也需要能够随机地保存、交互一些并非预先规划好的数据。Notes应用而生,是因为世界需要Notes,需要处理非结构化的数据。
结构化和非结构的数据处理,它们着重解决的问题是不同的。
结构化数据首先要为机器服务,要为软件服务,使计算机能对数据进行快速有效的处理,然后再考虑如何提供友好的人机界面,考虑如何让人操纵这些数据。
非结构化数据则首先考虑人对数据处理的要求,尽量减少约束条件,提供用户自由的操作空间。
由于这个差别的存在,笔者认为一个数据系统不适于同时处理这两种情况。XML数据库系统也需要对侧重点进行取舍。
而Notes数据库,作为非结构化数据的典型,还将继续存在和发展下去。而相关的应用,也需要充分发掘非结构化数据处理方面的能力,满足客户在非结构化数据处理方面的需求,才有生命力。
其他技术特性
而Domino/Notes其他的技术特性,例如权限管理,用户管理,邮件系统,技术上是可以剥离的,会被逐步剥离出去,以便为Notes应用提供更好的开放性,更好的接口,有助于企业有效地实现应用的整合。
邮件系统,作为一种服务,应当是可配置,可选择的。从软件架构来看,邮件系统的剥离不会对Domino/Notes结构带来根本性的改变。它会很快被剥离。用户管理是企业在整合业务软件的时候首先会遇到的问题,企业自身的整体性要求对用户进行统一的管理。越来越多的系统会采用LDAP的方式来对用户进行统一管理。Domino目前已经提供了LDAP服务,也可以使用其他的Domino服务器作为LDAP服务。以后将进一步完善Domino对第三方LDAP服务的支持。
在权限管理方面,Notes在权限分级方面处理的模式将被借鉴、发展。分散保存权限控制信息和统一管理权限的概念也将继续发展,目前业界提出的PMI框架就使用了相似的概念。但在Notes数据库中,权限控制和数据存储是紧密结合在一起的,并且这种方式是符合PMI框架的。因此,在这方面,Notes数据库会根据业界在PMI框架规范方面的发展,给出权限查询和控制方面的接口。而应用数据的存储和权限控制信息是否会分离,将取决于相关技术的发展。
Domino/Notes还具备数据加密、签名、身份认证等方面的技术特性,这些特性目前在Web应用开发方面使用很少,今后将逐步被淡化,可以使用替代技术和第三方产品。
复制的功能,作为数据库系统的一个重要特性,在大型数据库软件如Oracle、DB2中都提供,在Domino/Notes系统中也将继续保持。
9.3 Domino/Notes Toolkits比较
根据上面的分析,我们在比较Domino/Notes工具包的时候,要考虑它们对非结构化数据的处理能力,考虑它们对Domino/Notes平台的依赖,考虑Domino/Notes安全特性的应用和限制情况。
同时,还将考虑工具在性能和效率、应用扩展能力、对不同操作系统的支持、支持跨平台、安全性、对Domino/Notes版本的支持、编码效率、代码易维护性等方面进行比较。
9.3.1 对非结构化数据处理能力的支持
对Notes数据对象结构的支持 对Notes设计的操纵能力 对RTF域的操纵能力 任意添加字段
C API ★★★ ★★★★★ ★★★★★ P
C++ API ★★★★★ ★★★★★ ★★★★★ P
Java/CORBA ★★★ ★★ ★★★ P
LDDJ 不支持 ★ ★ 不支持
NotesSQL 不支持 ★ ★ 不支持
DXL ★★★ ★★★ ★★ P
9.3.2 对Domino/Notes平台的支持和依赖
需要安装Notes/Domino 支持的版本 对服务器的要求
C API P 所有版本
C++ API P 所有版本
Java/CORBA CORBA方式不支持 R5.03+ HTTP和DIIOP服务
LDDJ P R5.0+
NotesSQL P 4.6.4以上版本
DXL P R5.0+
9.3.3 安全性和存取控制
用户身份 安全性 控制ACL
C API Notes id Notes安全机制 P
C++ API Notes id Notes安全机制 P
Java Notes id Notes安全机制 P
CORBA 用户/程序提供 简单密码验证 P
LDDJ Notes id Notes安全机制 不支持
NotesSQL Notes id Notes安全机制,有附加的安全控制 不支持
DXL Notes id Notes安全机制 P
9.3.4 对操作系统的支持
Windows Linux Solaris MAC HP-UX AIX AS/400 S390
C API P P P P P P P P
C++ API P P P P P
Java/CORBA P P P P P P P P
LDDJ P
NotesSQL P
DXL P
9.3.5 开发能力和数据处理效率
数据存取效率 设计控制能力 权限控制能力 修改Notes客户端 Domino附加任务 扩展事件管理
C API ★★★★ ★★★★ ★★★★ P P P
C++ API ★★★★ ★★★★ ★★★ P
Java/CORBA ★★ ★★ ★★
LDDJ ★★ ★
NotesSQL ★★ ★
DXL ★★★★ ★★★ ★★
9.3.6 开发效率
开发速度 代码可读性 可维护性
C API ★ ★ ★
C++ API ★★★ ★★★ ★★★
Java/CORBA ★★★★ ★★★★★ ★★★★
LDDJ ★★★★★ ★★★★★ ★★★★★
NotesSQL ★★★★★ ★★★★ ★★★★
DXL ★★ ★★★ ★★★
9.3.7 其他
从各个工具包的成熟度来看,C/C++ API开发使用的时间最长,也最为稳定。NotesSQL也已经历多个版本的更迭,比较成熟。Java/CORBA工具包和LDDJ开发时间不长,在使用过程中感觉还不是很好用、不是很成熟。其他还有一些工具包,例如for COM、LSX等,是为了某种特定的需求的开发的,1.0版发布之后几乎没有更新。
从工具包最新发布时间来看,也是C/C++、NotesSQL、LDDJ、Java/CORBA等工具包相对活跃。Java相关的工具包更新速度比想象的要慢,可能与Domino/Notes目前正在从传统平台向J2EE平台转移,尚未稳定有关。
9.4 小结
C/C++
总的来看,C/C++的功能是最强大的,能充分利用Domino/Notes已有的功能,修改数据库设计,并能扩展Domino/Notes的能力,对数据的处理能力也是最高的。
但它的运行环境必须安装Notes/Domino软件,代码的编写难度比较大,在不同的平台下需要重新编译。
Java/CORBA
Java/CORBA工具包使用户不必安装Notes客户端就能访问Domino数据库中的绝大部分数据,对应用的分发和部署带来了很大的灵活性,为Domino/Notes应用和J2EE平台上其他应用的结合提供了很大便利。而且使用它开发的应用,只要稍加改动,就可以在Notes代理中使用,这也能使现有的代码能够适应Domino/Notes的后续变化。
它继承了Java应用跨平台的特性,开发效率,代码的可维护性都比较高。但数据处理的速度不高,对Notes数据对象的操纵能力与C/C++工具相比有较大差距。
该工具包的版本更迭次数不多,更新速度不快,在使用过程中感觉在Java代码和Notes C++代码的结合、内存管理等方面还需要进一步成熟。
近两年来,IBM在让Domino/Notes支持J2EE平台方面的动作非常大,是否在这方面的工作稳定下来之后,会推出功能更强、使用更方便的Java工具包呢?值得期待。
LDDJ和NotesSQL
这两个工具使开发人员可以像访问关系数据一样访问Notes数据。这使得代码的编写和维护非常简单,但同时也不再拥有Notes固有的非结构化数据处理能力。
虽然它们都需要Domino/Notes软件支持,数据访问的速度也不高,并且有一些特殊的限制,但在对数据量和处理速度要求不高的情况下,仍不失为便利的开发工具。
LDDJ在对数据库连接池等技术的支持方面还需要进一步加强,以便在数据处理效率上能有较大的提升。
其他
Domino R6支持使用JSP文件来做Notes数据的Web端呈现,DCT使得这类JSP文件的开发更为快捷。
DXL专门用于以XML的方式来处理Notes数据和设计元素,使得Notes应用和其他使用XML技术的应用可以进行有效地交互。
Toolkit for COM则是专门用户开发COM应用。
还有其他一些工具包,都是为了满足某种特定的需求所开发的,要根据实际的需要选择使用。
结论
从目前Domino技术在企业级应用中的运用情况来看,主要考虑Domino/Notes和J2EE平台的结合,因此,会较多使用Java/CORBA工具包。同时,在Domino服务器一段用C/C++ API来解决技术难题,也可以带来技术方面的竞争优势。
----转贴自http://blog.csdn.net/oldcrane/