其中,Notes/Domino和Sametime的工具包比较多,C、C++、Java语言的都有,其他产品的则很少。从这个角度,也可以看出文档数据处理、协同工作是Lotus系列产品的核心价值所在。 其中,Notes/Domino的工具包有:
本文着重介绍Notes/Domino的部分工具包:
C++ API是建立在C API的基础上的又一个工具包,两者也比较相似:
主要限制:
和C API的主要限制也很相似:
支持的操作系统和编译器
平台 | 编辑器 | 备注 |
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
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,两者结合使用,可以达到更好的效果。
这是一个for Java的工具包,能实现对Notes数据库中数据对象的处理,并对数据元素具有一定的处理能力:
这个工具包命名为Toolkit for Java/CORBA,是因为在处理本地Notes数据库和远程数据库两种不同情况时,使用的技术有所不同。但在程序实现的接口上,两者基本相同,使得相同的代码实现可以适应不同的环境,为开发带来了便利。
最新版本
v2.1 for R5.0.8,发布于2001.10.02
如下图:
使用环境
既然是访问本地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(),来完成初始化和结束处理。
使用环境
只需要将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。建议在网络环境比较安全、对数据访问速度要求不是特别高的情况下使用。
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 |
和关系数据库相比,它有如下一些限制:
同时,提供如下特殊的功能:
和其他方式对Notes数据处理相比,又有如下不同:
支持平台
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的文档。
第二,为了得到比较好的数据存取效率,需要合理地创建视图。视图建立的方式不同会对会对应用的效率产生极大的影响。