標籤:lotus-notes
本文想根據國外的狀況簡略談談Domino開發領域的變化和動態。時間上從XPages的引入開始。
XPages
V8.5.0引入了全新的XPages開發。在隨後的小版本中,在效能上做了許多改進。從V9.0開始,將原來社區開發的Extension Library納入產品。Extension Library中的控制項補充了標準控制項的一些功能上的空白,但是在設計端的易用性和文檔的完善上,遠不如標準控制項,所以說使用時與其說是學著用,不如說是試著用。
XPages是IBM為了應對現代web開發遲來的發明。它的引入給Notes用戶端帶來衝擊(雖然如果繼續堅持陳舊的用戶端技術不更新,Notes也會消亡),也再次給IBM帶來戰略上的兩難選擇:XPages只需要瀏覽器,偏向它發展客戶將不再購買用戶端,雖然伺服器端可以按使用者授權收費,但會導致Notes/Domino平台的單位授權價格下降。如果堅持在用戶端的投資,與XPages形成不必要的競爭和浪費,而且基礎技術架構不改變的話,很難有起色。其中IBM的策略是模糊的——允許在Notes用戶端裡運行XPages,即所謂的XiNC技術,但是這樣在應用程式啟動前要將整個程式從伺服器下載到本地,幾乎沒有什麼公司會考慮採納。接下來IBM的策略還是遊移不定的:繼續發展和完善XPages技術,提高Domino在web平台上的競爭力。使得用戶端能夠直接運行伺服器端的XPages程式,讓用戶端和瀏覽器在XPages面前處於公平的地位。開發Notes的瀏覽器外掛程式,使得使用者能在瀏覽器中訪問傳統的Notes應用程式,延續Notes用戶端和傳統應用程式的生命。
IBM在完善XPages在案頭瀏覽器上的展現,增強在其他大小螢幕上特別是手機上的展現。例如Bootstrap的responsive design是業界對多尺寸螢幕的通用解決方案。IBM早期推出的OneUI主題因為不符合此設計已沒什麼前途。開發人員社區有將Bootstrap加入到XPages的擴充。
OSGi
自從V8引入Eclipse富用戶端平台和V8.5加入基於JSF的XPages,IBM就為Domino設定了全面擁抱Java的技術路線圖。Eclipse富用戶端是一個OSGi容器,傳統的Notes資料庫搖身一變為OSGi bundle也就是Eclipse的外掛程式來運行。Domino伺服器隨後也加入OSGi容器,當http進程啟動時,通過JNI啟動OSGi容器,Servlet容器和XPages運行環境都是作為OSGi bundle載入運行。有了OSGi容器,Domino藉由Java擴充功能就變得和世界同步。
在XPages運用Java的好處,我已有專文介紹。麻煩之一是所寫Java用到的自己開發的或第三方類庫,存放在資料庫中是無法在多個應用之間共用。過去唯一的方法是將jar檔案放在Java虛擬機器的類庫檔案夾裡,現在有一種新的選擇,就是編寫成OSGi外掛程式,Notes用戶端和Domino伺服器都可以通過將外掛程式放在指定檔案夾或匯入特定資料庫的方式,安裝OSGi外掛程式。Extension Library和下面提到的Wink的類庫就是作為OSGi bundle安裝到伺服器上的。
利用OSGi外掛程式,還可以用Java語言來開發運行在伺服器上的任務,代替以往用C來編寫的困難途徑。
RESTful web service和虛擬化
RESTful的web service流行業界已很多年,Domino增加的Domino Access Service就是以這種方式來讀寫文檔和視圖資料,它背後基於的是IBM和HP投資的Apache Wink——一種用Java編寫RESTful的web service的方案。開發人員也可以編寫自訂的RESTful web service,Extension Library就利用了此基礎。
RESTful web service使得一個Notes應用程式可以單純作為一個資料庫來使用,商務邏輯和視圖都儲存在另一個Notes應用程式裡,甚至完全使用另一種開發技術。另一方面,XPages運行環境和某個Notes資料庫裡包含的XPages應用程式代碼完全可以部署在其他Java伺服器上。這樣就可能讓運行在某台Java伺服器上XPages應用程式通過RESTful web service訪問部署在另一台Domino伺服器上的資料庫,這樣的圖景就像Java或其他語言的應用程式與關係型資料庫的關係。IBM將XPages虛擬化到自家的Bluemix雲平台也正是採用這樣的架構。
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
99. Domino開發領域的動態