0引言
電力市場系統(tǒng)[1,2]是以向電力市場運(yùn)行提供安全、強(qiáng)大的軟硬件支持為目標(biāo),同時能夠反映電力生產(chǎn)一般特點(diǎn)、符合電力系統(tǒng)運(yùn)行基本規(guī)律的龐大的信息管理系統(tǒng)。
隨著我國電力系統(tǒng)市場化改革的深入,電力市場系統(tǒng)的數(shù)據(jù)來源越來越廣泛,數(shù)據(jù)量越來越大,要做到數(shù)據(jù)的快速查詢和安全傳輸,對應(yīng)用系統(tǒng)的體系結(jié)構(gòu)要求也越來越高。同時,電力系統(tǒng)系統(tǒng)還應(yīng)對各種信息按照保密級別嚴(yán)格分類,并在此基礎(chǔ)上采取保密措施,保證各種信息、數(shù)據(jù)的整體性和安全性。而傳統(tǒng)的以兩層(two-tier)平臺為基礎(chǔ)的軟件系統(tǒng)將界面和應(yīng)用邏輯都置于客戶端,故對客戶端的要求比較高,而且通常只有一個數(shù)據(jù)源(RDBMS),只能提供較低的安全保障,已經(jīng)不適合電力市場系統(tǒng)發(fā)展的需要。
基于Internet/Intranet的多層次的瀏覽器—服務(wù)器(B/S)體系結(jié)構(gòu),利用成熟的Web應(yīng)用服務(wù)器(WAS)和事務(wù)處理中間件,為應(yīng)用程序提供Web運(yùn)行環(huán)境。在B/S結(jié)構(gòu)中,用戶界面(即瀏覽器)與數(shù)據(jù)庫被網(wǎng)頁服務(wù)器和應(yīng)用服務(wù)器分隔開。網(wǎng)頁服務(wù)器響應(yīng)瀏覽器對網(wǎng)頁的請求,而應(yīng)用服務(wù)器上則存儲著應(yīng)用邏輯,網(wǎng)頁服務(wù)器與應(yīng)用服務(wù)器互相配合實(shí)現(xiàn)服務(wù)器端的各種功能。這種結(jié)構(gòu)將客戶端的復(fù)雜性降到zui低,提高了系統(tǒng)兼容性,而在服務(wù)器端的集總管理使系統(tǒng)的安全性和穩(wěn)定性得到充分保障。這種三層結(jié)構(gòu)將有效地幫助電力市場系統(tǒng)實(shí)現(xiàn)近期和長遠(yuǎn)的目標(biāo)。
國內(nèi)外對多層體系結(jié)構(gòu)編程技術(shù)的研究已經(jīng)非常深入,但對其應(yīng)用于電力市場系統(tǒng)開發(fā)的研究還很欠缺。文獻(xiàn)[3]對應(yīng)用Web技術(shù)的電力市場即時信息系統(tǒng)的體系結(jié)構(gòu)及其可靠性、及時性、安全性等做了介紹。文獻(xiàn)[4]在提及Internet在電力市場中的應(yīng)用時主要集中于即時信息系統(tǒng)。文獻(xiàn)[5]中提出的基于Web的電力市場于Web服務(wù)器的應(yīng)用,沒有邏輯應(yīng)用層的概念。文獻(xiàn)[6]中描述了基于多層架構(gòu)的電力市場系統(tǒng)的總體構(gòu)成、功能模塊、網(wǎng)絡(luò)結(jié)構(gòu)和軟硬件配置,但缺乏對系統(tǒng)整體設(shè)計、軟件體系結(jié)構(gòu)等關(guān)鍵技術(shù)的詳細(xì)介紹。
本文描述了基于Internet/Intranet的電力市場系統(tǒng)的多層(multi-tier)體系結(jié)構(gòu)設(shè)計,在電力市場系統(tǒng)開發(fā)的實(shí)踐基礎(chǔ)上,提出了個具體的實(shí)現(xiàn)方案。
1系統(tǒng)設(shè)計
1.1Internet/Intranet結(jié)構(gòu)
電力市場系統(tǒng)包括主站端即電力市場交易中心的系統(tǒng)和廠站端的子系統(tǒng)。電力市場系統(tǒng)內(nèi)部網(wǎng)(Intranet)由Web服務(wù)器、電子郵件服務(wù)器、數(shù)據(jù)庫服務(wù)器以及應(yīng)用服務(wù)器和客戶端的PC機(jī)組成。
廠站端和主站端的用戶通過Internet.瀏覽器訪問Web服務(wù)器,調(diào)用應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器提供的各種電力市場業(yè)務(wù)處理功能。電子郵件服務(wù)器為電力市場系統(tǒng)各用戶提供電子郵件的發(fā)送和接收服務(wù)。
為了保證電力市場系統(tǒng)的安全,在Intranet與Internet連接時,必須采取必要的安全措施,主要手段是安裝防火墻。
1.2系統(tǒng)體系結(jié)構(gòu)
圖1是本文提出的基于Web技術(shù)的電力市場系統(tǒng)軟硬件體系結(jié)構(gòu)。可以看出,系統(tǒng)的應(yīng)用邏輯集中在服務(wù)器端,服務(wù)器端分為響應(yīng)網(wǎng)頁請求的網(wǎng)頁服務(wù)器和處理各種商務(wù)邏輯的應(yīng)用服務(wù)器。客戶端是簡單的瀏覽器,這實(shí)際上是一種“零客戶端”的解決方案。數(shù)據(jù)庫服務(wù)器與客戶端的*分離保證了系統(tǒng)的數(shù)據(jù)安全性。
圖2是傳統(tǒng)的兩層應(yīng)用體系的一般結(jié)構(gòu)。可以看出,應(yīng)用程序的界面和應(yīng)用邏輯都在客戶端。由于兩層體系結(jié)構(gòu)對客戶端的依賴,及其低下的運(yùn)行效率,現(xiàn)代大型軟件系統(tǒng)正朝著多層、分布的方向發(fā)展,電力市場系統(tǒng)也將必然摒棄傳統(tǒng)的兩層結(jié)構(gòu)。
2系統(tǒng)實(shí)現(xiàn)
本文提出了一個基于Internet/Intranet的電力市場系統(tǒng)的具體實(shí)現(xiàn)方案。文中涉及的關(guān)鍵技術(shù)在這個實(shí)例中均有體現(xiàn)。
2.1J2EE體系結(jié)構(gòu)
基于Internet/Intranet的網(wǎng)絡(luò)編程技術(shù)已經(jīng)成為當(dāng)今開發(fā)新一代大型系統(tǒng)軟件的主流技術(shù),電力市場系統(tǒng)也不例外,而系統(tǒng)的可擴(kuò)展性、可操作性、多樣性、可用性和足夠的靈活性則是主要的考慮內(nèi)容。
這種平臺目前有3種技術(shù)實(shí)現(xiàn)方式:①Sun公司(SunMicrosystem)的Java2企業(yè)平臺(J2EEJava2EnterpriseEdition),其核心技術(shù)
是基于企業(yè)JavaBeans(EnterpriseJavaBeans,即EJBs)的組件體系結(jié)構(gòu);②開放管理組織(OpenManagementGroup)提出的公共對象請求代理結(jié)構(gòu)(commonobjectrequestbrokerarchitecture);③微軟公司提出的分布Internet應(yīng)用結(jié)構(gòu)(WindowsDNA),其核心技術(shù)是使用COM牛模型實(shí)現(xiàn)的服務(wù)器端組件體系結(jié)構(gòu)(DCOM+MTS)。
本文推薦電力市場系統(tǒng)技術(shù)解決方案采用第1種方案,即J2EE,對比其余兩種方案的優(yōu)勢在于以下幾方面:
a.被大量的業(yè)界公司支持統(tǒng)一的工業(yè)標(biāo)準(zhǔn)。J2EE是由許多的業(yè)界公司合作提出的一個開放平臺,擁有業(yè)界的廣泛支持和眾多的中間件軟件提供商(比如IBM,Oracle,Inprise,Sun,Netscape等)。
b.通過*的中間件服務(wù)來快速開拓市場,實(shí)現(xiàn)創(chuàng)新的理念。*的基于J2EE平臺的軟件產(chǎn)品可以方便地使用第三方開發(fā)的中間件,從而減少應(yīng)用開發(fā)人員的工作量,使得開發(fā)人員可以專注于其擅長的商業(yè)邏輯部分的開發(fā),而無須面面俱到。
c.對投資的更好的保護(hù)和對變化的快速適應(yīng)。電力市場系統(tǒng)軟件的發(fā)展對技術(shù)的要求日新月異,新的功能需求層出不窮,而且往往要求在復(fù)雜的互異系統(tǒng)中進(jìn)行部署。服務(wù)器平臺應(yīng)該具有使客戶端迅速適應(yīng)這種變化的能力。一個設(shè)計良好的JZEE應(yīng)用只需做很少量的改動就可以在互異的操作系統(tǒng)中進(jìn)行部署。
2.2WebLogic應(yīng)用服務(wù)器
本文的電力市場系統(tǒng)所采用的多層結(jié)構(gòu)的組成部分如表1所示。
BEA公司的WebLogic應(yīng)用服務(wù)器提供對J2EE組件技術(shù)和服務(wù)的支持。其中:組件技術(shù)包括Servlets,JavaServerPage和Enterprise
JaveBeans;服務(wù)包括標(biāo)準(zhǔn)網(wǎng)絡(luò)通信協(xié)議(HTTP,HTTPS,IIOP等)、對數(shù)據(jù)庫系統(tǒng)訪問(JDBC)和消息系統(tǒng)服務(wù)(JavaMessageService和JavaMail)等。
系統(tǒng)的應(yīng)用邏輯被封裝在這些組件(EJB或者JavaBeans)中,而WebLogic應(yīng)用服務(wù)器提供一個完整的管理平臺來管理組件,并且提供各種服務(wù)供應(yīng)用邏輯使用。這樣,大大加快了開發(fā)時間,開發(fā)人員可以把精力集中在具體應(yīng)用邏輯的開發(fā)上。
3幾個關(guān)鍵技術(shù)
3.1動態(tài)圖表顯示
在電力市場系統(tǒng)中,基于瀏覽器頁面的動態(tài)圖表顯示是一項(xiàng)必須實(shí)現(xiàn)的關(guān)鍵技術(shù)。圖表的動態(tài)顯示和交互操作給電力市場系統(tǒng)操作人員帶來直觀的界面和操作上的便利。
實(shí)現(xiàn)動態(tài)圖表顯示的典型方法有兩種。第1種方法是在服務(wù)器端將從數(shù)據(jù)庫提取的數(shù)據(jù)繪成圖,同時在服務(wù)器端生成圖形文件,并將頁面的鏈接指向該圖形文件。這種方法的zui大好處是生成的圖形文件比較小,對于網(wǎng)絡(luò)速度較慢的用戶(例如遠(yuǎn)程撥號上網(wǎng))比較適用,但是不能交互操作,對不同圖的表現(xiàn)形式(例如曲線圖、柱狀圖、餅圖)之間的轉(zhuǎn)換缺乏靈活性。第2種方法是在客戶端采用嵌入Applet,實(shí)現(xiàn)動態(tài)圖表顯示。Applet就是Java客戶端小程序,適合于實(shí)現(xiàn)一些較復(fù)雜的功能,Apple編譯后可直接嵌入HTML文件中,在瀏覽器中運(yùn)行,可以提供給用戶一個動態(tài)的頁面,用戶在頁面中能夠?qū)崿F(xiàn)與服務(wù)器的交互。本文采用這種方法。但是,由于Applet是運(yùn)行在客戶端的Java小程序,其本身不能對服務(wù)器的數(shù)據(jù)進(jìn)行存取,因此,如何實(shí)現(xiàn)客戶端的Applet與服務(wù)器端的Servlet的數(shù)據(jù)交換是實(shí)現(xiàn)該技術(shù)的核心問題。
實(shí)現(xiàn)Applet與Servlet的數(shù)據(jù)通信有以下3種方式:
a.使用URL/URLConneetion類。URL是一種URL連接類,提供了訪問網(wǎng)絡(luò)資源的方法,因?yàn)槊總€Servlet的標(biāo)識是惟一的,所以利用URL類可
以與遠(yuǎn)端的Servlet通信。
b.使用Socket(套接字)。Socket是網(wǎng)絡(luò)編程的重要實(shí)現(xiàn)途徑。Socket利用主機(jī)名和服務(wù)器端口號作為標(biāo)識進(jìn)行通信。在Java語言中,提供了java.net.Socket和java.net.ServerSocket類庫,它們對Socket編程需要的各種子功能進(jìn)行完整的封裝,前者用于客戶端,后者用于服務(wù)器端。Applet編程中可以利用上述兩個Socket類中封裝的函數(shù)實(shí)現(xiàn)與Servlet的數(shù)據(jù)通信。
C.使用RMI(remotemethodinvocation)。RMI是一種不同Java虛擬機(jī)互相調(diào)用對方對象函數(shù)、啟動對方進(jìn)程的一種機(jī)制。在這種機(jī)制下,某一臺Java虛擬機(jī)上的對象在調(diào)用另外一臺Java虛擬機(jī)上的函數(shù)時,使用的程序語法規(guī)則和在當(dāng)?shù)豃ava虛擬機(jī)上對象間的函數(shù)調(diào)用的語法規(guī)則一致。正是這種機(jī)制給分布計算的系統(tǒng)設(shè)計、編程都帶來了極大的方便。只要按照RMI規(guī)程設(shè)計程序,可以不必過問在RMI之下的網(wǎng)絡(luò)細(xì)節(jié)例如TCP/IP,Socket等,更不必?fù)?dān)心其下面的軟硬件環(huán)境,任意兩臺Java虛擬機(jī)之間的通信*由RMI來負(fù)責(zé)。Applet和Servlet都是運(yùn)行在Java虛擬機(jī)上的對象,因此,可以利用RMI的強(qiáng)大功能進(jìn)行遠(yuǎn)程通信。
3.2分布式應(yīng)用和分布式數(shù)據(jù)庫
3.2.1分布式應(yīng)用
電力市場系統(tǒng)可以采用WebLogic的分布式集群技術(shù),它將各個應(yīng)用分布到不同的服務(wù)器上,然后將這些服務(wù)器組成一個集群(domain)來統(tǒng)一管理,這樣既實(shí)現(xiàn)了應(yīng)用的分布性,又保證了管理的集中性。
具體說來,可以把各個不同的應(yīng)用子系統(tǒng)分布到不用的受控服務(wù)器(managedserver)上,然后用一個管理服務(wù)器(administrationserver)統(tǒng)一管理各個系統(tǒng)。
這樣,各個應(yīng)用分布在不同的機(jī)器上,形成一個彼此之間沒有耦合的體系結(jié)構(gòu),其優(yōu)點(diǎn)如下:
a.易于維護(hù)和管理。各個子系統(tǒng)在初始化時從管理服務(wù)器中讀取各自的配置文件,生成數(shù)據(jù)庫連接池、消息隊(duì)列服務(wù)池和應(yīng)用組件線程池。這些連接池和線程池可以通過管理服務(wù)器動態(tài)進(jìn)行運(yùn)行期配置,而不必重新啟動服務(wù)器。
b、易于升級擴(kuò)充。通過管理服務(wù)器可以新建受控服務(wù)器,將新開發(fā)的應(yīng)用動態(tài)地發(fā)布到新的服務(wù)器上;如果發(fā)現(xiàn)某個服務(wù)器由于訪問量過大而反應(yīng)緩慢,可以動態(tài)地添加一臺新的服務(wù)器來減輕負(fù)荷。
子系統(tǒng)和管理服務(wù)器之間可以通過JMS服務(wù)來互相通信,這樣,管理服務(wù)器上運(yùn)行的監(jiān)控程序可以監(jiān)控當(dāng)前整個系統(tǒng)的運(yùn)行狀態(tài)。其中,在每個子系統(tǒng)上可以都開設(shè)一個消息通信服務(wù),其他系統(tǒng)可以向它發(fā)送消息或者向它請求自己所需的消息。
3.2.2分布式數(shù)據(jù)庫
電力市場系統(tǒng)采用分布式數(shù)據(jù)庫來實(shí)現(xiàn)數(shù)據(jù)的分布式存儲和統(tǒng)一管理。通過對數(shù)據(jù)庫系統(tǒng)進(jìn)行配置,可以把不同應(yīng)用邏輯所使用的數(shù)據(jù)表分布到不同的物理機(jī)器上的數(shù)據(jù)庫中,這樣可以提高訪問效率。而當(dāng)應(yīng)用建立數(shù)據(jù)庫連接時只需要輸入統(tǒng)一的數(shù)據(jù)庫名稱,分布管理服務(wù)器將根據(jù)用戶所申請的數(shù)據(jù)動態(tài)地連接到對應(yīng)的機(jī)器上。這一切對鏈接數(shù)據(jù)庫的應(yīng)用來說是透明的,應(yīng)用本身并不關(guān)心數(shù)據(jù)的具體存儲地點(diǎn)。
3、3系統(tǒng)應(yīng)用級的集群和冗余
通過WebLogic應(yīng)用服務(wù)器的集群功能,系統(tǒng)可以把多個應(yīng)用子系統(tǒng)組成一個集群來提高應(yīng)用的可靠性和可擴(kuò)展性。一個集群對客戶端來說是透明的。集群結(jié)構(gòu)有以下優(yōu)點(diǎn)。
a.可擴(kuò)展性。一個多應(yīng)用服務(wù)器組成的集群的處理容量比單一的應(yīng)用服務(wù)器要大得多,而且新的服務(wù)器可以動態(tài)地加入來擴(kuò)充處理能力。
b.高可靠性。一個集群使用多應(yīng)用服務(wù)器的冗余來防止其中某一臺服務(wù)器崩潰所造成的整個系統(tǒng)癱瘓。當(dāng)一臺服務(wù)器崩潰時,其他服務(wù)器可以繼續(xù)響應(yīng)客戶端的請求。
WebLogic所提供的這些特性對于應(yīng)用的編寫人員和使用人員都是透明的。應(yīng)用編寫者無需關(guān)心服務(wù)器如何配置,只需專注于本身應(yīng)用邏輯的實(shí)現(xiàn),而客戶在向服務(wù)器發(fā)出請求時,也不關(guān)心服務(wù)器內(nèi)部的處理。一個集群可以管理多個受控集群。一個受控集群在該集群的各臺服務(wù)器中提供某種特定的服務(wù)接口。HTTPsession狀態(tài)集群和對象集群是受控集群類型。另外,還有一些受控集群提供JMS消息隊(duì)列和JDBC連接池的集群服務(wù)。
3.4數(shù)據(jù)通信服務(wù)管理
本文介紹的電力市場系統(tǒng)的數(shù)據(jù)通信服務(wù)管理系統(tǒng),建立在IBM公司的MQSeries通信中間件產(chǎn)品基礎(chǔ)之上,主要用VC++語言開發(fā)完成。數(shù)據(jù)通信服務(wù)程序建立了基于“事務(wù)—規(guī)則—任務(wù)”的消息處理機(jī)制,構(gòu)造了一個基于Win32平臺的、標(biāo)準(zhǔn)化的、數(shù)據(jù)打包/解包/傳輸通信接口(協(xié)議);加強(qiáng)了電力市場交易中心與各發(fā)電廠之間數(shù)據(jù)傳輸?shù)姆€(wěn)定性、安全性、可靠性。
數(shù)據(jù)通信服務(wù)管理系統(tǒng)的功能是:基于“事務(wù)—規(guī)則—任務(wù)”的消息處理機(jī)制,就是將電力市場交易中心和各發(fā)電廠的電力市場系統(tǒng)需要交換的數(shù)據(jù),抽象描述為數(shù)據(jù)交換約束——規(guī)則;將可執(zhí)行的規(guī)則分配給具體的事務(wù);通過定義該事務(wù)所要處理的數(shù)據(jù)表,即完成了任務(wù)的定義;然后,數(shù)據(jù)通信服務(wù)程序?qū)κ聞?wù)規(guī)則及時地解釋執(zhí)行,產(chǎn)生不同的消息包,放人MQSeries消息隊(duì)列中;由MQSeries通道負(fù)責(zé)傳輸?shù)侥康牡氐南㈥?duì)列中,目的地的數(shù)據(jù)通信服務(wù)程序從隊(duì)列中取得消息包,將消息包解釋成有意義的數(shù)據(jù)庫操作命令,對目的地數(shù)據(jù)庫操作,或?qū)⑾忉尦捎幸饬x的警示信息,給相應(yīng)的應(yīng)用程序使用。
3.5網(wǎng)絡(luò)傳輸安全性
為了保證電力市場交易中心及發(fā)電廠數(shù)據(jù)傳輸和消息傳輸?shù)陌踩裕娏κ袌鱿到y(tǒng)可采用基于SecureSocketsLayer(SSL)和TransportLayerSecurity(TLS)協(xié)議的TheJavaSecureSocketExtension(JSSE)體系結(jié)構(gòu)進(jìn)行網(wǎng)絡(luò)編程。其功能包括數(shù)據(jù)加密、服務(wù)器端和客戶端的安全認(rèn)證以及數(shù)據(jù)完整性的保障。
4范例
本文將結(jié)合一個實(shí)際的電力市場系統(tǒng)中預(yù)調(diào)度計劃子系統(tǒng)的實(shí)現(xiàn),對所提出的方案進(jìn)行更明確的闡述。
圖3是預(yù)調(diào)度計劃管理系統(tǒng)的實(shí)際結(jié)構(gòu)。客戶端是普通的n瀏覽器,用戶在執(zhí)行查看預(yù)調(diào)度計劃結(jié)果數(shù)據(jù)、設(shè)置計算參數(shù)等功能時,通過操作界面向網(wǎng)頁服務(wù)器發(fā)出請求,網(wǎng)頁服務(wù)器通過應(yīng)用服務(wù)器訪問數(shù)據(jù)庫并反饋給用戶;另一方面,用戶在執(zhí)行預(yù)調(diào)度計劃核心算法時,由客戶端向網(wǎng)頁服務(wù)器發(fā)出計算請求,網(wǎng)頁服務(wù)器調(diào)用計算服務(wù)器上的核心算法,同時接受其返回的信息,并將該信息反饋給客戶端;計算結(jié)束后,用戶又可以通過客戶端訪問網(wǎng)頁服務(wù)器,查看計算結(jié)果。整個過程牽涉到的各臺服務(wù)器分工明確,負(fù)擔(dān)合理,安全性得到了充分保證。
通過此例可以看出,本文提出的基于Web技術(shù)的電力市場系統(tǒng)設(shè)計是可行的,它能充分保證系統(tǒng)運(yùn)行的性和安全性。其中采用SSL加密技術(shù)對TCP/IPSocket通信協(xié)議提供安全保證。