亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇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ù)光盤等等。由于資料數(shù)量多、存儲(chǔ)分散,想要查找利用已有的成果就會(huì)變得非常困難,而且經(jīng)年累月,數(shù)據(jù)量還在不停地增長(zhǎng)。隨著地理信息技術(shù)及網(wǎng)絡(luò)技術(shù)的發(fā)展,需要開發(fā)一個(gè)基于局域網(wǎng)測(cè)繪成果資料管理系統(tǒng)?;赟ilverlight富客戶端技術(shù)、WCF數(shù)據(jù)服務(wù)技術(shù)、Web GIS技術(shù)和數(shù)據(jù)庫(kù)技術(shù)來構(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ì)算壓力過大,影響服務(wù)器并發(fā)量和用戶體驗(yàn);C/S架構(gòu)稍好,客戶端能夠適當(dāng)分擔(dān)一部分服務(wù)器端的計(jì)算壓力,用戶體驗(yàn)較好。B/S架構(gòu)的優(yōu)點(diǎn)是客戶端為瀏覽器,無需另外安裝客戶端,系統(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)來管理數(shù)據(jù),以數(shù)據(jù)庫(kù)檢索作為管理資料的屬性檢索技術(shù)支持,以GIS空間檢索作為框架平臺(tái)的空間檢索技術(shù)支持。將成果資料存放在網(wǎng)站服務(wù)器目錄中,提取每項(xiàng)成果資料的元數(shù)據(jù)(成果資料的基本信息),將元數(shù)據(jù)存放在數(shù)據(jù)庫(kù)中,并建立字段索引,方便在檢索的時(shí)候可以快速通過元數(shù)據(jù)檢索到成果資料本身。

        由于服務(wù)器端是不允許客戶端直接操作服務(wù)器數(shù)據(jù)庫(kù)數(shù)據(jù)的,而寄宿在服務(wù)器端的Web服務(wù)是可以操作服務(wù)器數(shù)據(jù)庫(kù)數(shù)據(jù)的,所以客戶端需要通過Web服務(wù)這個(gè)橋梁來間接完成對(duì)服務(wù)器數(shù)據(jù)庫(kù)數(shù)據(jù)的操作[4]。Web服務(wù)通過服務(wù)器向客戶端公開交互接口,這樣客戶端就能連接到并使用這個(gè)Web服務(wù)了。客戶端向服務(wù)器發(fā)送請(qǐng)求,然后服務(wù)器將請(qǐng)求交給Web服務(wù)去處理,Web服務(wù)按照請(qǐng)求檢索數(shù)據(jù)庫(kù),并通過服務(wù)器將結(jié)果發(fā)送回客戶端。Silverlight客戶端根據(jù)用戶需求定制功能模塊[5],主要有瀏覽功能模塊、用戶管理模塊、成果資料管理模塊。用戶通過操作這些功能模塊與服務(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)站來承載WCF服務(wù)。客戶端為基于ArcGIS API for Silverlight開發(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ù),采用表格和記錄的方式來管理數(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編寫功能強(qiáng)大的存儲(chǔ)過程,存儲(chǔ)過程存放在服務(wù)器端,并且預(yù)先編譯過,執(zhí)行速度非常塊[6]。創(chuàng)建了插入、修改和查詢等存儲(chǔ)過程,通過觸發(fā)這些存儲(chǔ)過程來控制相關(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ù),所以客戶端必須通過訪問WCF服務(wù)來間接達(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è)整體,以解釋通過網(wǎng)絡(luò)傳遞的數(shù)據(jù)。契約用來定義數(shù)據(jù)類型、操作、消息交換模式和消息交換使用的傳輸協(xié)議,契約提供了服務(wù)通信所必需的元數(shù)據(jù),契約通常使用與程序語(yǔ)言無關(guān)的XML格式發(fā)布的。WCF有三類契約:服務(wù)契約、數(shù)據(jù)契約、錯(cuò)誤契約和消息契約[7]。

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

        本系統(tǒng)框架有3個(gè)功能模塊,由于瀏覽模塊的功能只與客戶端顯示的當(dāng)前數(shù)據(jù)有關(guān),無需與服務(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ì)象類型:UserInfo、UserRole,其中UserInfo對(duì)象為包含用戶基本信息的對(duì)象類型,UserRole為包含用戶角色信息的對(duì)象類型,所以,還需要定義這兩個(gè)自定義對(duì)象類型的數(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;}//角色名稱

        [DataMember]

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

        }

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

        [DataMember]

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

        }

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

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

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

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

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

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

        前面說過,本框架的瀏覽模塊功能不需要與服務(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)證,基于該框架開發(fā)的測(cè)繪院成果管理系統(tǒng),解決了測(cè)繪成果資料多、存儲(chǔ)分散、檢索困難的問題。

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

        當(dāng)然,該框架的設(shè)計(jì)也有不足之處,用戶通過瀏覽器首次訪問系統(tǒng)時(shí),需安裝Silverlight插件。不過,它只是一個(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)注用戶
        商用汽車(2016年11期)2016-12-19 01:20:16
        關(guān)注用戶
        商用汽車(2016年6期)2016-06-29 09:18:54
        數(shù)據(jù)庫(kù)
        關(guān)注用戶
        商用汽車(2016年4期)2016-05-09 01:23:12
        數(shù)據(jù)庫(kù)
        日本一卡2卡3卡4卡无卡免费网站| 人妻中出中文字幕在线| 久久精品av在线视频| 白嫩丰满少妇av一区二区| 日本japanese丰满多毛| 免费在线亚洲视频| 日韩精品中文字幕人妻中出| 久久一道精品一区三区| 国产成人精品久久一区二区三区 | 久久国产自偷自免费一区100| 丝袜美腿爆炒国产在线观看| 91偷拍与自偷拍亚洲精品86| 亚洲欧美日韩成人高清在线一区| 国内久久婷婷激情五月天| 亚洲精品熟女乱色一区| 国产亚洲av看码精品永久| 人人妻人人澡人人爽人人精品97| 亚洲男女免费视频| 国产精品久久国产三级国| 国产精品18久久久白浆| 久久综合精品国产一区二区三区无码| 国产欧美久久久另类精品| 喷潮出白浆视频在线观看| 噜噜中文字幕一区二区| 久久成人国产精品| 国产美熟女乱又伦av果冻传媒| 日本在线播放不卡免费一区二区| 亚洲av无一区二区三区| 99久久婷婷国产综合精品电影| 自拍 另类 综合 欧美小说| 国产一区精品二区三区四区| 免费无码不卡视频在线观看| 国产麻无矿码直接观看| 亚洲AV手机专区久久精品| 国产不卡在线观看视频| 奇米影视第四色首页| 色综合久久久久久久久五月| 一区二区三区四区在线观看视频| 精品高清免费国产在线| 奇米影视777撸吧| 婷婷色国产精品视频一区|