薛淑敏
(寶雞文理學(xué)院 計算機科學(xué)系,陜西 寶雞 721016)
企業(yè)資產(chǎn)管理(EAM)系統(tǒng)以提高資產(chǎn)可利用率、降低企業(yè)運行維護成本為目標(biāo)[1];以優(yōu)化企業(yè)維修資源為核心,通過信息化手段可以合理安排維修計劃及相關(guān)資源與活動。因此,EAM在企業(yè)信息化管理中起著重要作用。筆者采用基于Silverlight與WCF技術(shù)[2]研究并實現(xiàn)了EAM系統(tǒng)中的通信模型,用來改進現(xiàn)有的EAM系統(tǒng)存在的不足。
Silverlight是一種跨瀏覽器、跨客戶平臺的技術(shù),能夠設(shè)計、開發(fā)和發(fā)布有多媒體體驗與富交互(RIA)的網(wǎng)絡(luò)交互程序。它允許UI設(shè)計和代碼分離,這樣開發(fā)人員就不用擔(dān)心界面的隨意改動,以往的開發(fā)工具是不可能實現(xiàn)的。它不僅提供了豐富的類庫,對于不會美工的開發(fā)人員也可以輕松的做出華麗、美觀的客戶端效果,而且還提供了基于HTTP的跨域網(wǎng)訪問支持,使得Silverlight應(yīng)用程序能夠方便的訪問WCF服務(wù)和ASP.NET XAML服務(wù)等。
WCF[3]是使用托管代碼建立和運行面向服務(wù)應(yīng)用程序的統(tǒng)一框架,它使得開發(fā)者能夠建立一個跨平臺的安全、可信賴、事務(wù)性的解決方案,且能與已有系統(tǒng)兼容協(xié)作。WCF允許應(yīng)用程序?qū)⒐δ芤苑?wù)的方式提供給客戶端服務(wù)請求者,在實現(xiàn)業(yè)務(wù)邏輯封裝的同時實現(xiàn)服務(wù)代碼與客戶端所用技術(shù)與平臺的解耦,降低了系統(tǒng)的耦合性。由于WCF技術(shù)充分支持 WS-Security,WS-Trust和 WS-SecureConversation等安全標(biāo)準(zhǔn),用于用戶認(rèn)證、數(shù)據(jù)完整性驗證、數(shù)據(jù)隱私等多種場合,極大的加強了系統(tǒng)的安全性[4]。
本通信模型使用WCF服務(wù)對EAM系統(tǒng)的業(yè)務(wù)邏輯進行封裝,使業(yè)務(wù)邏輯層與表示層和數(shù)據(jù)庫層進行分離,有利于數(shù)據(jù)持久化操作的重用和改動,并減少重復(fù)代碼,增強了系統(tǒng)部署、開發(fā)和維護的有效性。這里我們設(shè)計一個服務(wù)契約IPulisher,它指定了一個回調(diào)契約ISubscriber。回調(diào)契約ISubscriber提供了Notify()的操作,用來實現(xiàn)數(shù)據(jù)通信。當(dāng)客戶端與服務(wù)端進行消息交互時,WCF服務(wù)會將它們放在一個會話中,然后對會話進行維護。
終結(jié)點提供了WCF服務(wù)的地址、傳輸協(xié)議和傳輸內(nèi)容,當(dāng)Silverlight應(yīng)用程序發(fā)出調(diào)用請求時,客戶端會生成代理,Silverlight應(yīng)用程序通過代理調(diào)用終結(jié)點,實現(xiàn)與WCF服務(wù)的通信,從而降低了系統(tǒng)的耦合性,提高了系統(tǒng)的通信速度,增強了系統(tǒng)的安全性[5]。通信模型如圖1所示。
圖1 通信模型Fig.1 Communicationmodel
此通信模型包括4個主要部分:Silverlight應(yīng)用程序、代理、終結(jié)點、WCF服務(wù)。終結(jié)點提供了WCF服務(wù)的地址、傳輸協(xié)議和傳輸內(nèi)容,當(dāng)Silverlight應(yīng)用程序發(fā)出調(diào)用請求時,客戶端會生成代理,Silverlight應(yīng)用程序通過代理調(diào)用終結(jié)點,實現(xiàn)與WCF服務(wù)的通信,從而降低了系統(tǒng)的耦合性,提高了系統(tǒng)的通信速度,增強了系統(tǒng)的安全性。
WCF服務(wù)包括契約、服務(wù)運行時、消息傳遞、宿主四部分。契約包括數(shù)據(jù)契約、消息契約、服務(wù)契約等,分別用來描述組成某一服務(wù)可創(chuàng)建或使用的每則消息的每個參數(shù),定義特定消息部分,規(guī)定與某一服務(wù)進行通信所需的條件。服務(wù)運行時定義了在服務(wù)實際運行期間發(fā)生的行為,即該服務(wù)的運行時行為。同時定義了發(fā)生錯誤行為時制定服務(wù)出線內(nèi)部錯誤時應(yīng)采取的操作,如何向外部提供元數(shù)據(jù),指定可運行的服務(wù)實例的數(shù)目以及在事務(wù)處理時所進行的操作。消息傳遞部分則由通道組成,定義了對消息進行處理的方式,如對消息的編碼、提供可靠的會話、對消息進行加密等。而WCF服務(wù)不能憑空存在,它必需托管(Hosting)在Windows進程中,被托管的Windows進程被稱為宿主。宿主監(jiān)聽來自客戶端的請求,并作出相應(yīng)的響應(yīng)。WCF服務(wù)模型如圖2所示。
圖2 WCF服務(wù)模型Fig.2 WCF servicesmodel
WCF服務(wù)層是整個應(yīng)用架構(gòu)的核心部分,負(fù)責(zé)處理系統(tǒng)的業(yè)務(wù)邏輯,它決定了目標(biāo)系統(tǒng)的功能。該層對Web表示層提供調(diào)用接口,同時還需要調(diào)用數(shù)據(jù)持久層的接口來進行業(yè)務(wù)邏輯的處理。數(shù)據(jù)持久層位于數(shù)據(jù)源之上,提供訪問相關(guān)數(shù)據(jù)源的調(diào)用接口,同時為WCF服務(wù)層提供服務(wù)[6]。
Silverlight應(yīng)用程序的核心其實是一個用來呈現(xiàn)XAML的瀏覽器插件,通過一種可編寫C#語言的方式,向瀏覽器公開其內(nèi)部的文檔對象模型(DOM)與事件模型。圖3所示是客戶端Silverlight應(yīng)用程序的運行機制,當(dāng)用戶跟Silverlight應(yīng)用程序進行交互的時候,它將發(fā)送事件給C#,在C#的代碼中可以調(diào)用Silverlight應(yīng)用程序的功能。XAML文件會被Silverlight運行時讀取并處理,然后根據(jù)客戶端瀏覽器呈現(xiàn)出Silverlight應(yīng)用程序的用戶界面。
圖3 Silverlight應(yīng)用程序運行機制Fig.3 Silverlight applications operatingmechanism
這里我們對回調(diào)契約ISubscriber進行實現(xiàn),代碼如下:
下邊通過使用客戶端Silverlight應(yīng)用程序調(diào)用WCF服務(wù)來實現(xiàn)用戶進行EAM系統(tǒng)登錄的操作。首先在Silverlight項目中添加服務(wù)引用,將建立的WCF服務(wù)引用進來,同時設(shè)置好命名空間。下面用代碼來實現(xiàn)具體操作:
客戶端Silverlight應(yīng)用程序通過回調(diào)契約ISubscriber來調(diào)用WCF服務(wù),實現(xiàn)了EAM系統(tǒng)登錄的操作,加快了遠(yuǎn)程數(shù)據(jù)傳輸?shù)乃俣?,提高了系統(tǒng)的運行效率。
本文基于Silverlight與WCF技術(shù)研究并實現(xiàn)了EAM系統(tǒng)中的通信模型??蛻舳薙ilverlight應(yīng)用程序通過代理調(diào)用WCF服務(wù),實現(xiàn)客戶端與服務(wù)端的數(shù)據(jù)通信,使EAM系統(tǒng)在滿足了企業(yè)業(yè)務(wù)需求的同時,簡化了系統(tǒng)代碼,提高了系統(tǒng)運行效率,面向服務(wù)的系統(tǒng)架構(gòu)降低了模塊間的耦合性,改善了傳統(tǒng)的B/S模式在用戶體驗等方面的不足。
[1]張俐,張維璽.基于J2EE的固定資產(chǎn)管理系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機工程與設(shè)計,2009,30(16):3797-3800.
ZHANG Li,ZHANG Wei-xi.Design and implementation of fixed assetsmanagementsystem based oon J2EE[J].Computer engineering and design,2009,30(16):3797-3800.
[2]Linaje M,Preeiado JC,Sanchez-Figueroa F.Engineering rich intrenet application user interfaces over legacy web models[J].IEEE Internet Computing,2007,11(6):53-59.
[3]Lowy J,Vasters C.WCF服務(wù)編程[M].張逸,徐寧,譯.北京:機械工業(yè)出版社,2008.
[4]Mcrturyc,Mercurim,Watling N,et al.WCF揭秘[M].趙科平,譯.北京:人民郵電出版社,2008.
[5]吳迪,李立新.WCF安全模型的設(shè)計與實現(xiàn)[J].網(wǎng)絡(luò)技術(shù)安全與應(yīng)用,2008,10(5):12-14.
WU Di,LI Li-xin.Design and implementation of WCF security model[J].The safety of network technology and Application,2008,10(5):12-14.
[6]Orenstein J A.Supporting retrievals and updates in an object/relational mapping system[J].IEEE Data Engineering Bulletin,1999(1):50-54.