Lotus Domino/Notes Toolkits綜述

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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章