摘要:在研究了基于.NET的WCF(Windows Communication Foundation)技術的基礎上,設計了一個基于WCF的分布式數據庫技術的經營預警系統,解決了數據分散和集中管理的矛盾。一個中心信息處理系統,多個WCF服務,解決了各分散電廠的數據差異性問題。由于各個服務相對獨立,因此全局服務操作不會因某一個數據庫的故障而停止全部操作或引起性能瓶頸等問題[1]。
關鍵詞:WCF;服務;SOA;分布式;預警系統
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2010)03-721-02
The Application Research of WCF Technology in Production and Operation of Early Warning System
GOU Ting, HE Qun-yi
(Information and Control Engineering College, Xi'an University of Architecture and Technology, Xi'an 710055, China)
Abstract: Based on researching the WCF technology of the .NET in this paper, it designed a WCF-based distributed database technology, a operational early warning system to resolve the conflicts of the data decentralized and centralized management. A central information processing system and multiple WCF services, which solve the problem of data difference from the scattered power plant. Because each service is relatively independent, global service operation will not stop all operations or cause performance bottlenecks and other issues,because of the particular database's fault.
Key words: WCF; Services; SOA; Distributed; Early Warning System
1 概述
一個分布式數據庫是由分布于計算機網絡上的多個邏輯相關的數據庫組成的集合,網絡中的每個結點都具有獨立處理的能力,可執行局部應用,同時每個結點通過網絡通訊系統也能執行全局應用[1]。
將WCF技術引入分布式數據庫系統中,使系統具有更強的互操作性、兼容性、統一性以及安全性。WCF技術提供跨平臺的接口,適用于不同開發環境和編程語言,增強了系統的可擴展性。
2 WCF概述
WCF(原代號為Indigo)是基于Windows平臺下開發和部署服務的軟件開發包。是微軟基于SOA(Service Oriented Architecture)推出的.Net 平臺下的框架產品,它代表了軟件架構設計與開發的發展方向,在微軟的戰略計劃中占有非常重要的地位。WCF是一個用于創建和運行分布式系統的技術集合,使用它能創建安全的(Secure)、可靠的(Reliable)、跨平臺的(transacted messaging along with interoperability)分布式解決方案。它的面向服務的編程模型整合了.Net平臺下以往全部的分布式開發技術,例如.Net Remoting,Asp.Net Xml Web Service,MSMQ,WSE和Enterprise Service等,它可以支持跨應用程序域(AppDomain),進程(Process),網絡(NetWork)進行數據通訊,而且能寄宿在諸如IIS,Console等多種宿主(Host)中。是微軟在SOA領域推出的一款主打產品[2]。
3 WCF的技術要素
作為基于SOA的一個框架產品,WCF最重要的就是能夠快捷的創建一個服務(Service)。如圖1所示,一個WCF Service由三部分構成,如圖1所示。
1) Service Class:一個標記了[Service Contract]Attribute的類,在其中可能包含多個方法。除了標記一些WCF特有的Attribute外,這個類與其他類沒有什么區別。
2) Host(宿主):可以是應用程序,進程等,它是WCF Service運行的環境。
3) Endpoints:可以是一個,也可以是一組,它是WCF實現通信的核心要素。
一個Endpoint 由三部分組成:Address,Binding,Contract。為便于記憶,我們可以將這種管理服務的方式簡稱為服務的ABC[2]。
Address是Endpoint的網絡地址,它標記了消息發送的目的地。在WCF中,它解決了服務在哪里的問題。
Binding描述的是如何發送消息,例如消息發送的傳輸協議(如TCP,HTTP),安全(如SSL,SOAP消息安全)。它實現的是在客戶端和服務端進行通訊的底層細節。
Contract則描述的是消息所包含的內容,以及消息的組織和操作方式,任何一個分布式應用程序,它之所以能夠互相傳遞信息,都是事先制定好數據交換規則的,這個規則正是交換數據的雙方都能彼此理解對方的依據,此規則即為契約。
WCF同以往的分布式技術相比其最大的優勢在于統一和簡化了分布式技術的應用。以前使用不同的分布式技術,寫法大不相同。而現在,只需要進行Attribute標記,再加上配置就可以實現不同技術下的分布式通信。
4 系統分析與設計
熱電廠生產經營預警系統是一個基于WCF的分布式數據庫應用系統,實現熱電廠整體的生產經營預警機制。本系統適用于單位分散的各個部門,允許各部門將其常用數據存貯在本地,實施就地存放就地使用,降低通訊費用,并可提高響應速度。本系統是熱電廠為加強企業生產經營管理,針對電煤價格上漲波動和發電成本增支壓力巨大的實際狀況,在各個分散的單位建立起規范的生產經營預警機制,對經營指標實施動態控制管理,從而使經濟效益指導生產。
本預警系統在設計時從整體上劃分為三層:數據層,中間層和表示層。數據層包含數據存儲和與之交互的組件或服務。中間層包含一個或多個組件服務,WCF的服務主要在這一層部署。表示層指從中間層獲得信息并將結果顯示給客戶機[3]。如圖2所示。
生產經營預警系統的架構圖如圖3所示。
5 系統基本功能設計
基于WCF的生產經營預警系統基本功能包括WCF服務功能與中心服務站功能,WCF服務功能負責將地理位置分散的各電廠的數據從各自的數據庫的表中讀取出來,以供中心服務站對各分散電廠數據的調用。中心服務站是本預警系統的核心部分,其功能包括以下三大模塊:
基礎資料管理:包括基礎資料管理,機組數據錄入狀態查詢,綜合指標查詢。此模塊負責錄入燃料相關信息,入廠標煤單價信息,利潤相關信息及主要生產指標等信息,并對指定日期的綜合指標進行查詢。
生產經營預警:它是生產經營預警系統的核心模塊,主要功能包括邊際利潤排序圖,機組負荷率曲線圖,平均電價及單位成本費用,入廠標煤單價排序圖,運行機組單位盈利能力排序圖,運行機組現金流預警,運行機組敏感性分析。以上多個功能對錄入數據進行處理和分析,并將結果以圖表的形式直觀的顯示出來,使決策者對邊際利潤,機組負荷率,機組敏感性等多條信息進行分析和判斷從而做出更準確的決策。
系統管理:包括角色權限設置,機組信息管理,系統用戶管理。此模塊可以注冊和查詢角色,機組及員工信息。
6 系統服務的實現
由于地理位置不同的各電廠根據具體需要創建的時間不一致,各電廠在創建時考慮到可靠性與可擴展性等方面的問題,各自創建了獨立的數據庫,每個局部數據庫存在一個數據字典。由于各個電廠的邊際利潤,入廠標煤單價等數據各有差異,數據庫設計和數據編碼也各不一樣,這就使得系統在設計時必須要考慮跨地域、跨平臺性,并且需要建立一個統一的規范來提取、分析計算、匯總各個電廠的數據信息,最終以統一的格式將發電信息顯示出來,以備相關部門查看和管理。
服務的設計主要放到了中間層來實現,服務的具體實現分以下幾個步驟:
1) 定義并實現WCF服務契約
各部門創建WCF服務,并將服務代碼放入相應的服務類中,服務接口對外開放。WCF服務實現對各個部門數據的提取和發送。
2) 啟動WCF服務,創建并配置WCF客戶端
服務創建成功后,中心服務站通過internet將分散在各地的服務添加進來,通過引用各服務的接口,將所需數據讀取出來。中心服務器對各個WCF服務引用的配置文件如下:
bindingConfiguration=\"WSHttpBinding_IService1\" contract=\"ServiceReference1.IService1\" name=\"WSHttpBinding_IService1\">
name=\"WSHttpBinding_IService11\">
……
3) 使用WCF客戶端
對所得數據進行分析計算,將最終數據信息返回給瀏覽器,供客戶端查看,使之對顯示結果進行分析。
7 結束語
基于.NET的WCF技術是分布式編程領域的一個新臺階,本文簡要的介紹了WCF技術的基本知識,并將其應用到生產預警系統中,使系統高度靈活,展現了基于WCF技術開發分布式數據庫系統的編程方法及程序設計技巧[4]。
參考文獻:
[1] 分布式數據庫的連接[EB/OL].http://search.download.csdn.net/search/,2009.5.
[2] (美)羅威(Lowy,J). wcf服務編程[M]. 張逸,徐寧 譯. 機械工業出版社,2008.1.
[3] 付仲愷.構建WCF面向服務的應用程序系列課程[R].2007.7.
[4] Jillzhang. WCF從理論到實踐[EB/OL].http://search.download.csdn. net/search/wcf, 2009.5.
[5] 付磊.ASP.NET編程實作教程[M].北京希望電子出版社,2002.
[6] 王珊,薩師煊.數據庫系統概論[M].高等教育出版社.