到目前為止,WCF 已經獲得了 223 次星藏和 68 次 fork。WCF 是 Windows Communication Foundation 的簡稱,它以 .NET Core 框架為目標平臺,意在讓開發者搭建分布式架構,并以此搭建可跨平臺運行的服務。WCF 最早構建與 Windows 平臺,但隨著 .NET Core 的開源,WCF 在未來也會支持 OS X 和 Linux。
和 .NET 一樣,目前在 GitHub 開源的部分是完整 Windows Communication Foundation 產品的一個子集,其它部分會在后續陸續補全。已經開源的部分主要可以被開發者用來開發 Windows Store WCF 應用,與之相關的具體庫有:
根據微軟官方博客的信息,開源項目中已知可以正常工作的有以下部分:
而已知無法正常啟用的有:
在 Hacker News 上,這則消息一度成為頭條,然而內容下的評論大多偏向負面。很多開發者都抱怨現有的 WCF 過于沉重、繁復。不過,開源之后有助于社區或開發者根據自己的需求定制輕量化的 WCF 框架。
國網寧夏電力有限公司電力科學研究院的研究人員伍弘、馬飛越等,在2018年第10期《電氣技術》雜志上撰文指出,隨著電氣檢測新技術的快速發展,各種用于帶電檢測、停電試驗及在線監測等應用的電氣設備不斷增多,亟需開發出一款通用性好、可擴展性好及交互性強的協同管理系統。
本系統遵循國家電網公司公共信息模型(SG-CIM)對檢測設備數據擴展建模并編碼,采用IEC 61970組件接口規范(CIS)中通用數據訪問服務(GDA)設計數據訪問接口,用WCF構建服務端與客戶端間通信;對開發出的原型程序進行測試,其能夠快速、準確完成對檢測設備的信息管理操作。后續將不斷完善信息管理功能并擴展其他功能組件。
隨著能源經濟的快速發展,電網規模急速擴大,輸變電設備數量激增。這些設備如變壓器、開關、電力電纜等基數增大,發生或可能發生的故障總數也不斷增加。為了準確發現缺陷,及時消除設備運行隱患,或在故障發生后快速查找故障原因,減小設備停電時間,各種基于不同原理的停電、帶電、在線監測類電氣檢測設備不斷增多并投入使用[1-2]。
這類檢測設備具有種類繁多、易損耗等特點,一般多采用分類別、分地點、分優先級存放。然而,這些設備包含信息繁雜,且在設備出入庫、數據信息統計、送檢管理等方面僅依靠物理層面已不能滿足實際要求,亟需一款通用性好、可擴展性好、交互性強的軟件輔助管理。
為了滿足上述管理需求,設計出一款功能完善、性能優越的電氣檢測設備管理系統:
1)針對當前信息管理系統普遍存在的交互性差、通用性和可擴展性不足的問題,且考慮系統實際應用范圍及應用特點,采用分布式架構。
2)遵循國家電網公司公共信息模型SG-CIM(State Grid common information model)對電氣檢測設備資產進行擴展并建模。
3)按照IEC 61970-403通用數據訪問GDA(generic data access)的模式設計并實現資產數據信息訪問接口。
4)綜合考慮現行的多種分布式技術,采用微軟公司的WCF(windows communication foundation)實現系統客戶端與服務端之間的通信。
采用面向對象的方法設計電氣檢測設備管理系統將使其本身變得更加開放,且可根據實際需要繼續添加新的功能組件,這為電力企業一般設備的高效管理指明了方向。
國家電網公司公共信息模型SG-CIM是在研究IEC 61970/IEC 61968的數據模型基礎上,梳理、分析了全網共享交換數據需求,按照國家電網公司的業務組織形式,對國際標準的研究成果進行擴展和優化而形成的公共數據模型,其本質是一種用面向對象的概念(對象類和屬性及他們之間的關系)描述和表示電力系統資源、業務的標準方法。
SG-CIM根據國家電網公司的實際業務進行篩選、分類,劃分為設備、電網、資產等12個主題域,并在各主題域按照公司具體業務進一步劃分,形成二級主題域[3]。各種基于CIM或SG-CIM的數據域分析軟件、配網自動化平臺、人力資源信息平臺等應用也相繼展開研究[4-7]。
WCF是微軟為構建面向服務的應用提供的分布式通信編程框架,是.NET Framework 3.5及以上版本的重要組成部分[8]。其提供了一種構建安全可靠的分布式面向服務系統的統一框架,整合了.NET Remoting、DCOM、Web Service等技術,解決了遠程對象之間的互操作問題[9-11]。
組成WCF服務的基本單位是WCF訪問點(或稱端點),它包含了實現通信所必須的所有信息,如圖1所示。
圖1 WCF的通信模型
相較于其他分布式技術而言,WCF主要有以下幾點優勢:
1)統一性。由于WCF整合多項技術,完全由托管代碼編寫,因此可利用其創建面向服務的應用程序。
2)互操作性。WCF技術最基本的通信機制是簡單對象訪問協議SOAP(simple object access protocol),保證了系統之間的互操作性。
3)安全性。多種Web服務策略被添加到SOAP消息中,用于用戶認證、數據完整性驗證、數據隱私等多種安全策略,這些WCF都提供了支持。
4)兼容性。WCF可與舊有系統兼容,不會影響原有的技術支持。
2.1 系統架構
電氣檢測設備資產管理主要包括設備出入庫管理、信息統計(查詢及更新)管理、送檢管理等。不同的用戶基于不同的需求和權限來訪問系統,而相互之間不能產生干擾,即設計的系統應能滿足多客戶端同時訪問。
因此,該管理系統宜采用瘦客戶端(C/S, Client/Server)模式,即圖模分離模式:客戶端只存儲用戶操作界面等內存量很小的數據,服務端則封裝檢測設備對象的模型、對象間的關系、所要進行訪問的接口及數據庫本體等。在利用分布式通信組件構建客戶端與服務端之間的通信后,多個用戶便能同時遠端調用服務器中的服務。
用統一建模語言UML(unified modeling language)描述管理系統架構如圖2所示。
由圖2可知,系統服務器采用SQL數據庫,核心為服務器管理組件,由其統一管理、調配服務器中其他組件運行,而它又依賴于數據訪問服務組件。
2.2 遵循SG-CIM的數據模型及編碼規則
SG-CIM的設備域描述了企業擁有的物理、電子和機械的設備,包括在電力系統各個環節應用的和在網運行電力及其他設備信息。根據電氣檢測設備的實際特點及管理需要,對設備域包含的二級主題域“變電設備”擴展一個類:檢測設備類(Equ Detection),其固有屬性名、屬性代碼及數據類型見表1。
按照《GB/T 7027—2002信息分類和編碼的基本原則與方法》,遵循SG-CIM,從邏輯上反映電氣檢測設備資源信息,對電氣檢測設備資源進行編碼,包括具體設備名稱、資料信息及所屬設備類別(帶電檢測類、停電試驗類、在線監測類等)。
圖2 電氣檢測設備管理系統架構部署圖
表1 檢測設備(EquDetection)類的固有屬性
為了與現有遵循IEC 61970組件接口規范CIS的系統或應用互聯,電氣檢測設備資源編碼亦采用緊湊的128位(16字節)ID數字,即32位字符串組成。資源ID惟一確定電氣檢測設備,不同系統或應用通過資源ID完成信息交互,并以此識別。
2.3 數據訪問接口
電氣檢測設備數據信息是一種非實時或準實時的靜態數據,而IEC 61970-403定義了一種用于模型數據管理與更新的通用數據訪問接口GDA,利用GDA可準確高效地完成對數據信息的讀、寫操作[12-13]。因此采用GDA設計管理系統的數據訪問接口。
1)數據訪問“讀”服務
用UML描述數據訪問“讀”服務的靜態結構如圖3所示。
圖3中數據訪問“讀”服務的主體類為Resource QueryService,該類主要關聯ResourceID、ClassID、PropertyID(PropertySequence)、Association、ResourceDescription等,分別對應于普通查詢、范圍查詢和關聯查詢(關聯類對象作為主體類的屬性),以及查詢后返回的資源形式;PropertyID和ClassID繼承自ResourceID,因此,類和屬性的標識與對象標識具有相同的編碼規則;客戶端類Client與服務器類Server互相關聯,且一個服務器對應多個客戶端,而一個服務器又組合至少一個Resource QueryService。
當要對目標數據進行有選擇的“讀”訪問時,可在上述“讀”訪問的基礎上增加一個過濾器(過濾節點)用于篩選查詢結果。數據訪問服務“讀”操作流程如下:客戶端訪問服務器時,首先調用服務器中的方法create_res_query()給客戶端實例化一個讀服務對象;其后客戶端再調用該服務對象中的3種方法獲取具體的資源描述;最后將該資源描述返回給客戶端。操作序列如圖4所示。
2)數據訪問“寫”服務
“寫”服務主要用于設備管理員或其他有權限的人員對檢測設備信息進行更新操作?!皩憽狈战柚慕M差異模型(DifferentModel,每組模型為一個資源描述序列)來實現對SG-CIM模型對象的增、刪、改操作。“寫”服務可以無返回值,或返回一組資源標識符,用來通知客戶端“哪些數據發生了怎樣的改變”這一事實。
電氣檢測設備管理系統面向的是多客戶端同時訪問、中遠程操作等問題,因此采用WCF技術構建客戶端與服務器間通信。以服務器中數據訪問接口為例,詳細介紹其與客戶端間通信的建立過程。
圖3 數據訪問“讀”服務靜態類圖
3.1 服務端建立
將數據訪問服務(類)封裝后,通過配置其WCF服務的ABC便可將其公開至客戶端。因此服務端的建立便是ABC的建立。其具體過程如下。
1)添加服務操作。協定(Contract)。WCF服務協定一般包括服務協定(ServiceContract)、操作協定(OperationContract)、數據協定(DataContract),分別對應于數據訪問服務中的接口、方法和類。按照對應規則,在WCF服務庫中依次添加上述協定。
2)添加配置文件。地址(Address)、綁定(Binding)。當添加完各種協定后,再添加應用程序配置文件并配置其WCF的A、B項。
另外,客戶端和服務端之間關于服務的具體信息交互依賴于元數據交換(Metadata Exchange),因此配置文件中還需加上元數據的EndPoint。
3)服務托管。因為所設計的WCF服務是公開的,所以需要一個運行服務的宿主環境,并通過宿主程序加載實現服務。在服務托管后,便能動態監聽端點消息。
圖4 數據訪問“讀”服務序列圖
3.2 客戶端建立
新建客戶端應用程序,運行服務端宿主,在客戶端程序中添加服務引用。系統會根據地址(Address)獲取服務操作及元數據,后臺也會相應生成代理類并配置端點,從而客戶端便能通過代理類的調用實現對服務端服務的調用。
借助.NET平臺,用WCF建立服務端與客戶端之間的通信切實可行,且操作簡便。
3.3 安全訪問控制策略
任何形式的數據訪問都有類似的安全性需求,如何保證安全性是系統設計中極為重要的一環[14]。該電氣檢測設備管理系統主要對種類多、數量大且存放位置多樣的檢測設備信息進行讀、寫訪問,一旦出現安全漏洞,輕則使數據泄露,重則使數據損壞,從而影響設備臺賬、出入庫及送檢管理,特別是設備到期未檢將嚴重影響現場工作。針對實際情況,總結數據訪問時較突出的安全問題如下[15]:
1)用戶非法訪問。用戶未在服務端注冊即能訪問數據。
2)用戶越權訪問。只允許進行讀訪問的用戶進行了寫訪問,只允許訪問部分數據的用戶訪問了其他敏感數據。
3)用戶訪問不受控。用戶的訪問行為不被監視與控制。
針對上述前兩項安全問題,對電氣檢測設備管理系統的用戶進行權限管理,采用用戶/角色/操作權限的模式來實現。用UML用例圖表示的用戶權限如圖5所示。
在客戶端建立日志文檔,實時更新數據訪問組件的事件服務(“寫”服務返回的資源標識符),用以記錄不同用戶在任何時間發生怎樣的數據訪問操作,從而實現對用戶訪問行為的監控及漏洞捕獲。
圖5 系統用戶權限管理用例圖
選擇SQL Server 2008關系型數據庫作為測試用數據庫,并遵循SG-CIM完成電氣檢測設備資源模型封裝;在Visual Studio 2013環境下,編制了數據訪問服務組件及服務端與客戶端的窗體應用程序。通過對目標設備數據進行讀寫操作測試,并驗證數據訪問功能組件和通信的正確性與有效性。
測試環境為兩臺搭載.NET Framework 4.5的普通PC機(2.2GHz Intel Core i3雙核處理器,4G內存,64位Win7操作系統),一臺作為服務器,另一臺作為客戶端。部分測試過程如下所示。
首先服務端應啟動WCF通信服務,客戶端通過WCF鏈接至SQL服務器,驗證登錄用戶名及密碼的正確性并選擇對應功能。客戶端端登錄界面如圖6所示。選擇設備管理系統,后臺根據登錄的用戶名判斷其角色為設備管理員,并提供“查詢設備、增加設備、更新設備、刪除設備”的選項界面,以查詢設備為例,其操作界面如圖7所示。
以操作單條數據為例,測試系統的增、改、查操作所耗時間見表2。結果表明,在該硬件環境下,客戶端對服務端中數據進行訪問具有快速性(毫秒級)。
表2 管理系統數據訪問操作時間測試
圖6 用戶成功登錄界面
圖7 設備管理員查詢設備界面
實測結果表明,客戶端能夠快速、準確地對服務端中數據進行增、刪、改、查,這為實現更高級的設備管理操作奠定了基礎。
數據和通信是C/S應用的基礎,采用面向對象方法,遵循SG-CIM設計電氣檢測設備管理系統可提高其通用性與開放性;采用WCF實現其客戶端與服務端間通信,可提高系統的交互性。以SG-CIM和WCF為核心所設計并實現的管理系統,適用于多用戶訪問及一定范圍內的局域網(也可至廣域網)環境,對硬件及網絡的需求較低。
以其為骨干,可結合實際使用情況進一步擴展其他功能組件,也可按照上述設計思路,擴展報告數據管理等其他非設備類應用。后續將逐步完成功能擴展,并在提高數據訪問效率及系統內的多功能組件高效管理方面進行重點研究。