汪晶晶,季凱帆,王 鋒,2,鄧 輝
(1.昆明理工大學云南省計算機技術應用重點實驗室,云南 昆明 650051;2.中國科學院國家天文臺/云南天文臺,云南 昆明 650011)
近十年來,世界科技界將其在未來研究領域中的重大突破寄希望于以“下一代互聯網”為基礎的全球信息化科研環境的建立和科研項目的協同合作上。伴隨這種趨勢,天文學界興起了虛擬天文臺這一新概念[1]。2001年9月,英國科學家為構建一個完整的虛擬天文臺基礎架構提出了耗資一千萬英鎊的項目AstroGrid。該架構充分利用已定義的公共接口,結合分析和可視化工具推進不同天文數據中心間的相互作用,同時也有助于不同天文數據中心向數據網格基礎架構發布服務和數據[2]。可以說AstroGrid是進入虛擬天文臺的門戶平臺[3]。
作為AstroGrid的核心CEA是為適應將應用程序封裝為Web服務的需求而興起的新概念。CEA的主要設計目標是:工作于Web服務框架;具有參數傳遞機制和Web接口;應用網絡服務描述語言(Web Services Description Language,WSDL)片段描述應用程序以及運用注冊表區別應用程序[4]。
一方面,天文觀測數據近幾年來雪崩式的產生推動自動化工具在天文研究中的運用。跨平臺、開放、松耦合的Web服務很好地符合了天文數據發布的需求。將各種天文工具及資源發布成Web服務,更有利于實現數據密集型的網絡化天文研究環境。依據與AstroGrid整合的應用程序類型的不同,AstroGrid CEA支持對3種類型應用程序的封裝,即:命令行應用程序,基于超文本傳送協議(Hypertext Transport Protocol,HTTP)的Web應用程序以及Java編寫的應用程序[5],從而以服務的方式向用戶提供科學級的應用。另一方面,國內外目前主流的天文數據發布方式有Web頁面、客戶端和Web服務,而在Web服務中大多數是表述性狀態轉移(Representational State Transfer,REST)風格的Web服務[6]。但是REST風格的Web服務相比簡單對象訪問協議(Simple Object Access Protocol,SOAP)風格的Web服務缺少了傳輸協議和服務的定義,因此不利于在自動化工具中實現機器自動識別并調用。AstroGrid CEA提供雙接口遠程調用已定義應用程序,即SOAP接口(又稱公共執行接口Common Execution Connector,CEA)和Universal Worker Service(UWS)REST接口。而UWS REST接口比SOAP更容易驅動和使用。因此,AstroGrid CEA同時支持兩種風格Web服務的搭建,可使Web服務既符合國際虛擬天文臺聯盟IVOA的規范又可獲得在SOAP客戶端調用的便利。
因此,對AstroGrid CEA進行深入的分析和理解,對推動未來天文應用軟件開發中標準的遵循或兼容以及對天文數據和應用的集成與無縫連接將具有明顯的價值。
圖1顯示了AstroGrid的整體結構。從層次結構來看,AstroGrid實現的功能不僅包括提供桌面應用軟件的部分,還包括為了方便開發而封裝的底層結構,以及用于實現各種交互效果的頁面組件。

圖1 AstroGrid組件Fig.1 The components of the AstroGrid
Portal是AstroGrid的門戶,基于Web用戶界面與底層AstroGrid基礎架構提供的服務相互作用,實現透明服務及應用。
Community定義了各種用戶的識別標準。它的管理功能包括創建賬戶和組,添加賬戶到組,刪除賬戶等。
Registry存儲大量的元數據資源。例如數據集、Web服務、服務和其他數據庫的注冊信息。
VOSpace定義了遠程存儲標準,并為科學家提供數據存儲區。存儲信息包括文件、數據庫表和賬戶等。用戶無需指定物理地址即可進行訪問操作。
Workflow通過AstroGrid Python腳本提供簡單的自動化任務流程,而AstroGrid服務器端組件工作執行服務(Job Execution Services,JES)作為工作流引擎,處理復雜的工作流。用戶可通過Workflow提供的工作執行系統(Job Execution System,JES)接口提交、安排和監測任務,例如異步查詢目錄、運行應用程序或搜索注冊表等。
DSA組件屬于虛擬天文臺協議與各種數據格式、數據庫之間的轉換插件。
作為AstroGrid核心技術架構的CEA力圖構建一套合理的接口和架構,對虛擬天文臺天文應用執行過程進行建模[7]。CEA提供標準的應用程序及其參數的接口和模型,擴展虛擬天文臺資源模式,規范化WSDL并提供更高級別的描述語言,并實現應用程序的異步操作[8]。CEA保管描述系統中每個服務的特殊功能,并保留共同部分,從而Portal和JES系統中的工作流系統不需要針對不同的服務編寫特殊代碼就能驅動各種數據篩選服務和數據轉換服務[9]。CEA與AstroGrid工作流組件的結合實現了虛擬天文臺的分布式處理技術。
CEA希望實現的功能不僅包括提供應用程序異步操作的部分,還包括為了方便開發而封裝的底層結構,包括:
CEA Client是為客戶提供CEA服務的客戶端,從而簡化與SOAP服務的溝通。
CEA server library組件提供了AstroGrid CEA公共庫,該公共庫包括大量CEA代碼,但是并沒提供代碼運行環境。
CEA common library包括服務器和客戶端常見的CEA類,該組件可與其他組件綁定創建服務。用戶可以基于CEA common library創建屬于自己且符合IVOA規范的Web服務。
CEA CEC(Common Execution Connector)Web服務器屬于需要實際部署的服務器組件。它提供了Java類應用程序的公共執行連接器Web服務,使天文應用程序適合于虛擬天文臺環境,從而用戶能通過AstroGrid門戶、桌面應用程序和工作流系統調用應用程序[10]。
CEA服務器和客戶端軟件把Web服務實現的細節隱藏于AstroGrid底層框架之下,例如Workflow[11]。CEA的重要特性是運用單個Web服務定義和應用模型描述多類型的應用程序。因此對公共執行架構的描述分為兩部分:
(1)應用程序及其參數的數據模型的描述。該模型包含對虛擬天文臺注冊表內應用程序資源和調用應用程序及其參數的描述[12];
(2)支持遠程調用符合CEA規范應用程序的特定的Web接口描述。采用XML文檔描述應用程序調用過程,運行應用程序,并以異步、安全的方式返回結果[13]。
CEA Java-class-application server組件是在Tomcat中運行的CEC Web服務器組件的一部分,針對Java類應用程序提供CEC Web服務,簡稱JC-CEC。JC-CEC作為服務器組件,可在Servlet容器中或以獨立服務器的方式運行,此處采用生產環境中更常用的Servlet容器模式Tomcat。其中JC-CEC WAR文件的WEB-INF/lib目錄下包含可執行的jar文件,有助于方便發布和執行Java應用程序,比如Axis.jar作為Web服務引擎及客戶端引擎。而jar文件提供了SOAPWrapper類和ExecutionManager類。SOAPWrapper類使得任何接受對象的操作可以用來操作基本類型,ExecutionManager類則用于執行生成的公共入口點。如果虛擬天文臺用戶想運行選擇的Java應用程序,應該先安裝JC-CEC組件,并對JC-CEC進行相應的配置,主要包括編輯Registry-template.xml和App-description.xml文件。接著獲取并安裝應用程序,最后通過門戶、桌面應用程序和工作系統進行調用。相關組件如圖2。

圖2 JC-CEC組件Fig.2 Components of the CEA Java Class Application
2002年以來,中國科學技術大學天體物理中心一直利用SDSS光譜數據研究星系和活動星系核,并在此過程中發展了一套完善的光譜數據處理與分析方法和程序,它能自動分析海量的星系和活動星系核光譜。主要功能包括兩方面:一是將寄主星系恒星光譜貢獻與活動星系核貢獻從光譜數據中分離(星核光譜分離);二是對各成份的譜線和連續譜做精確的分解和測量,目前計算結構以FITS格式保存。經過鄧玉坤等的努力,基于PHP網站采用將FITS圖像部分參數插入數據庫,同時在需要時對FITS文件實時處理作為數據源的方式實現了FITS格式的光譜數據發布及檢索[14]。天文學家可以通過定義圓形天區中心坐標和搜索半徑確定天區范圍,創建并搜索給定天區中的天體目標。李曉科等則采用面向Web服務的天文數據發布技術實現了同時支持SOAP風格和REST風格的錐型檢索服務[15]。在此基礎上利用AstroGrid CEA框架實現錐型檢索數據的發布,進而將數據融合到AstroGrid虛擬天文臺門戶中,供全世界天文學家使用。
整個搭建及調用過程包含以下步驟:(1)將JC-CEC部署到Tomcat容器中;(2)在Eclipse中編寫服務代碼及服務配置文件;(3)將應用程序打包并部署到JC-CEC中;(4)在瀏覽器或客戶端調用服務。以下詳細介紹各步驟。
(1)安裝JC-CEC
安裝JC-CEC包括3個步驟:下載Tomcat安裝包及CEA Java-class-application server WAR文件;重命名WAR文件,保持與Web應用程序上下文的名字相匹配,例如,astrogrid-cea-javaclass.war;將WAR文件放入Tomcat的webapps目錄下,即可自動解壓并啟動Web應用程序。這樣就可以通過瀏覽器訪問JC-CEC的Web頁面。
(2)編寫服務代碼及服務配置文件
首先要根據光譜數據錐型檢索功能的流程編寫服務代碼。其流程包括服務端接收到OMElement類型參數后,分析XML文檔對象獲得傳入的赤經/赤緯/半徑3個參數;判斷參數是否有效。如果參數無效則按照IVOA規范返回包含錯誤消息的VOTable,如果有效則查詢數據庫并生成包含檢索結果的VOTable,最后將VOTable轉換為OMElement并返回。
完成服務代碼的編寫后,需要編寫服務的配置文件。服務配置文件可以描述服務的名稱、開放接口、接口使用的傳輸方式等。針對錐型檢索接口需把消息接收器配置為RawXMLINOutMessageReceiver,以便返回自定義格式的XML。
(3)打包并部署應用程序
為了讓Web應用程序與JC-CEC協同工作,還需對JC-CEC進行相應的配置。包括:
編輯JC-CEC環境,即應用程序服務器的“環境項”,告知JC-CEC查找路徑。對于Tomcat 5.0容器而言,這就意味著需要編輯${CATALINA_HOME/conf/Catalina/localhost/astrogrid-cea-javaclass.xml文件。
編輯“registration-template”XML文檔。該文件中CeaApplicationType和CeaServiceType兩個資源文件提供CEC服務及其應用程序的注冊信息。CEC讀取這個文件,并與本地配置信息結合產生注冊文件。“registration-template”XML文檔包含<ApplicationDefinition>元數據和<VOResource>元數據,例如<ApplicationDefinition>描述機器如何運行應用程序,JC-CEC會根據本地配置文件向<ApplicationDefinition>添加相應的信息,然后運用<VOResource>封裝應用程序,發布<VOResource>。
重啟JC-CEC Web服務獲得修改的配置。也可重啟Tomcat,或使用Tomcat Manager Application重啟整個Web應用程序。
通過Eclipse中菜單File-Export-JAR file將設計并實現的錐型檢索服務進行打包,然后選擇輸出到JC-CEC的WEB-INFlib目錄下即可由JC-CEC引擎自動完成部署服務。
為了讓載入的Java應用程序適應虛擬天文臺環境,還需要對JC-CEC配置文件WEB-INFweb.xml進行相應修改,具體編輯內容如下:

(4)調用服務
當用戶執行應用程序調用操作,JC-CEC首先查找資源注冊表,通過分析<VOResource>元數據獲得<ApplicaitionDefinition>,依據<ApplicaitionDefinition>從用戶界面添加參數,激活門戶 Portal的workflow executor,啟動SOAP引擎執行調用操作,服務成功接收參數并查詢返回符合IVOA規范的錐型檢索規范的結果。JC-CEC服務器支持Universal Worker Service REST接口,即CEC頁面的側菜單項Test run of application[16]。該接口通過Web運行載入的應用程序。所以在瀏覽器中直接輸入網址即可調用剛才搭建的錐型檢索服務。通過以上步驟即實現了運用CEA發布中國科學技術大學光譜處理數據。
本文對AstroGrid CEA的實現原理、基本架構、接口分析和應用模型進行了系統的調研,對如何運用CEA進行了分析,并在此基礎上,通過CEA實現了中國科學技術大學光譜處理數據的發布,完成了基于FITS格式的錐型檢索服務,為未來天文應用軟件開發中標準的遵循或兼容以及對天文數據和應用的集成與無縫連接打下了基礎。AstroGrid CEA架構提供完整的Web服務異步環境中定義和執行應用程序方法,實現了AstroGrid工作流系統,就這點而論,CEA擁有完善的框架及功能。然而,隨著AstroGrid演變,以及更科學的應用移植到虛擬天文臺,需要對CEA組件進行評估、升級,對整體模型進行擴展,支持新的應用程序直接使用CEA Web接口,從而滿足用戶需求,也為國內天文應用向AstroGrid的移植和應用提供更為有力的支持。
[1]崔辰州,趙永恒.作為網絡時代天文研究的基礎平臺—虛擬天文臺方興未艾 [EB/OL].(2003-10-31) [2011-06-24].http://www.bast.net.cn/kjxx/gjxx/2003/10/31/11548.shtml.
[2]Lawrence Andy.AstroGrid:powering the virtual observatory [C]//Szalay,Alexander S.Virtual Observatories.Proceedings of the SPIE,2002,4846:6-12.
[3]Welcome to AstroGrid [EB/OL].[2011-06-24].http://www.astrogrid.org/.
[4]Harrison P N,Winstanley J Taylor.The AstroGrid common execution architecture(CEA) [J].Astronomical Data Analysis Software and Systems XIV ASP Conference Series,2005,347:291-295.
[5]CEA CEC web server 2009.1 [EB/OL].[2011-06-24].http://software.astrogrid.org/doc//p/cea/2009.1/cec/.
[6]SkyServer:application programmer’s interface [EB/OL].[2011-06-24].http://cas.sdss.org/dr7/en/help/docs/api.asp.
[7]The AstroGrid engine room [EB/OL].[2011-06-24].http://www.astrogrid.org/wiki/Home/AGEngineRoom.
[8]Common execution architecture(CEA) [EB/OL].[2011-06-24].http://astrogrid.ast.cam.ac.uk/architecture-itn6/document/cea.html.
[9]AstroGrid for deployers 2009 [EB/OL].[2011-06-24].http://deployer.astrogrid.org/RELEASE/architecture.html.
[10]Common execution architecture(CEA) [EB/OL].[2011-06-24].http://software.astrogrid.org/doc/p/cea/2009.1/.
[11]Common execution architecture design [EB/OL].[2011-06-24].http://www.astrogrid.org/maven/docs/HEAD/applications/design/CEADesign.html.
[12]Harrison P.A proposal for a common execution architecture version 1.2 [EB/OL].[2011-06-24].http://www.ivoa.net/Documents/Notes/CEA/CEADesignIVOANote-20050513.html.
[13]Paul Harrison.E.a.t.I.G.a.W.S.W.G.CEA application model:a model of an application in the common application architecture version 1.02007 [EB/OL].[2011-06-24].http://www.jb.man.ac.uk/~ pah/ivoa/CEAApplicationDM.html.
[14]鄧玉坤,王鋒,鄧輝,等.天文輕量級科學工作流系統的實現 [J].天文研究與技術——國家天文臺臺刊,2010,7(4):338-343.Deng Yukun,Wang Feng,Deng Hui,et al.A lightweight scientific workflow system for astronomical data processing [J].Astronomical Research & Technology——Publications of National Astronomical Observatories of China,2010,7(4):338-343.
[15]李曉科,季凱帆,鄧輝,等.面向Web服務的天文數據發布技術 [J].天文研究與技術——國家天文臺臺刊,2011,9(1):70-78.Li Xiaoke,Ji Kaifan,Deng Hui,et al.Astronomical data publishing techniques oriented toward the WEB SERVICE [J].Astronomical Research & Technology——Publications of National Astronomical Observatories of China,2011,9(1):70-78.
[16]CEA CEC web server[EB/OL].[2011-06-24].http://software.astrogrid.org/doc/p/cea/2009.1/cec/Application Configuration.html.