在一月份的時候,當Eclipse 基金會為SOA項目(STP)召開的第一次委員會結束之後,SearchWebServices.com對Iona Technologies公司首席技術官 Eric Newcomer進行了簡短的採訪。9月的第一周,在麻省劍橋將舉行Eclipse世界大會,SOA項目(STP)委員會準備在大會上做一個關於SOA項目的進展報告,因此,就這個報告內容,我們採訪了Newcomer。整個採訪分成兩個部分,在第一部分,Newcomer談論了SOA項目工作是如何進展的。在第二部分,他介紹了底層技術,包括服務元件架構(SCA)標準、JAX-WS運行時、其他運行時以及Ajax在項目中的作用。
在Eclipse SOA 項目中,服務元件架構(SCA)的用途是什麼呢?
Eric Newcomer說:在SOA項目中,服務元件架構(SCA)是我們稱為核心子項目(Core Subproject)中的一部分。的確,這個項目的核心部分是,你如何在服務之外建立組件。服務元件架構(SCA)的用途是,獲得對服務的描述(如Web服務描述語言WSDL),以及在服務之外建立一個組件,該組件包括必要的資訊——把服務對應到運行時所必需的資訊。因此,在SOA項目中,服務元件架構(SCA)部分的用途確實是,在服務中添加資訊——佈建服務或者映射服務到運行時所必需的資訊。
服務元件架構(SCA)是的工作機制是什麼呢?
Newcomer說:在SOA項目中,服務元件架構(SCA)是分為三個步驟進行。第一步是,找到要建立的服務。第二步是,在服務中添加中繼資料——稱為服務元件架構(SCA)組件中繼資料。組件中繼資料用於運行時解釋。第三步是,你如何把組件中繼資料映射到運行時中。服務元件架構(SCA)主要用在描述和配置之間,是一個中間步驟。它包括運行時必須的中繼資料,用於指出如何把服務配置成組件。將來會有很多種運行時支援。目前,作為一種概念驗證,我們首先要驗證的是JAX-WS運行時——支援Java Web服務的、最新的Java API。
你如何使用服務元件架構(SCA)來實現服務到組件的映射呢?
Newcomer說:目前,服務元件架構(SCA)是如何發展的,其中一部分就是瞭解,如何建立多種從SCA中繼資料到各種不同運行時的映射。因此,如果把服務元件架構(SCA)項目應用到SOA項目中的話,其目的就非常明確了:如果要傳輸一個非特殊的、或者標準的Web服務定義到組件類型中,而且,該類型是可以被配置到運行時以及多種不同的運行時,那麼我該怎麼操作?如果是那樣的話,服務元件架構(SCA)項目就幾乎能夠滿足SOA項目所需要的功能——如何得到服務元件架構(SCA)組件中繼資料,這些組件中繼資料是適合於多種不同運行時的,而且人們希望使用它來進行SOA配置。
服務元件架構(SCA)中,哪些還不是標準組件,對於上述的這種應用還不夠成熟呢?
Newcomer說:在服務元件架構(SCA)中,程式集規範是關鍵規範。當然,我不排除將來仍然有發生某些變化的可能性,但是,組件中繼資料的主要特性是組件類型定義,而且,我們認為組件中繼資料是相當地穩定——足夠的穩定,完全可以SOA項目中使用。
對於運行時而言,你為什麼選擇JAX-WS運行時呢?
Newcomer說:原因之一是:我們有Iona公司提供的JAX-WS代碼,而且,我們能夠驗證它。JAX-WS運行時與Sybase公司以及IBM公司的初始化代碼匹配的非常好。為了驗證JAX-WS的實用性,首先對子項目的整合進行測試,我們能夠為這些子項目提供JAX-WS代碼。測試結果,JAX-WS完全具備實用性,它能夠與我們在項目中可以使用的代碼完全符合,但是,我認為:在Java 社團中,JAX-WS作為SOA運行時,正在被廣泛採用。其實,這個測試中包含著兩個目標。使用實際的衡量標準來檢測概念、以及檢測不同子項目的整合。同時,使用廣泛採用的SOA運行時JAX-WS來提供概念驗證。
使用JAX-WS驗證概念之後,你打算支援哪些其他的運行時呢?
Newcomer:我們希望看到用於Spring、EJB 3以及多種不同的ESB運行時的映射。這將取決於開發商們的貢獻。目前,我們主要是研究一些代碼,來自於該項目的三個原始提供者——IONA公司、IBM以及Sybase公司。隨著項目的推進,我們希望,其他公司也能夠為這個項目做出貢獻,使支援的運行時越來越多。
為了把Ajax功能整合到這個項目中,你做了哪些工作呢?
Newcomer說:Ajax主要是用在用戶端。在這個SOA項目中,我們主要做的是服務的配置,而通過用戶端訪問服務這一部分稍微少一些。當然,這一部分是非常重要的,我們稍後將關注它。但是,SOA項目的焦點是:如果我們打算使用SOA項目的話,我將如何操作——我已經完成了滿足業務需求的服務設計——我將如何建立這些服務呢?在需要多種服務結合起來使用時,我將如何把它們集合起來呢?我將如何把服務配置到各種不同的運行時呢?我們真正關注的是:如果你已經完成了你的SOA設計,那麼,你將如何建立了你的服務,你將如何把你的服務與其他服務集合成為組件,你將如何把你的服務配置成運行時。當然,對於訪問服務而言,Ajax是非常重要的,但是,我認為SOA項目關注的遠遠不止是建立、集合和配置本身。當然,關於如何訪問服務這一部分,我們將關注(Eclipse)Ajax項目,以及一些門戶項目。