薛淑敏
(寶雞文理學院 計算機科學系,陜西 寶雞 721016)
企業資產管理(EAM)系統以提高資產可利用率、降低企業運行維護成本為目標[1];以優化企業維修資源為核心,通過信息化手段可以合理安排維修計劃及相關資源與活動。因此,EAM在企業信息化管理中起著重要作用。筆者采用基于Silverlight與WCF技術[2]研究并實現了EAM系統中的通信模型,用來改進現有的EAM系統存在的不足。
Silverlight是一種跨瀏覽器、跨客戶平臺的技術,能夠設計、開發和發布有多媒體體驗與富交互(RIA)的網絡交互程序。它允許UI設計和代碼分離,這樣開發人員就不用擔心界面的隨意改動,以往的開發工具是不可能實現的。它不僅提供了豐富的類庫,對于不會美工的開發人員也可以輕松的做出華麗、美觀的客戶端效果,而且還提供了基于HTTP的跨域網訪問支持,使得Silverlight應用程序能夠方便的訪問WCF服務和ASP.NET XAML服務等。
WCF[3]是使用托管代碼建立和運行面向服務應用程序的統一框架,它使得開發者能夠建立一個跨平臺的安全、可信賴、事務性的解決方案,且能與已有系統兼容協作。WCF允許應用程序將功能以服務的方式提供給客戶端服務請求者,在實現業務邏輯封裝的同時實現服務代碼與客戶端所用技術與平臺的解耦,降低了系統的耦合性。由于WCF技術充分支持 WS-Security,WS-Trust和 WS-SecureConversation等安全標準,用于用戶認證、數據完整性驗證、數據隱私等多種場合,極大的加強了系統的安全性[4]。
本通信模型使用WCF服務對EAM系統的業務邏輯進行封裝,使業務邏輯層與表示層和數據庫層進行分離,有利于數據持久化操作的重用和改動,并減少重復代碼,增強了系統部署、開發和維護的有效性。這里我們設計一個服務契約IPulisher,它指定了一個回調契約ISubscriber?;卣{契約ISubscriber提供了Notify()的操作,用來實現數據通信。當客戶端與服務端進行消息交互時,WCF服務會將它們放在一個會話中,然后對會話進行維護。
終結點提供了WCF服務的地址、傳輸協議和傳輸內容,當Silverlight應用程序發出調用請求時,客戶端會生成代理,Silverlight應用程序通過代理調用終結點,實現與WCF服務的通信,從而降低了系統的耦合性,提高了系統的通信速度,增強了系統的安全性[5]。通信模型如圖1所示。

圖1 通信模型Fig.1 Communicationmodel
此通信模型包括4個主要部分:Silverlight應用程序、代理、終結點、WCF服務。終結點提供了WCF服務的地址、傳輸協議和傳輸內容,當Silverlight應用程序發出調用請求時,客戶端會生成代理,Silverlight應用程序通過代理調用終結點,實現與WCF服務的通信,從而降低了系統的耦合性,提高了系統的通信速度,增強了系統的安全性。
WCF服務包括契約、服務運行時、消息傳遞、宿主四部分。契約包括數據契約、消息契約、服務契約等,分別用來描述組成某一服務可創建或使用的每則消息的每個參數,定義特定消息部分,規定與某一服務進行通信所需的條件。服務運行時定義了在服務實際運行期間發生的行為,即該服務的運行時行為。同時定義了發生錯誤行為時制定服務出線內部錯誤時應采取的操作,如何向外部提供元數據,指定可運行的服務實例的數目以及在事務處理時所進行的操作。消息傳遞部分則由通道組成,定義了對消息進行處理的方式,如對消息的編碼、提供可靠的會話、對消息進行加密等。而WCF服務不能憑空存在,它必需托管(Hosting)在Windows進程中,被托管的Windows進程被稱為宿主。宿主監聽來自客戶端的請求,并作出相應的響應。WCF服務模型如圖2所示。

圖2 WCF服務模型Fig.2 WCF servicesmodel
WCF服務層是整個應用架構的核心部分,負責處理系統的業務邏輯,它決定了目標系統的功能。該層對Web表示層提供調用接口,同時還需要調用數據持久層的接口來進行業務邏輯的處理。數據持久層位于數據源之上,提供訪問相關數據源的調用接口,同時為WCF服務層提供服務[6]。
Silverlight應用程序的核心其實是一個用來呈現XAML的瀏覽器插件,通過一種可編寫C#語言的方式,向瀏覽器公開其內部的文檔對象模型(DOM)與事件模型。圖3所示是客戶端Silverlight應用程序的運行機制,當用戶跟Silverlight應用程序進行交互的時候,它將發送事件給C#,在C#的代碼中可以調用Silverlight應用程序的功能。XAML文件會被Silverlight運行時讀取并處理,然后根據客戶端瀏覽器呈現出Silverlight應用程序的用戶界面。

圖3 Silverlight應用程序運行機制Fig.3 Silverlight applications operatingmechanism
這里我們對回調契約ISubscriber進行實現,代碼如下:

下邊通過使用客戶端Silverlight應用程序調用WCF服務來實現用戶進行EAM系統登錄的操作。首先在Silverlight項目中添加服務引用,將建立的WCF服務引用進來,同時設置好命名空間。下面用代碼來實現具體操作:


客戶端Silverlight應用程序通過回調契約ISubscriber來調用WCF服務,實現了EAM系統登錄的操作,加快了遠程數據傳輸的速度,提高了系統的運行效率。
本文基于Silverlight與WCF技術研究并實現了EAM系統中的通信模型。客戶端Silverlight應用程序通過代理調用WCF服務,實現客戶端與服務端的數據通信,使EAM系統在滿足了企業業務需求的同時,簡化了系統代碼,提高了系統運行效率,面向服務的系統架構降低了模塊間的耦合性,改善了傳統的B/S模式在用戶體驗等方面的不足。
[1]張俐,張維璽.基于J2EE的固定資產管理系統的設計與實現[J].計算機工程與設計,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服務編程[M].張逸,徐寧,譯.北京:機械工業出版社,2008.
[4]Mcrturyc,Mercurim,Watling N,et al.WCF揭秘[M].趙科平,譯.北京:人民郵電出版社,2008.
[5]吳迪,李立新.WCF安全模型的設計與實現[J].網絡技術安全與應用,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.