999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Silverlight+WCF服務(wù)構(gòu)建測(cè)繪資料管理系統(tǒng)Web GIS框架

2018-10-15 01:58:54段建剛
關(guān)鍵詞:數(shù)據(jù)庫(kù)用戶服務(wù)

段建剛

(吉林省水利水電勘測(cè)設(shè)計(jì)研究院,吉林 長(zhǎng)春 130012)

多年的測(cè)繪工作積累了大量的成果資料,有紙質(zhì)的各種圖(表)、電子數(shù)據(jù)光盤(pán)等等。由于資料數(shù)量多、存儲(chǔ)分散,想要查找利用已有的成果就會(huì)變得非常困難,而且經(jīng)年累月,數(shù)據(jù)量還在不停地增長(zhǎng)。隨著地理信息技術(shù)及網(wǎng)絡(luò)技術(shù)的發(fā)展,需要開(kāi)發(fā)一個(gè)基于局域網(wǎng)測(cè)繪成果資料管理系統(tǒng)。基于Silverlight富客戶端技術(shù)、WCF數(shù)據(jù)服務(wù)技術(shù)、Web GIS技術(shù)和數(shù)據(jù)庫(kù)技術(shù)來(lái)構(gòu)建本系統(tǒng)框架,下面以此成果管理系統(tǒng)為例詳細(xì)剖析基于Silverlight富客戶端技術(shù)和WCF數(shù)據(jù)服務(wù)技術(shù)Web GIS框架的構(gòu)建。

1 技術(shù)分析

傳統(tǒng)的Web GIS框架一般采用B/S模式或C/S模式[1]。B/S模式由客戶端向服務(wù)器發(fā)起數(shù)據(jù)請(qǐng)求,服務(wù)器根據(jù)用戶請(qǐng)求完成全部的數(shù)據(jù)計(jì)算,然后將結(jié)果發(fā)送給瀏覽器顯示;C/S模式由客戶端向服務(wù)器發(fā)起數(shù)據(jù)請(qǐng)求,服務(wù)器根據(jù)用戶請(qǐng)求完成數(shù)據(jù)計(jì)算,然后將數(shù)據(jù)發(fā)送給客戶端,客戶端對(duì)中間數(shù)據(jù)進(jìn)行再加工,然后將最終結(jié)果顯示給用戶[2]。B/S架構(gòu)的技術(shù)瓶頸都集中在服務(wù)器端,這樣會(huì)造成服務(wù)器的計(jì)算壓力過(guò)大,影響服務(wù)器并發(fā)量和用戶體驗(yàn);C/S架構(gòu)稍好,客戶端能夠適當(dāng)分擔(dān)一部分服務(wù)器端的計(jì)算壓力,用戶體驗(yàn)較好。B/S架構(gòu)的優(yōu)點(diǎn)是客戶端為瀏覽器,無(wú)需另外安裝客戶端,系統(tǒng)升級(jí)時(shí)只需升級(jí)服務(wù)器端即可完成系統(tǒng)的升級(jí),而C/S架構(gòu)需要另外安裝客戶端軟件,系統(tǒng)升級(jí)時(shí)需要將服務(wù)器端和客戶端都升級(jí)才能更好地協(xié)同工作。鑒于此,便有了基于瀏覽器的富客戶端技術(shù),Silverlight技術(shù)就是一種微軟發(fā)布的基于瀏覽器的富客戶端技術(shù),它以瀏覽器插件的形式工作和更新的,是B/S架構(gòu)和C/S架構(gòu)二者優(yōu)點(diǎn)相結(jié)合的產(chǎn)物,插件安裝后就可以利用客戶端的計(jì)算能力了[3]。

數(shù)據(jù)庫(kù)能向用戶提供高效的數(shù)據(jù)存儲(chǔ)、管理、檢索、備份、恢復(fù)等功能,所以本系統(tǒng)框架會(huì)使用數(shù)據(jù)庫(kù)平臺(tái)來(lái)管理數(shù)據(jù),以數(shù)據(jù)庫(kù)檢索作為管理資料的屬性檢索技術(shù)支持,以GIS空間檢索作為框架平臺(tái)的空間檢索技術(shù)支持。將成果資料存放在網(wǎng)站服務(wù)器目錄中,提取每項(xiàng)成果資料的元數(shù)據(jù)(成果資料的基本信息),將元數(shù)據(jù)存放在數(shù)據(jù)庫(kù)中,并建立字段索引,方便在檢索的時(shí)候可以快速通過(guò)元數(shù)據(jù)檢索到成果資料本身。

由于服務(wù)器端是不允許客戶端直接操作服務(wù)器數(shù)據(jù)庫(kù)數(shù)據(jù)的,而寄宿在服務(wù)器端的Web服務(wù)是可以操作服務(wù)器數(shù)據(jù)庫(kù)數(shù)據(jù)的,所以客戶端需要通過(guò)Web服務(wù)這個(gè)橋梁來(lái)間接完成對(duì)服務(wù)器數(shù)據(jù)庫(kù)數(shù)據(jù)的操作[4]。Web服務(wù)通過(guò)服務(wù)器向客戶端公開(kāi)交互接口,這樣客戶端就能連接到并使用這個(gè)Web服務(wù)了。客戶端向服務(wù)器發(fā)送請(qǐng)求,然后服務(wù)器將請(qǐng)求交給Web服務(wù)去處理,Web服務(wù)按照請(qǐng)求檢索數(shù)據(jù)庫(kù),并通過(guò)服務(wù)器將結(jié)果發(fā)送回客戶端。Silverlight客戶端根據(jù)用戶需求定制功能模塊[5],主要有瀏覽功能模塊、用戶管理模塊、成果資料管理模塊。用戶通過(guò)操作這些功能模塊與服務(wù)器交互。

從上面的分析可以很明顯地看出本架構(gòu)是一個(gè)典型的3層架構(gòu)GIS應(yīng)用系統(tǒng)。第1層為基礎(chǔ)數(shù)據(jù)庫(kù)層,第2層為Web數(shù)據(jù)服務(wù),第3層為GIS應(yīng)用層。

2 設(shè)計(jì)與實(shí)現(xiàn)

2.1 系統(tǒng)框架總體設(shè)計(jì)

本系統(tǒng)框架是一個(gè)基于數(shù)據(jù)庫(kù)的Web GIS系統(tǒng)框架,主要功能模塊有瀏覽功能模塊、用戶管理模塊、成果資料管理模塊三大模塊。瀏覽功能模塊包括縮放、平移、選取、圖層管理、選擇,用戶管理模塊包括用戶管理、用戶角色管理、用戶權(quán)限管理,成果資料管理模塊包括成果資料上傳、歸檔、查詢、修改、下載。由于本框架的基礎(chǔ)數(shù)據(jù)庫(kù)存儲(chǔ)的是成果資料的元數(shù)據(jù),所以數(shù)據(jù)量較小,側(cè)重點(diǎn)是檢索效率及數(shù)據(jù)安全,所以采用目前最流行的SQL Server 2008 Express版作為本框架的數(shù)據(jù)庫(kù)平臺(tái)。Web服務(wù)是多種多樣的,最常用的有基于.NET平臺(tái)的Web Service、WCF等,在本框架使用WCF數(shù)據(jù)服務(wù)作為通信紐帶。采用ASP網(wǎng)站作為服務(wù)器端,使用該網(wǎng)站來(lái)承載WCF服務(wù)。客戶端為基于ArcGIS API for Silverlight開(kāi)發(fā)的富客戶度瀏覽器應(yīng)用程序。本系統(tǒng)的詳細(xì)架構(gòu)如圖1所示。

圖1 框架詳細(xì)架構(gòu)圖

2.2 數(shù)據(jù)庫(kù)設(shè)計(jì)

SQL Server數(shù)據(jù)庫(kù)是關(guān)系型數(shù)據(jù)庫(kù),采用表格和記錄的方式來(lái)管理數(shù)據(jù)。本框架系統(tǒng)的基礎(chǔ)數(shù)據(jù)庫(kù)包含兩個(gè)庫(kù):用戶管理庫(kù)、成果資料庫(kù)。用戶管理庫(kù)存儲(chǔ)用戶基本信息和用戶角色信息、權(quán)限信息等,各個(gè)數(shù)據(jù)表的結(jié)構(gòu)及關(guān)系如圖2所示;成果資料庫(kù)存儲(chǔ)成果資料的元數(shù)據(jù)信息,成果資料元數(shù)據(jù)抽象信息及各表關(guān)系如圖3所示。

圖2 用戶管理庫(kù)“用戶-角色-權(quán)限”關(guān)系圖

圖3 成果資料庫(kù)表格關(guān)系圖

SQL Server所使用的數(shù)據(jù)庫(kù)查詢語(yǔ)言TransactSQL是SQL Server的核心,可以使用TransactSQL編寫(xiě)功能強(qiáng)大的存儲(chǔ)過(guò)程,存儲(chǔ)過(guò)程存放在服務(wù)器端,并且預(yù)先編譯過(guò),執(zhí)行速度非常塊[6]。創(chuàng)建了插入、修改和查詢等存儲(chǔ)過(guò)程,通過(guò)觸發(fā)這些存儲(chǔ)過(guò)程來(lái)控制相關(guān)表格中的數(shù)據(jù)操作。

2.3 服務(wù)器端設(shè)計(jì)

由于服務(wù)器是不允許客戶端直接操作服務(wù)器端數(shù)據(jù)庫(kù)數(shù)據(jù)的,而寄宿在服務(wù)器端網(wǎng)站的WCF服務(wù)可以直接操作服務(wù)器的數(shù)據(jù)庫(kù),所以客戶端必須通過(guò)訪問(wèn)WCF服務(wù)來(lái)間接達(dá)到操作服務(wù)器數(shù)據(jù)庫(kù)的目的。因?yàn)楸究蚣芊?wù)器端的ASP網(wǎng)站不向客戶端發(fā)送任何實(shí)時(shí)生成的網(wǎng)頁(yè),只是作為一個(gè)數(shù)據(jù)服務(wù)器而存在,即作為WCF數(shù)據(jù)服務(wù)的一個(gè)宿主網(wǎng)站,所以服務(wù)器端設(shè)計(jì)其實(shí)主要是該網(wǎng)站承載的WCF服務(wù)的設(shè)計(jì)。

WCF服務(wù)利用契約將服務(wù)和服務(wù)的操作定義為一個(gè)整體,以解釋通過(guò)網(wǎng)絡(luò)傳遞的數(shù)據(jù)。契約用來(lái)定義數(shù)據(jù)類(lèi)型、操作、消息交換模式和消息交換使用的傳輸協(xié)議,契約提供了服務(wù)通信所必需的元數(shù)據(jù),契約通常使用與程序語(yǔ)言無(wú)關(guān)的XML格式發(fā)布的。WCF有三類(lèi)契約:服務(wù)契約、數(shù)據(jù)契約、錯(cuò)誤契約和消息契約[7]。

服務(wù)契約定義了WCF服務(wù)向外界公開(kāi)的功能,這些功能表現(xiàn)為服務(wù)操作(Service Operation)。通常,需要把一個(gè)或多個(gè)參數(shù)傳遞給一個(gè)服務(wù)操作,并等待服務(wù)操作返回一個(gè)值。數(shù)據(jù)契約定義了客戶端與服務(wù)之間信息交換的結(jié)構(gòu)和內(nèi)容。如果需要使用自定義對(duì)象或復(fù)雜數(shù)據(jù)類(lèi)型作為服務(wù)操作的參數(shù)或返回值,則必須向運(yùn)行時(shí)提供信息,告知如何用DataContract特性把這些類(lèi)型序列化為XML流。

本系統(tǒng)框架有3個(gè)功能模塊,由于瀏覽模塊的功能只與客戶端顯示的當(dāng)前數(shù)據(jù)有關(guān),無(wú)需與服務(wù)器端數(shù)據(jù)進(jìn)行通信,所以該模塊的設(shè)計(jì)放在Silverlight客戶端,因此只需設(shè)計(jì)2個(gè)WCF數(shù)據(jù)服務(wù):用戶管理服務(wù)、成果管理服務(wù)即可,服務(wù)的接口設(shè)計(jì)應(yīng)能滿足客戶端的相應(yīng)功能模塊設(shè)計(jì)為宜。

創(chuàng)建一個(gè)命名為UserWcfService的啟動(dòng)了Silverlight功能的WCF服務(wù),該服務(wù)即為用戶管理服務(wù),該服務(wù)定義了“注冊(cè)新用戶”、“登錄系統(tǒng)”、“修改用戶信息”等操作,其服務(wù)契約定義如下。很明顯,該服務(wù)的操作方法的參數(shù)和返回值中用到了兩個(gè)自定義對(duì)象類(lèi)型:UserInfo、UserRole,其中UserInfo對(duì)象為包含用戶基本信息的對(duì)象類(lèi)型,UserRole為包含用戶角色信息的對(duì)象類(lèi)型,所以,還需要定義這兩個(gè)自定義對(duì)象類(lèi)型的數(shù)據(jù)契約。

[ServiceContract(Namespace="CHYDMS.Web")]

[SilverlightFaultBehavior]

[AspNetCompatibilityRequirements(Requiremen-tsMode=AspNetCompatibilityRequirementsMode.Allo-wed)]

public class UserWcfService

{

[OperationContract]

public int RegisterUser(UserInfo ui){…}

[OperationContract]

public UserInfo Login(string uname,string upwd){…}

[OperationContract]

public bool UpdateUserInfo(UserInfo ui){…}

[OperationContract]

public bool ChangePassword(string uname,string oldpwd,string newpwd){…}

[OperationContract]

public int GrantUserRole(string uname,UserRole ur){…}

[OperationContract]

public int UnGrantUserRole(string uname,int rid){…}

[OperationContract]

public UserRole[]GetUserRole(Guid uid,string uname){…}

}

[DataContract]

public class UserInfo

{

[DataMember]

public int UserID{get;set;}//用戶ID

[DataMember]

public string UserName{get;set;}//用戶名

[DataMember]

public string Password{get;set;}//用戶密碼

}

[DataContract]

public class UserRole

{

[DataMember]

public int RoleID{get;set;}//ID代碼

[DataMember]

public string Name{get;set;}//角色名稱(chēng)

[DataMember]

public string Description{get;set;}//描述

}

創(chuàng)建一個(gè)命名為PrjManWcfService的啟動(dòng)了Silverlight功能的WCF服務(wù)為成果管理服務(wù),該服務(wù)定義了“上傳”、“歸檔”、“修改”等操作,其服務(wù)契約定義如下。該服務(wù)的操作方法用到了自定義對(duì)象類(lèi)型PrjInfo,它包含成果資料基本信息,定義PrjInfo對(duì)象類(lèi)型的數(shù)據(jù)契約。

[ServiceContract(Namespace="CHYDMS.

Web")]

[SilverlightFaultBehavior]

[AspNetCompatibilityRequirements(Requiremen-tsMode=AspNetCompatibilityRequirementsMode.

Allowed)]

public class PrjManWcfService

{

[OperationContract]

public int UploadPrjData(Guid uid,PrjInfo pinfo){…}

[OperationContract]

public int ArchivePrj(Guid uid,int pcode,string pname){…}

[OperationContract]

public int UpdatePrjInfo(Guid uid,PrjInfo pinfo){…}

[OperationContract]

public PrjInfo GetPrjInfoByCode(Guid uid,int prjcode){…}

[OperationContract]

public PrjInfo[]QuerryPrj(Guid uid,PrjInfo pinfo){…}

[OperationContract]

public int DownloadPrjData(Guid uid,PrjInfo pinfo){…}

}

[DataContract]

public class PrjInfo

{

[DataMember]

public int PrjID{get;set;}//代碼

[DataMember]

public string Name{get;set;}//名稱(chēng)

[DataMember]

public double Amount{get;set;}//金額

}

WCF服務(wù)允許服務(wù)使用任何協(xié)議與客戶端進(jìn)行通信,如HTTP、TCP、命名管道、MSMQ、自定義協(xié)議[8],可以根據(jù)允許客戶端的使用范圍來(lái)確定使用的通信協(xié)議。本框架系統(tǒng)因?yàn)檫\(yùn)行在局域網(wǎng)環(huán)境,所以將所有的WCF服務(wù)使用netTcpBinding綁定發(fā)布,它使用TCP協(xié)議。這樣就可以使得WCF服務(wù)限制到只有局部網(wǎng)內(nèi)的用戶可以訪問(wèn)。另外,本系統(tǒng)框架為Web系統(tǒng)框架,為了保證服務(wù)器數(shù)據(jù)的安全,系統(tǒng)只允許合法登錄的注冊(cè)用戶才能使用該系統(tǒng)的功能和數(shù)據(jù),并且要建立詳細(xì)的日志功能,用來(lái)記錄用戶對(duì)基礎(chǔ)數(shù)據(jù)庫(kù)的操作足跡。

2.4 客戶端設(shè)計(jì)

Silverlight采用JIT方式在客戶端運(yùn)行,并不依賴瀏覽器運(yùn)行,而使用自有的運(yùn)行沙箱,可以跨瀏覽器、跨平臺(tái),無(wú)論在哪運(yùn)行,都能提供一致的用戶體驗(yàn)。在各個(gè)層次Silverlight都能得到.NET平臺(tái)的全面支持。

在通信層中,Silverlight支持WCF通信方式,而后者幾乎將目前所有通信類(lèi)全部管理起來(lái)。Silverlight富客戶端通過(guò)引用服務(wù)器端承載運(yùn)行的WCF數(shù)據(jù)服務(wù)并創(chuàng)建該服務(wù)的代理客戶端,這樣,通過(guò)客戶端就能夠方便地調(diào)用WCF服務(wù)中公開(kāi)的用戶功能接口來(lái)使用該WCF服務(wù)的操作和數(shù)據(jù)了[9]。

在客戶端控制邏輯層,采用專(zhuān)門(mén)后臺(tái)工作線程與表現(xiàn)層的UI線程分離,在處理后臺(tái)計(jì)算的同時(shí)不影響界面響應(yīng)。Silverlight客戶端控制邏輯層可以通過(guò)讀取數(shù)據(jù)并且更新外觀顯示,但不會(huì)通過(guò)刷新整體頁(yè)面來(lái)打斷用戶操作。

在表現(xiàn)層Silverlight具有包括矢量圖形支持、硬件加速、3D圖形、圖形變形,同時(shí)還包含原生動(dòng)畫(huà)、特效以及超過(guò)100種控件,而用戶也可以通過(guò)設(shè)計(jì)與開(kāi)發(fā)兩種方式擴(kuò)展動(dòng)畫(huà)、特效和控件[10]。本系統(tǒng)框架使用Visual Studio 2010作為Silverlight客戶端的開(kāi)發(fā)環(huán)境,借助Silverlight的已有控件開(kāi)發(fā)了多個(gè)控件,如各種對(duì)話框、交互窗口中的各種輸入控件、各種信息顯示控件等。就像Visual Studio中的控件使用一樣,大大增加了代碼的重用度,降低了開(kāi)發(fā)工作量。

前面說(shuō)過(guò),本框架的瀏覽模塊功能不需要與服務(wù)器進(jìn)行通信,只與當(dāng)前顯示的數(shù)據(jù)有關(guān),所以將該模塊的功能都放在了客戶端的設(shè)計(jì)中。這樣做的好處有兩點(diǎn):①瀏覽操作是使用頻率最高的操作,由于在操作時(shí)不與服務(wù)器進(jìn)行通信,這大大降低了網(wǎng)絡(luò)通信和服務(wù)器的壓力。②由于操作完全是本地的(網(wǎng)絡(luò)操作會(huì)有延遲),所以操作會(huì)更流暢,用戶體驗(yàn)更好。

3 結(jié)論

經(jīng)驗(yàn)證,基于該框架開(kāi)發(fā)的測(cè)繪院成果管理系統(tǒng),解決了測(cè)繪成果資料多、存儲(chǔ)分散、檢索困難的問(wèn)題。

結(jié)論如下:①本框架較好地利用了B/S架構(gòu)和C/S架構(gòu)二者的優(yōu)點(diǎn)。②將部分計(jì)算模塊轉(zhuǎn)移到了Silverlight客戶端,大大降低了服務(wù)器的計(jì)算壓力。③Silverlight客戶端通過(guò)WCF數(shù)據(jù)服務(wù)實(shí)現(xiàn)對(duì)服務(wù)器端數(shù)據(jù)庫(kù)的在線管理和訪問(wèn)。④該框架為通用框架,類(lèi)似網(wǎng)絡(luò)信息管理系統(tǒng)建設(shè)可以借鑒該框架設(shè)計(jì)。

當(dāng)然,該框架的設(shè)計(jì)也有不足之處,用戶通過(guò)瀏覽器首次訪問(wèn)系統(tǒng)時(shí),需安裝Silverlight插件。不過(guò),它只是一個(gè)客戶端的運(yùn)行環(huán)境而已,后續(xù)系統(tǒng)功能上的更新不再依賴于Silverlight客戶端的更新。

猜你喜歡
數(shù)據(jù)庫(kù)用戶服務(wù)
服務(wù)在身邊 健康每一天
服務(wù)在身邊 健康每一天
服務(wù)在身邊 健康每一天
招行30年:從“滿意服務(wù)”到“感動(dòng)服務(wù)”
商周刊(2017年9期)2017-08-22 02:57:56
數(shù)據(jù)庫(kù)
關(guān)注用戶
關(guān)注用戶
數(shù)據(jù)庫(kù)
關(guān)注用戶
數(shù)據(jù)庫(kù)
主站蜘蛛池模板: 亚洲第一成年网| 青青草a国产免费观看| 国产真实二区一区在线亚洲| av在线手机播放| 日韩在线第三页| 国内a级毛片| 乱人伦中文视频在线观看免费| 少妇高潮惨叫久久久久久| 亚洲中文字幕23页在线| 国产经典在线观看一区| 伦精品一区二区三区视频| 日韩在线播放欧美字幕| 国产91久久久久久| 中国国产高清免费AV片| 婷婷综合在线观看丁香| 国产精品区视频中文字幕| 久久精品人妻中文系列| 麻豆精品国产自产在线| 日韩欧美国产成人| 国产成人免费高清AⅤ| 沈阳少妇高潮在线| a毛片在线| 欧美激情综合| 麻豆国产在线观看一区二区 | 黄色网在线| 99精品这里只有精品高清视频| 1769国产精品视频免费观看| 大乳丰满人妻中文字幕日本| 69精品在线观看| 国产成人a在线观看视频| 国产精品亚洲欧美日韩久久| 996免费视频国产在线播放| 亚洲精品视频免费| 国产成人精品2021欧美日韩| 国产乱肥老妇精品视频| 91在线精品免费免费播放| 欧美日韩国产在线人成app| 97久久免费视频| 一区二区影院| 一级一级一片免费| 亚洲天堂网2014| 亚洲成人动漫在线观看| 1024国产在线| 日本影院一区| 精品无码人妻一区二区| 国产精品视频白浆免费视频| 亚洲综合天堂网| 亚洲欧美另类中文字幕| 中文字幕第1页在线播| 国产一二三区视频| 国产性生大片免费观看性欧美| 久久精品人人做人人| 免费无码AV片在线观看中文| 黄色在线网| 成人午夜视频免费看欧美| 亚洲一区无码在线| 亚洲第一页在线观看| 国产欧美日本在线观看| 伊人久久福利中文字幕| 国产精品美女自慰喷水| 秋霞午夜国产精品成人片| 国产一区二区三区夜色| 99久久精品免费看国产电影| 青青草原国产精品啪啪视频| 亚洲最大综合网| 奇米影视狠狠精品7777| 久久久精品国产SM调教网站| 99免费在线观看视频| 久久精品66| 一级在线毛片| 91po国产在线精品免费观看| 中文字幕亚洲乱码熟女1区2区| 国产三区二区| 亚洲精品欧美日韩在线| 免费精品一区二区h| 日韩免费无码人妻系列| 亚洲第一精品福利| 久久人午夜亚洲精品无码区| 日韩黄色精品| 国产特一级毛片| 久久久久亚洲AV成人人电影软件| 亚洲第一视频免费在线|