一種跨平臺軟總線的通信裝置及軟總線的制作方法
【專利摘要】本發(fā)明適用于計算機(jī)【技術(shù)領(lǐng)域】,提供了一種跨平臺軟總線的通信裝置及軟總線,所述裝置包括:通信線程單元,用于維護(hù)雙網(wǎng)相同業(yè)務(wù)端口的兩個不同的連接;線程池容器,用于作為所述通信線程單元的管理容器;數(shù)據(jù)隊列緩存單元,用于緩存接收的數(shù)據(jù)隊列及發(fā)送的數(shù)據(jù)隊列;連接處理器,用于預(yù)處理所述數(shù)據(jù)隊列;業(yè)務(wù)適配器,用于歸類所述雙網(wǎng)相同業(yè)務(wù)端口的兩個不同的連接及當(dāng)一網(wǎng)段網(wǎng)絡(luò)異常時協(xié)助網(wǎng)絡(luò)切換。本發(fā)明通過通信線程單元、線程池容器、數(shù)據(jù)隊列緩存單元、連接處理器、業(yè)務(wù)適配器,實現(xiàn)了通信方式的統(tǒng)一化,易于維護(hù)。
【專利說明】一種跨平臺軟總線的通信裝置及軟總線
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計算機(jī)【技術(shù)領(lǐng)域】,尤其涉及一種跨平臺軟總線的通信裝置及軟總線。【背景技術(shù)】
[0002]隨著電力軟件功能模塊化設(shè)計的發(fā)展,模塊之間網(wǎng)絡(luò)通信交互是必須面對的問題。由于不同開發(fā)人員開發(fā)不同模塊而采用各自風(fēng)格的通信開發(fā)模式,而且當(dāng)每個開發(fā)人員重新開發(fā)通信模塊時,還會發(fā)生多人犯同樣錯誤的問題,從而影響了開發(fā)效率。而且由于每個開發(fā)人員的編程風(fēng)格和編程經(jīng)驗的不同,每個人輸出的通信代碼會存在較大差異,在出現(xiàn)問題的時候較難維護(hù),也會出現(xiàn)多人重復(fù)犯同樣錯誤的情況。
[0003]綜上所述,現(xiàn)有技術(shù)中的通信模塊差異大,難以維護(hù)。
【發(fā)明內(nèi)容】
[0004]本發(fā)明實施例的目的在于提供一種跨平臺軟總線的通信裝置,旨在解決現(xiàn)有技術(shù)中的通信模塊差異大,難以維護(hù)的問題。
[0005]本發(fā)明實施例是這樣實現(xiàn)的,一種跨平臺軟總線的通信裝置,所述裝置包括: 通信線程單元,用于維護(hù)雙網(wǎng)相同業(yè)務(wù)端口的兩個不同的連接;
線程池容器,用于作為所述通信線程單元的管理容器;
數(shù)據(jù)隊列緩存單元,用于緩存接收的數(shù)據(jù)隊列及發(fā)送的數(shù)據(jù)隊列;
連接處理器,用于預(yù)處理所述數(shù)據(jù)隊列;
業(yè)務(wù)適配器,用于歸類所述雙網(wǎng)相同業(yè)務(wù)端口的兩個不同的連接及當(dāng)一網(wǎng)段網(wǎng)絡(luò)異常時協(xié)助網(wǎng)絡(luò)切換。
[0006]本發(fā)明實施例還提供了一種軟總線,所述軟總線包括上述的裝置。
[0007]本發(fā)明實施例與現(xiàn)有技術(shù)相比,有益效果在于:通過通信線程單元、線程池容器、數(shù)據(jù)隊列緩存單元、連接處理器、業(yè)務(wù)適配器,實現(xiàn)了通信方式的統(tǒng)一化,易于維護(hù)。
【專利附圖】
【附圖說明】
[0008]圖1是本發(fā)明實施例提供的跨平臺軟總線的通信裝置的邏輯結(jié)構(gòu)示意圖;
圖2是本發(fā)明實施例提供的跨平臺軟總線的通信裝置的通信線程單元的線程分類示意圖;
圖3是本發(fā)明實施例提供的跨平臺軟總線的通信裝置的線程池容器的示意圖;
圖4是本發(fā)明實施例提供的跨平臺軟總線的通信裝置的線程與連接處理器和適配器關(guān)系不意圖;
圖5是本發(fā)明實施例提供的軟總線的應(yīng)用部署示意圖。
【具體實施方式】
[0009]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0010]本發(fā)明實施例提供的實施方案如下:
請參閱圖1至圖4,本發(fā)明實施例提供了一種跨平臺軟總線的通信裝置,所述裝置包
括:
通信線程單元101,用于維護(hù)雙網(wǎng)相同業(yè)務(wù)端口的兩個不同的連接;
線程池容器102,用于作為所述通信線程單元的管理容器;
數(shù)據(jù)隊列緩存單元103,用于緩存接收的數(shù)據(jù)隊列及發(fā)送的數(shù)據(jù)隊列;
連接處理器104,用于預(yù)處理所述數(shù)據(jù)隊列;
業(yè)務(wù)適配器105,用于歸類所述雙網(wǎng)相同業(yè)務(wù)端口的兩個不同的連接及當(dāng)一網(wǎng)段網(wǎng)絡(luò)異常時協(xié)助網(wǎng)絡(luò)切換。
[0011]本實施例中,通信線程單元101中,將通信線程分為兩大類,三個小類,即TCP線程和UDP線程2個大類,TCP服務(wù)角色、TCP客戶端角色和UDP線程3個小類。每個線程負(fù)責(zé)維護(hù)雙網(wǎng)相同業(yè)務(wù)端口的兩個不同的連接(TCP線程)。
[0012]本實施例中,線程池容器102,作為各種類型通信線程的管理容器,或稱線程管理員。線程池容器102負(fù)責(zé)對通信線程如TCP線程和UDP線程進(jìn)行創(chuàng)建、銷毀、查詢、調(diào)度、重用、回收等管理任務(wù)。線程池容器102也是軟總線同其他軟件模塊的交互界面,其他模塊使用軟總線就是通過線程池容器102對外開放的接口來進(jìn)行的。線程池容器102,將線程池分工作線程池和緩存線程池兩個線程池;工作線程池即正在進(jìn)行通信工作的線程容器,緩存線程池是備用線程容器;當(dāng)有新的連接建立時,則將所述緩存線程池中的相應(yīng)線程調(diào)度到所述工作線程池中,當(dāng)有連接斷開時,則釋放所述工作線程中的相應(yīng)線程,并將釋放的線程回收為緩存線程,調(diào)度到所述緩存線程池中。
[0013]本實施例中,數(shù)據(jù)隊列緩存單元103,作為每個連接待處理的數(shù)據(jù)緩存池,用于緩存接收數(shù)據(jù)隊列和發(fā)送數(shù)據(jù)隊列,數(shù)據(jù)隊列緩存單元103與TCP發(fā)送緩沖和接收緩沖類似,通過緩存接收數(shù)據(jù)隊列和發(fā)送數(shù)據(jù)隊列,可確保在數(shù)據(jù)高峰的時候不會因暫時數(shù)據(jù)處理能力的不足對數(shù)據(jù)通信的影響或丟失數(shù)據(jù)。
[0014]本實施例中,連接處理器104,具體用于對數(shù)據(jù)隊列進(jìn)行維護(hù)、操作的數(shù)據(jù)預(yù)處理,也就是數(shù)據(jù)隊列的直接管理者。
[0015]本實施例中,數(shù)據(jù)分為兩種業(yè)務(wù)類型,當(dāng)同第三方系統(tǒng)通信時,采用不帶報文頭的數(shù)據(jù)類型,在內(nèi)部系統(tǒng)中采用帶報文頭的數(shù)據(jù)類型。在內(nèi)部系統(tǒng)中采用帶報文頭的數(shù)據(jù)類型有助于防止非法數(shù)據(jù)對系統(tǒng)的干擾,保證連接的合法性,當(dāng)有非法的連接時將會被斷開。
[0016]本實施例中,業(yè)務(wù)適配器105是專門為支持雙網(wǎng)通信而設(shè)置的。
[0017]所述通信線程單元采用ACE跨平臺通信技術(shù)。
[0018]本實施例中,所述通信線程單元101包括對外提供接口的XPCOM組件。
[0019]本實施例中,所述裝置還包括:
心跳檢測單元,用于發(fā)送自定義心跳消息,當(dāng)在預(yù)定時間內(nèi)未收到響應(yīng)消息或正常的通信數(shù)據(jù)包時,則重新建立連接或切換網(wǎng)絡(luò)。
[0020]本實施例中,跨平臺軟總線的通信裝置具體為C/C++語言下的跨平臺軟總線的通
IB 目.ο[0021]本實施例的跨平臺軟總線的通信裝置,采用ACE跨平臺通信技術(shù)。利用ACE跨平臺通信特性,針對ACE機(jī)制較復(fù)雜,熟練掌握、使用較難的特點,采用面向?qū)ο蠹夹g(shù)對其再封裝,再次降低使用復(fù)雜性。
[0022]本實施例的跨平臺軟總線的通信裝置,采用線程池。ACE不僅對跨平臺通信socket編程進(jìn)行了封裝,還使得線程這個概念在各平臺上進(jìn)行了抽象,使得多線程的編程可以非常簡單。即使在不支持線程的平臺上也能夠運行該多線程代碼。對socket連接的管理采用線程池方式管理通信線程單元101同其他模塊之間的通信通道,有了線程池容器102的管理,socket網(wǎng)絡(luò)通信資源就能得到很好的管理,避免由于失誤造成資源浪費的現(xiàn)象。
[0023]本實施例的跨平臺軟總線的通信裝置,采用XPCOM跨平臺組件技術(shù)。XPCOM是一個跨平臺組件模型,它的全稱為Cross Platform Component Object Module。XPCOM實現(xiàn)了一個框架(framework),這個框架中,它允許開發(fā)者打破單一整體的軟件項目,而分解為多個更小的模塊化碎片(pieces),這些碎片也即組件(components)。XPCOM組件對外提供接口,對于XPCOM接口,需要考慮2個因素:
(I)、接口與按照契約(Contract)編程:一個接口在組件與客戶程序之間達(dá)成契約。并沒有任何強制措施保證認(rèn)同這個契約,但是忽略它會是致命的。在基于組件的編程中,組件保證它提供的接口是不變的。不同版本的組件都要提供同樣的訪問方法。這就與使用它的客戶程序達(dá)成了一種契約.從這種角度來說,基于組件的編程通常也稱為按照契約編程。
[0024](2)接口與封裝:組件邊界之間的抽象對軟件的可維護(hù)性與可重用性是至關(guān)重要的。
[0025]本實施例的跨平臺軟總線的通信裝置,采用面向?qū)ο蠹夹g(shù),利用面向?qū)ο蟮娜齻€基本特征(封裝、繼承、多態(tài))可以使軟件實現(xiàn)易維護(hù)、高質(zhì)量、高效率、易擴(kuò)展的目的和好處。同時由于ACE和XPCOM也都采用的面向?qū)ο蠹夹g(shù),所以軟總線采用面向?qū)ο蠹夹g(shù)也可以使軟總線從整體框架上看是一個面向?qū)ο蠹夹g(shù)的聚合體,實現(xiàn)結(jié)構(gòu)清晰,代碼整潔的效果。
[0026]本實施例的跨平臺軟總線的通信裝置,支持雙網(wǎng)技術(shù)。電力軟件特別是監(jiān)控軟件,為了保證通信可靠性,通常采用雙網(wǎng)架構(gòu)。軟總線支持雙網(wǎng)就能保證程序模塊在一個網(wǎng)段癱瘓的情況下無縫切換到另一個網(wǎng)段運行,不丟失數(shù)據(jù)包,從而保證通信可靠性。
[0027]本實施例的跨平臺軟總線的通信裝置,利用心跳檢測單元??膳袛郥CP連接是否穩(wěn)定,在通道閑時發(fā)送自定義心跳,對方收到后馬上回復(fù)心跳。如果在規(guī)定的時間段內(nèi)未能收到對方的心跳信息或正常通信數(shù)據(jù)包,則判斷該連接已經(jīng)斷掉,自動重新建立連接或切換網(wǎng)段。
[0028]本實施例的跨平臺軟總線的通信裝置,采用雙數(shù)據(jù)類型模式。一種數(shù)據(jù)類型作為系統(tǒng)內(nèi)部數(shù)據(jù),帶內(nèi)部數(shù)據(jù)報文頭(對內(nèi)通信,支持雙網(wǎng));另一種數(shù)據(jù)類型作為同第三方通信數(shù)據(jù)格式(對外通信,不支持雙網(wǎng)),不帶數(shù)據(jù)報文頭,這個在連接建立后確定。
[0029]本實施例的跨平臺軟總線的通信裝置,可以應(yīng)用于以下場景:電網(wǎng)調(diào)度自動化系統(tǒng)主站系統(tǒng)各服務(wù)模塊之間的通信中間件;配電自動化系統(tǒng)主站系統(tǒng)各服務(wù)模塊之間的通信中間件;變電站自動化系統(tǒng)主站系統(tǒng)各服務(wù)模塊之間的通信中間件;集控站主站系統(tǒng)各服務(wù)模塊之間的通信中間件;其他監(jiān)控系統(tǒng)各服務(wù)模塊之間的通信中間件。[0030]本實施例的跨平臺軟總線的通信裝置,可作為動態(tài)庫和系統(tǒng)軟件一起部署到服務(wù)器或PC上,在系統(tǒng)軟件需要進(jìn)行網(wǎng)絡(luò)通信時,向軟總線請求創(chuàng)建網(wǎng)絡(luò)連接,即向軟總線中的線程管理員請求調(diào)度線程并進(jìn)行相應(yīng)的連接處理。
[0031]本實施例提供的跨平臺軟總線的通信裝置,采用組件技術(shù)、單元化技術(shù)和面向?qū)ο蠹夹g(shù),以動態(tài)庫的形態(tài)提供給開發(fā)人員和運行環(huán)境,從而實現(xiàn)解決電力軟件單元化開發(fā)過程中對于通信功能的跨平臺和重用要求問題的目的??缙脚_技術(shù)保證軟件能在混合平臺環(huán)境下運行。
[0032]本實施例提供的跨平臺軟總線的通信裝置,使用者只需要使用軟件對外提供的接口就可以非常方便地進(jìn)行網(wǎng)絡(luò)編程,將通信容錯處理等工作交給軟總線內(nèi)部處理,保證不會因通信原因引起健壯性降低。
[0033]本發(fā)明實施例還提供了一種軟總線,所述軟總線包括上述的裝置。
[0034]圖5示意了本實施例提供的軟總線在軟件架構(gòu)中的部署位置,軟總線作為動態(tài)庫和系統(tǒng)軟件一起部署到服務(wù)器或PC上,在系統(tǒng)軟件需要進(jìn)行網(wǎng)絡(luò)通信時,向軟總線請求創(chuàng)建網(wǎng)絡(luò)連接,即向軟總線中的線程管理員請求調(diào)度線程并進(jìn)行相應(yīng)的連接處理。
[0035]本發(fā)明的跨平臺軟總線的通信裝置及軟總線,通過通信線程單元、線程池容器、數(shù)據(jù)隊列緩存單元、連接處理器、業(yè)務(wù)適配器,實現(xiàn)了通信方式的統(tǒng)一化,易于維護(hù)。
[0036]以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種跨平臺軟總線的通信裝置,其特征在于,所述裝置包括: 通信線程單元,用于維護(hù)雙網(wǎng)相同業(yè)務(wù)端口的兩個不同的連接; 線程池容器,用于作為所述通信線程單元的管理容器; 數(shù)據(jù)隊列緩存單元,用于緩存接收的數(shù)據(jù)隊列及發(fā)送的數(shù)據(jù)隊列; 連接處理器,用于預(yù)處理所述數(shù)據(jù)隊列; 業(yè)務(wù)適配器,用于歸類所述雙網(wǎng)相同業(yè)務(wù)端口的兩個不同的連接及當(dāng)一網(wǎng)段網(wǎng)絡(luò)異常時協(xié)助網(wǎng)絡(luò)切換。
2.如權(quán)利要求1所述的裝置,其特征在于,所述通信線程單元包括TCP線程和UDP線程。
3.如權(quán)利要求2所述的裝置,其特征在于,所述線程池容器用于對所述TCP線程和UDP線程進(jìn)行創(chuàng)建、銷毀、查詢、調(diào)度、重用或回收。
4.如權(quán)利要求1所述的裝置,其特征在于,所述線程池容器包括工作線程池和緩存線程池。
5.如權(quán)利要求4所述的裝置,其特征在于,當(dāng)有新的連接建立時,則將所述緩存線程池中的相應(yīng)線程調(diào)度到所述工作線程池中,當(dāng)有連接斷開時,則釋放所述工作線程中的相應(yīng)線程,并將釋放的線程調(diào)度到所述緩存線程池中。
6.如權(quán)利要求1所述的裝置,其特征在于,所述通信線程單元采用ACE跨平臺通信技術(shù)。
7.如權(quán)利要求6所述的裝置,其特征在于,所述通信線程單元包括對外提供接口的XPCOM組件。
8.如權(quán)利要求1所述的裝置,其特征在于,所述裝置還包括: 心跳檢測單元,用于發(fā)送自定義心跳消息,當(dāng)在預(yù)定時間內(nèi)未收到響應(yīng)消息或正常的通信數(shù)據(jù)包時,則重新建立連接或切換網(wǎng)絡(luò)。
9.一種軟總線,其特征在于,所述軟總線包括權(quán)利要求1至8中任一項所述的裝置。
【文檔編號】H04L12/24GK103701788SQ201310706996
【公開日】2014年4月2日 申請日期:2013年12月20日 優(yōu)先權(quán)日:2013年12月20日
【發(fā)明者】吳夙, 胡勇 申請人:深圳市金宏威技術(shù)股份有限公司