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來解決技術難題,也可以帶來技術方面的競爭優勢。