(河南大學(xué) 計算機與信息工程學(xué)院,河南 開封 475004)
近年來,隨著遙感圖像獲取手段的多樣化,遙感圖像數(shù)據(jù)量急劇增大,迫切需要建立一個分布式遙感產(chǎn)品生產(chǎn)系統(tǒng)[1-2]。分布式遙感產(chǎn)品生產(chǎn)系統(tǒng)由多個分系統(tǒng)組成,各分系統(tǒng)存在平臺和開發(fā)語言的差異,分系統(tǒng)間如何通信成為了一個亟待解決的問題。傳統(tǒng)的Socket、TCP通信技術(shù)實現(xiàn)起來簡單,但是編程復(fù)雜度高、消息解析麻煩[3],而RMI的實現(xiàn)需要通信的兩端都有Java運行環(huán)境,這些缺陷使得它們都不能應(yīng)用于本系統(tǒng)中。
Web Service是近年來新興起的一種技術(shù)架構(gòu),有很多異構(gòu)系統(tǒng)間通信是基于Web Service技術(shù)實現(xiàn)的,例如肖維民等基于Web Service的車險移動查勘系統(tǒng)[4]、焦圣明等基于Web Service的分布式交通氣象信息共享技術(shù)[5],以及徐光俠等基于Web Service技術(shù)的異構(gòu)系統(tǒng)的無縫集成[6]。Web Service的跨平臺和語言無關(guān)的特點使各分系統(tǒng)在無需考慮運行環(huán)境的情況下,可以彼此兼容,進(jìn)行無縫通信[7]。而且Web Service純接口的數(shù)據(jù)調(diào)用使得用戶不必關(guān)心服務(wù)的具體實現(xiàn),只要接口不變,對用戶沒有任何影響,這種松耦合的組件架構(gòu)使得分布式遙感產(chǎn)品生產(chǎn)系統(tǒng)具有高可用性和高擴展性。本文基于Web Service技術(shù)設(shè)計了一種分布式遙感產(chǎn)品生產(chǎn)系統(tǒng)通信接口方案。
Web Service是一套標(biāo)準(zhǔn),它定義了應(yīng)用程序如何在Web上實現(xiàn)互操作性,具有跨平臺和語言無關(guān)性。Web Service將服務(wù)、功能封裝成對象發(fā)布到網(wǎng)絡(luò)上,客戶端通過編程調(diào)用其開放的服務(wù)接口來獲取它的服務(wù),并不需要知道其請求的服務(wù)是如何實現(xiàn)的,具有松耦合性。Web Service 采用 XML 傳送數(shù)據(jù),可跨越防火墻。Web Service的主要技術(shù)有XML、SOAP、WSDL及UDDI等[4-6,8]。
可擴展的標(biāo)記語言(XML)是Web Service表示數(shù)據(jù)的基本格式,是W3C制定的用來定義和描述數(shù)據(jù)的文本標(biāo)記語言規(guī)范。
簡單對象訪問協(xié)議(SOAP)是一個用于分布式環(huán)境下交換數(shù)據(jù)的簡單的輕量級的協(xié)議。SOAP定義了消息傳遞的格式。SOAP是基于XML的,XML是SOAP的數(shù)據(jù)編碼方式。
Web Service描述語言(WSDL)提供對通信接口的描述,如定義接口的函數(shù)名、參數(shù)和返回值。
UDDI是分布式Web服務(wù)的信息注冊規(guī)范。Web Service可以根據(jù)這一規(guī)范進(jìn)行注冊,以便被其他需要該服務(wù)的用戶發(fā)現(xiàn)[6]。
分布式遙感產(chǎn)品生產(chǎn)系統(tǒng)是集遙感科學(xué)與應(yīng)用、計算機科學(xué)與應(yīng)用和社會科學(xué)與應(yīng)用為一體的系統(tǒng),具有架構(gòu)設(shè)計合理、產(chǎn)品生產(chǎn)速度快、產(chǎn)品精度高、信息展示方式多樣化等優(yōu)點。該系統(tǒng)由信息共享服務(wù)分系統(tǒng)、信息產(chǎn)品生產(chǎn)分系統(tǒng)、質(zhì)量檢驗分系統(tǒng)和綜合數(shù)據(jù)庫分系統(tǒng)4個分系統(tǒng)組成。信息共享服務(wù)分系統(tǒng)負(fù)責(zé)接收各類用戶提交的訂單。信息產(chǎn)品生產(chǎn)分系統(tǒng)從信息共享服務(wù)分系統(tǒng)接收產(chǎn)品訂單,然后分配合適的計算資源,完成產(chǎn)品的生產(chǎn)。質(zhì)量檢驗分系統(tǒng)負(fù)責(zé)對產(chǎn)品進(jìn)行質(zhì)量檢驗。綜合數(shù)據(jù)庫分系統(tǒng)負(fù)責(zé)存儲生產(chǎn)所需的影像數(shù)據(jù)和算法及生成的產(chǎn)品。本文重點介紹系統(tǒng)中通信接口的設(shè)計與實現(xiàn)。
采用Web Service技術(shù)設(shè)計系統(tǒng)通信接口,實現(xiàn)各分系統(tǒng)間的通信。設(shè)計方案如下:①將一個分系統(tǒng)能夠提供給其他分系統(tǒng)的通信接口封裝為一個Web Service,并把在創(chuàng)建Web Service時生成的UDDI文檔(包括Web Service的名稱、功能、需要提供的參數(shù)、返回值類型等)在UDDI注冊中心進(jìn)行注冊;②在調(diào)用某個通信接口時,在UDDI注冊中心查找對應(yīng)的Web Service服務(wù);③根據(jù)返回的信息調(diào)用對應(yīng)的Web Service服務(wù)。
因為分布式遙感產(chǎn)品生產(chǎn)系統(tǒng)各分系統(tǒng)相互都有通信,每個分系統(tǒng)都創(chuàng)建并發(fā)布Web Service服務(wù),所以每個分系統(tǒng)既是Web Service服務(wù)的提供者,又是Web Service服務(wù)的請求者。通信接口設(shè)計原理如圖1所示。
圖1 基于Web Service的通信接口設(shè)計原理圖
根據(jù)應(yīng)用Web Service技術(shù)實現(xiàn)各分系統(tǒng)間通信的方案可以看出,本系統(tǒng)的優(yōu)點是:①當(dāng)系統(tǒng)很大時,可以由各個分系統(tǒng)發(fā)布不同的Web Service服務(wù)來構(gòu)造系統(tǒng)間的通信;②基于Web Service技術(shù),完全屏蔽了平臺和開發(fā)語言的差異,具有跨平臺和開發(fā)語言無關(guān)性的能力;③系統(tǒng)通過標(biāo)準(zhǔn)協(xié)議進(jìn)行數(shù)據(jù)訪問,有利于系統(tǒng)的維護(hù)、完善和功能擴展。
在分布式遙感產(chǎn)品生產(chǎn)系統(tǒng)各分系統(tǒng)中,根據(jù)圖1所示的通信接口設(shè)計原理,構(gòu)造各自的Web Service服務(wù)。下面以其他分系統(tǒng)與綜合數(shù)據(jù)庫分系統(tǒng)的通信為例介紹Web Service服務(wù)的實現(xiàn)與調(diào)用。
在綜合數(shù)據(jù)庫分系統(tǒng)實現(xiàn)過程中,首先構(gòu)造基于Web Service技術(shù)的通信接口的實現(xiàn)類,實現(xiàn)環(huán)境為VS 2010,采用C#開發(fā)語言。實現(xiàn)類完成之后,把服務(wù)及其描述的WSDL文件發(fā)布到UDDI注冊中心進(jìn)行注冊,Web Service發(fā)布完成之后,其他分系統(tǒng)就可以根據(jù)發(fā)布后的Web Service服務(wù)的相關(guān)WSDL描述調(diào)用此服務(wù)進(jìn)行通信。綜合數(shù)據(jù)庫分系統(tǒng)的Web Service服務(wù)實現(xiàn)類如下所示:
[WebService(Namespace="http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class SubmitOrder : System.Web.Services.WebService
{
public SubmitOrder()
{
if (!Constant.Created)
Constant.Create();
TSPCommonReference.Create();
}
[WebMethod(Description = "創(chuàng)建一個共享工作空間,將數(shù)據(jù)臨時放入該空間下")]
public string GetNewWorkSpace(string dataType){ 代碼省略 }
[WebMethod(Description = "觸發(fā)數(shù)據(jù)入庫!")]
public int SubmitHJDataImport(string sharePath){ 代碼省略 }
[WebMethod(Description = "觸發(fā)數(shù)據(jù)批量入庫,datatype為數(shù)據(jù)類型,dirPath為數(shù)據(jù)目錄")]
public int SubmitDataImport(string datatype, string sharePath){代碼省略 }
[WebMethod(Description = "觸發(fā)數(shù)據(jù)入庫!dataType為需要上傳的數(shù)據(jù)類型,sharePath為數(shù)據(jù)所在的網(wǎng)絡(luò)路徑")]
public int SubmitImportOrder(string dataType, string sharePath){ 代碼省略 }
[WebMethod(Description = "數(shù)據(jù)上傳統(tǒng)一接口,dataType為上傳類型,pathID為源數(shù)據(jù)url,opID為操作號!")]
public int UploadData(string dataType, string pathID, string opID){ 代碼省略 }
[WebMethod(Description = "下載數(shù)據(jù)統(tǒng)一接口,dataID為數(shù)據(jù)唯一編碼,pathID為下載目的地,opID為操作號!")]
public int DownLoad(string dataID, string pathID, string opID){ 代碼省略 }
}
其他分系統(tǒng)采用Java語言編寫客戶端程序,根據(jù)得到的WSDL文件,解析該文件中所描述的相關(guān)參數(shù),這些參數(shù)包括服務(wù)的名字、端口的名字、綁定的方法以及服務(wù)的調(diào)用地址,根據(jù)這些參數(shù)對服務(wù)進(jìn)行調(diào)用,完成其他分系統(tǒng)與綜合數(shù)據(jù)庫分系統(tǒng)的通信。
本文介紹了Web Service技術(shù)的相關(guān)理論知識,將Web Service技術(shù)應(yīng)用于分布式遙感產(chǎn)品生產(chǎn)系統(tǒng)通信接口的設(shè)計,實現(xiàn)了分布式遙感產(chǎn)品生產(chǎn)系統(tǒng)各分系統(tǒng)間的無縫通信。同時,Web Service技術(shù)所具有的跨平臺、開發(fā)語言無關(guān)性和松耦合等優(yōu)點,使系統(tǒng)具有良好的可移植性和可擴展性,為以后類似的應(yīng)用提供了新的思路和解決方法。
參考文獻(xiàn):
[1] 鄭逢斌,張哲,余濤,等.一種支持多任務(wù)高效處理的遙感產(chǎn)品生產(chǎn)線架構(gòu)研究[J].計算機科學(xué),2012(s3):181-184.
[2] 周兵,李家國,吳貫鋒,等.面向遙感產(chǎn)品生產(chǎn)的可視化數(shù)據(jù)流模型[J].河南大學(xué)學(xué)報(自然科學(xué)版),2013,43(1):74-78.
[3] 侯彥娥,王玉璟,樓軍.基于WCF的異構(gòu)系統(tǒng)間數(shù)據(jù)交互研究[J].河南大學(xué)學(xué)報(自然科學(xué)版),2013, 43(4):446-450.
[4] 肖維民,韋津華.基于Web Service 的車險移動查勘系統(tǒng)[J].計算機應(yīng)用與軟件,2012, 29(6):239-241.
[5] 焦圣明,嚴(yán)明良,郭靜,等.基于Web Service的分布式交通氣象信息共享技術(shù)研究[J].計算機工程與科學(xué),2012, 34(3):196-200.
[6] 徐光俠,楊丹.基于Web Service 技術(shù)的異構(gòu)系統(tǒng)的無縫集成[J].計算機工程與設(shè)計,2007, 28(6):1409-1411.
[7] 白林如,張紅琴.基于Web Service的企業(yè)信息系統(tǒng)設(shè)計與實現(xiàn)[J].電腦開發(fā)與應(yīng)用,2012, 25(5):79-81.
[8] 孫傳群,楊洋.基于Web Service的業(yè)務(wù)系統(tǒng)集成模型[J].科技通報,2013,29(4):44-46.