唐芝青 吳斌輝 黃逸帆 曹吉萍
摘 要:本文首先分析了傳統(tǒng)WebGIS存在的不足,隨后介紹了RIA技術(shù)、Silverlight技術(shù)和WCF服務,并提出基于Silverlight技術(shù)和WCF服務的WebGIS框架。在描述了框架的目標后,較為詳細地分析了框架的結(jié)構(gòu)。最后,本文以該框架在財政預算審批空間可視化管理系統(tǒng)中的應用為例,介紹了框架中關鍵的表示層和WCF服務層的實現(xiàn)過程。
關鍵詞:silverlight;WCF;WebGIS;財政預算審批管理系統(tǒng)
0 引言
WebGIS(Web Geographical Information System)是Internet 技術(shù)與GIS技術(shù)的結(jié)合。它通過互聯(lián)網(wǎng)對地理空間數(shù)據(jù)進行發(fā)布和應用,實現(xiàn)地理空間數(shù)據(jù)的共享和互操作,它是GIS應用的重要發(fā)展方向。但目前傳統(tǒng)WebGIS 技術(shù)存在地圖界面操作體驗不佳、交互性差、數(shù)據(jù)響應速度慢、代碼模塊化程度低及開發(fā)維護復雜等問題。
針對以上問題,本文提出了基于Silverlight技術(shù)和WCF服務的WebGIS應用框架。通過在財政預算審批空間可視化管理系統(tǒng)項目中的實際應用表明,該框架在增強WebGIS的交互性、加快處理速度、優(yōu)化用戶體驗方面有較好的效果,同時該框架能提高開發(fā)模塊復用性,為模塊化快速搭建WebGIS應用系統(tǒng)提供了一種可行的解決方案。
1 相關技術(shù)介紹
1.1 Silverlight
在介紹Silverlight之前,有必要先介紹RIA(Rich Internet Applications,富因特網(wǎng)應用程序)。傳統(tǒng)的基于頁面的系統(tǒng)已經(jīng)漸漸不能滿足網(wǎng)絡瀏覽者的更高的、全方位的體驗要求了,而RIA的出現(xiàn)正是為了解決這個問題[ 1 ]。RIA是新一代的網(wǎng)絡應用程序,它集桌面應用程序的最佳用戶界面功能、Web應用程序的普遍性、低成本部署,以及基于網(wǎng)絡的實時互動優(yōu)勢于一體。RIA 技術(shù)的發(fā)展迅速,主要有Adobe公司的Flex、微軟公司的Silverlight 和 SUN公司的JavaFx,其中前兩者是目前的RIA技術(shù)主流。本文選擇微軟公司的Silverlight作為RIA技術(shù)進行研究介紹。
Silverlight 是微軟RIA策略的主要開發(fā)平臺之一,以瀏覽器的插件方式運行,提供Web應用程序中多媒體與高度交互性前端應用程序的解決方案,可創(chuàng)建豐富的、絢麗效果的交互式應用[ 2 ]。基于Silverlight 開發(fā)的RIA,具備跨瀏覽器、跨平臺等特性,甚至可以在移動設備上使用。Silverlight 提供靈活的編程模型,用戶界面可由基于XML的XAML (可擴展應用程序標記語言)來渲染。
1.2 WCF服務介紹
WCF結(jié)合分布式技術(shù)和SOA理念[ 3 ],借助.NET框架而形成的面向服務的分布式通信編程框架,可以使開發(fā)人員快速地構(gòu)建跨平臺、安全、高效、事務性的企業(yè)級解決方案[ 4 ]。WCF是使用托管代碼建立和運行面向服務應用程序的統(tǒng)一框架,它具有統(tǒng)一性、互操作性、安全性、兼容性的特點。WCF是微軟分布式應用程序開發(fā)的集大成者,整合了.NET 平臺下所有的和分布式系統(tǒng)有關的開發(fā)技術(shù),從而大大簡化開發(fā)過程;它采用SOAP(Simple Object Access Protocol)機制進行通信,從而保證了系統(tǒng)間的互操作性,而且利用這種通信機制可以支持跨進程、跨子網(wǎng)甚至跨Internet進行通信。正是由于這些優(yōu)勢,使得WCF在架構(gòu)面向服務分布式企業(yè)級解決方案中,發(fā)揮越來越重要的作用,開發(fā)者對于WCF在企業(yè)級解決方案中的研究和應用也越來越多。
1.3 ArcGIS API for Silverlight
ArcGIS API for Silverlight是ESRI公司開放的基于Silverlight上的 ArcGIS ServerAPI接口[ 5 ]。其構(gòu)建在微軟的Silverlight平臺之上,能夠?qū)rcGIS Server、微軟的Bing等地圖服務和功能等,融合在Silverlight應用程序中,采用REST API應用程序接口來實現(xiàn)ArcGIS Server服務。因此,ArcGIS Server API for Silverlight,可以創(chuàng)造豐富的網(wǎng)絡和桌面應用程序。ArcGIS API for Silverlight為用戶提供的功能主要有:地圖顯示功能,該功能支持多種類型的地圖投影、微軟的Bing地圖服務、ArcGIS Server的動態(tài)加載地圖和緩存地圖服務。在地圖漫游和縮放時提供了動畫顯示效果,具有非常炫麗的用戶界面。地圖交互功能,通過 Graphics Layer等實現(xiàn)與地圖的良好交互,這其中包括地圖的輸入與輸出。任務工具功能,主要包含了查詢、地理編碼、地理處理、標識要素、查找、地理操作等常用的任務,極大豐富了GIS服務應用。
1.4 數(shù)據(jù)庫技術(shù)
基于silverlight技術(shù)和WCF服務的WebGIS應用框架,使用大型關系型成熟數(shù)據(jù)庫技術(shù)作為空間信息數(shù)據(jù)和屬性數(shù)據(jù)的存儲介質(zhì),包括空間數(shù)據(jù)庫和項目屬性數(shù)據(jù)庫兩部分,相互之間通過內(nèi)部關鍵字進行關聯(lián)。ArcGIS對空間數(shù)據(jù)的存儲主要通過ArcSDE實現(xiàn)。ArcSDE為任意的客戶端應用提供了一個能在數(shù)據(jù)庫管理系統(tǒng)(DBMS)中存儲、管理和使用空間數(shù)據(jù)的接口,并將地理特征數(shù)據(jù)(空間數(shù)據(jù))和屬性數(shù)據(jù)統(tǒng)一地集成在關系數(shù)據(jù)庫管理系統(tǒng)中,從而可以較好地借助關系數(shù)據(jù)庫管理系統(tǒng)對數(shù)據(jù)進行統(tǒng)一、有效的管理,保證空間數(shù)據(jù)與屬性數(shù)據(jù)間的一致性和完整性。本框架采用ArcSDE為空間數(shù)據(jù)引擎連接SQL Server 2012進行空間數(shù)據(jù)的存儲。
2 基于Silverlight和WCF的WebGIS框架
2.1 框架的目標
框架主要完成以下目標:
(1)實現(xiàn)系統(tǒng)架構(gòu)的可擴展性和靈活性。利用基于面向服務思想的WCF服務開發(fā)WebGIS應用系統(tǒng),實現(xiàn)功能模塊間的松耦合,系統(tǒng)結(jié)構(gòu)更加靈活,具有良好的擴展性。
(2)增強界面用戶操作體驗和系統(tǒng)交互性。利用Silverlight 富客戶端比傳統(tǒng)的WebGIS應用更能調(diào)用客戶端自身的處理能力這一大優(yōu)勢,加上強大的Silverlight開發(fā)工具和控件(如Telerik、Blend、ESRI ArcGIS API for Silverlight)的支持,創(chuàng)建具有豐富體驗的程序用戶操作界面,同時解決傳統(tǒng)WebGIS交互性差的弱點。
(3)實現(xiàn)框架功能的模塊化。通過對傳統(tǒng)經(jīng)典三層架構(gòu)(包括表現(xiàn)層、業(yè)務邏輯層和數(shù)據(jù)處理層)[ 6 ]進行擴展和細化,封裝非業(yè)務公共功能模塊形成通用類庫,使得開發(fā)人員可以直接調(diào)用某一個類庫來實現(xiàn)某項功能,提高企業(yè)級 WebGIS應用系統(tǒng)開發(fā)的效率。
2.2 框架的總體架構(gòu)
本框架用Silverlight技術(shù)作為實現(xiàn)客戶端的技術(shù)方案,WCF技術(shù)作為實現(xiàn)服務器端的服務基礎。具體實現(xiàn)方法則是擴展傳統(tǒng)的經(jīng)典三層WebGIS應用框架,設計新的WebGIS框架的總體結(jié)構(gòu)如圖1所示。
(1)界面表示層
表示層用來完成地圖數(shù)據(jù)和業(yè)務數(shù)據(jù)的展示以及人機交互的相關邏輯,接收用戶的輸入并將用戶的意圖轉(zhuǎn)換為對業(yè)務層相關邏輯的調(diào)用。采用Silverlight Blend技術(shù)并調(diào)用Silverlight 控件(如Telerik)構(gòu)建,地圖展示和地圖操作框架通過調(diào)用ArcGIS API for Silverlight接口快速實現(xiàn)[ 7 ]。
(2)WCF服務層
WCF服務層位于表示層和業(yè)務邏輯層之間,通過服務代理封裝和擴展Silverlight客戶端所調(diào)用的WCF服務,實現(xiàn)客戶端服務調(diào)用的統(tǒng)一控制。服務端通過調(diào)用封裝的業(yè)務邏輯層對象(以WCF服務的方式封裝)響應界面表示層的數(shù)據(jù)請求和操作。WCF服務層的存在,降低了系統(tǒng)的耦合度,提高了系統(tǒng)的擴展性,并通過WCF服務代理的方式提高了系統(tǒng)開發(fā)的靈活性。
(3)業(yè)務邏輯層
業(yè)務邏輯層響應WCF服務層的業(yè)務邏輯請求,并完成與數(shù)據(jù)訪問層的交互。它完全由WCF服務實現(xiàn),以數(shù)據(jù)操作契約的形式向WCF服務層公開其數(shù)據(jù)操作。在服務底層開放與數(shù)據(jù)庫交互基本操作的接口,并封裝了基礎數(shù)據(jù)實體的常用操作。
(4)數(shù)據(jù)訪問層
負責空間數(shù)據(jù)和屬性數(shù)據(jù)的存取,維護各種數(shù)據(jù)間的關系,通過用戶的調(diào)用完成對數(shù)據(jù)的持久化工作,并且保障整個系統(tǒng)數(shù)據(jù)源的安全性。另外,本框架還包括數(shù)據(jù)實體類與通用類庫:二者均面向全局,前者主要定義了基礎數(shù)據(jù)實體模型,便于規(guī)范業(yè)務數(shù)據(jù)實體對象;后者主要是封裝程序開發(fā)經(jīng)常用到的方法和操作,例如數(shù)據(jù)轉(zhuǎn)換、字符串處理等。
3 應用案例
本文將基于Silverlight技術(shù)和WCF服務的WebGIS框架應用于實際開發(fā)項目——財政預審審批空間可視化管理系統(tǒng)開發(fā),取得了較好的效果。該系統(tǒng)前臺使用Silverlight技術(shù)調(diào)用ArcGIS API for Silverlight等控件進行地圖界面繪制,空間數(shù)據(jù)通過ArcSde空間數(shù)據(jù)引擎存儲到商業(yè)數(shù)據(jù)庫SQL Server 2012中,WCF服務層封裝數(shù)據(jù)庫操作函數(shù),后臺運維部分采用.NET環(huán)境下的C#語言開發(fā)。
3.1 WCF服務層的實現(xiàn)
新建WCF服務中GIS數(shù)據(jù)操作接口類文件IGISServices.cs,在其命名空間內(nèi),定義GIS數(shù)據(jù)庫操作的函數(shù),如下:
namespace WCFServices
{
[ServiceContract]
public interface IGISServices
{
[OperationContract]
ReturnInfoClass InsertFeaturesetIntoSDE(string FeaturesetJson, bool IsUpdate = false);
[OperationContract]
ReturnInfoClass DeleteFeatureFromSDE(string XMBH, bool IsUpdate = false);
[OperationContract]
ReturnInfoClass UpdateFeatureAttributes(string XMBH, Dictionary
}
}
之后,新建IGISServices.cs類的具體實現(xiàn)類文件GISServices.svc,在其中具體編寫具體事件以完成IGISServices.cs中對應函數(shù)的功能。在此以在SDE數(shù)據(jù)庫中插入圖層數(shù)據(jù)的函數(shù)InsertFeaturesetIntoSDE()為例介紹其具體實現(xiàn)過程事件:
public ReturnInfoClass InsertFeaturesetIntoSDE(string FeaturesetJson, bool IsUpdate = false)
{
//設置欲更新的圖層名
string strFeatureClassName = “sde.DBO.CZYSSP_Polygon”;
returnInfo.AddStepMsg(string.Format(“要素集名稱{0}已確定”, strFeatureClassName));
//連接至工作空間獲取要更新的圖層
IWorkspace sdeWordspace = SDEConnectClass.OpenSdeConnect(connectionString=”SERVER=localhost;INSTANCE=5151;DATABASE=sde;USER=sde;PASSWORD=085222;VERSION=sde.DEFAULT”);
returnInfo.AddStepMsg(“打開工作空間”);
IFeatureClass featureClass = SDEConnectClass.findFeatureClassByName(sdeWordspace, strFeatureClassName);
returnInfo.AddStepMsg(“打開要素集”);
IFeature feature = featureClass.CreateFeature();
returnInfo.AddStepMsg(“創(chuàng)建空白要素成功”);
try
{
feature.Shape = j2fClass.features[0].geometry.polygon;
returnInfo.AddStepMsg(“添加圖形”);
//屬性處理
for (int i = 0; i < feature.Fields.FieldCount; i++)
{
//添加圖層的屬性和字段值
}
//圖層保存
feature.Store();
returnInfo.AddStepMsg(“要素保存完畢”);
returnInfo.ExecuteOK = true;
}
catch (Exception ex)
//如果沒有保存成功 則刪除掉創(chuàng)建的空白Feature
}
return returnInfo;
}
3.2 界面層的實現(xiàn)
本系統(tǒng)以XAML語言作為界面元素和.NET Framework for Silverlight 的銜接形式描述界面,借助ArcGIS API for Silverlight提供的控件和方法,展現(xiàn)和操作地圖。下面以舉一個很簡單的例子說明:
//引用文件 …… //定義各種GIS操作(點、線、面等)在圖層界面的樣式 //插入ESRI提供的地圖控件 Ext ent=”12324619.9921,3013545.2841,12521039.992,3086331.8652” MouseMove=”MyMap_MouseMove” Progress=”Map_Progress”>
上述過程即搭建了一個簡單了頁面,在該頁面中加入了一個地圖控件,控件展示了本機發(fā)布的一張底圖。財政預算審批空間可視化管理系統(tǒng)的截圖如圖2:
4 結(jié)束語
針對傳統(tǒng)WebGIS地圖界面操作體驗不佳、用戶交互性差、數(shù)據(jù)響應速度和架構(gòu)模塊化程度低的缺陷,本文提出了基于Silverlight技術(shù)和WCF服務的WebGIS應用框架。通過在財政預算審批空間可視化管理系統(tǒng)項目中的實際應用表明,該框架在一定程度上增強了WebGIS的用戶體驗和系統(tǒng)交互性,提高了WebGIS的開發(fā)模塊復用性,為不同商業(yè)GIS業(yè)務系統(tǒng)的快速搭建提供了一個基本框架。
參考文獻
[1] 吳濤, 戚銘堯, 黎勇, 等. WebGIS 開發(fā)中的RIA 技術(shù)應用研究[J]. 測繪通報, 2006, (6 ): 34- 37.
[2] Burkhardt F,Andreas M,Peter N.Integration of Environmental Management Information Systems and ERP Systems Using Integration Platforms[J].Environmental Science and Engineering:Information Technologies in Environmental Engineering,2009, 2:53-63.
[3]楊昌鋒,王冠,司建輝. 基于 SOA 構(gòu)建新一代的企業(yè)應用集成[J].計算機應用與軟件,2005.20(3):63-65
[4] Juaval Lowy著,張逸,徐寧譯. WCF 編程[M]. 機械工業(yè)出版社,2009:12-64,97-104
[5]湯國安,楊昕.ArcGIS地理信息系統(tǒng)空間分析實驗教程(第二版)[M].北京科學出版社,2012
[6] 孫莉,李樹剛,陶瑩,等.基于B/S 模式的質(zhì)量信息管理系統(tǒng)設計與實現(xiàn)[J].上海交通大學學報,2010,44(S1):175-177.
[7] 吳磊,李瑋.Silverlight尋光之旅:企業(yè)級RIA項目全流程實踐[M].北京電子工業(yè)出版社,2012.