国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

電信動(dòng)力監(jiān)控中高性能TCP/IP通信設(shè)計(jì)及實(shí)現(xiàn)

2009-10-26 09:34:32曾冬梅王彥桂唐會(huì)天
電腦知識(shí)與技術(shù) 2009年22期
關(guān)鍵詞:類(lèi)庫(kù)線(xiàn)程客戶(hù)端

曾冬梅 王彥桂  唐會(huì)天

摘要:文章討論了一個(gè)當(dāng)前正在使用的新的電信公司動(dòng)力與環(huán)境集中監(jiān)控系統(tǒng)的原理和架構(gòu),并且詳細(xì)討論了在新的軟件平臺(tái)下為該監(jiān)控系統(tǒng)設(shè)計(jì)以及實(shí)現(xiàn)一個(gè)高性能的TCP/IP通信庫(kù)的方法和過(guò)程,使用該通信庫(kù)可以非常容易給監(jiān)控系統(tǒng)軟件內(nèi)部模塊或與其他系統(tǒng)互聯(lián)提供高性能的Sockets服務(wù)端和客戶(hù)端功能。

關(guān)鍵詞: Sockets; TCP/IP;.C#.NET; 通信; 電信; 動(dòng)力監(jiān)控;

中圖分類(lèi)號(hào):TP319文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2009)22-pppp-0c

眾所周知,電信公司的主要業(yè)務(wù)是提供7X24小時(shí)的不間斷通信、數(shù)據(jù)服務(wù),這些服務(wù)都需要依靠各種交換、路由、網(wǎng)橋和防火墻等設(shè)備完成,這些設(shè)備對(duì)于電以及動(dòng)力設(shè)備的依賴(lài)尤勝于其他生產(chǎn)企業(yè),而且這些通信設(shè)備運(yùn)行的環(huán)境都有比較嚴(yán)格的要求,使用大量的人力進(jìn)行現(xiàn)場(chǎng)維護(hù),不但效率低下,也不能保證維護(hù)質(zhì)量和維護(hù)水平,而動(dòng)力及環(huán)境集中監(jiān)控系統(tǒng)使得這一現(xiàn)狀得到了徹底的改觀,觀察動(dòng)力設(shè)備運(yùn)行情況、記錄設(shè)備及環(huán)境參數(shù)這些工作完全可以依靠監(jiān)控系統(tǒng)來(lái)完成。廣泛應(yīng)用的動(dòng)力及環(huán)境監(jiān)控系統(tǒng)實(shí)現(xiàn)了對(duì)通信局站內(nèi)各種動(dòng)力設(shè)備、空調(diào)設(shè)備及環(huán)境的實(shí)時(shí)監(jiān)控、維護(hù)和綜合管理,保障了電信系統(tǒng)的可靠運(yùn)行,降低了維護(hù)成本,并逐步實(shí)現(xiàn)了通信動(dòng)力設(shè)備由分散維護(hù)向集中監(jiān)控、維護(hù)和管理。

下面介紹的電信動(dòng)力與環(huán)境集中監(jiān)控系統(tǒng)使用了模塊化和面向?qū)ο蟮脑O(shè)計(jì),并且重點(diǎn)討論了一個(gè)專(zhuān)門(mén)設(shè)計(jì)的TCP/IP通信庫(kù)。

1 動(dòng)力監(jiān)控系統(tǒng)架構(gòu)

一個(gè)完整的電信動(dòng)力與環(huán)境監(jiān)控系統(tǒng)應(yīng)該包括配電系統(tǒng)設(shè)備、環(huán)境系統(tǒng)參數(shù)、消防系統(tǒng)信息和保安系統(tǒng)等數(shù)據(jù),這些監(jiān)控對(duì)象包括可以直接使用通信協(xié)議采集的所謂智能設(shè)備,也包括向溫濕度傳感器一樣的非智能設(shè)備,對(duì)于不同的監(jiān)控對(duì)象需要使用不同的數(shù)據(jù)采集前端設(shè)備,這些前端設(shè)備放置在被監(jiān)控設(shè)備的附近或者通過(guò)現(xiàn)場(chǎng)鋪設(shè)通信電纜進(jìn)行數(shù)據(jù)采集。

當(dāng)前以太網(wǎng)技術(shù)已經(jīng)非常成熟,電信公司的DCN網(wǎng)絡(luò)(專(zhuān)用數(shù)據(jù)通信網(wǎng))是一個(gè)完全意義上的分組交換網(wǎng)絡(luò),TCP/IP協(xié)議在公司內(nèi)和機(jī)樓之間都可以隨處可用,所有數(shù)據(jù)通過(guò)前端采集設(shè)備采集后都可以通過(guò)TCP/IP網(wǎng)絡(luò)進(jìn)行傳輸。本系統(tǒng)整體的設(shè)計(jì)都基于電信完善的TCP/IP網(wǎng)絡(luò),系統(tǒng)以數(shù)據(jù)庫(kù)為基礎(chǔ)、以數(shù)據(jù)處理機(jī)為數(shù)據(jù)的中心,所有的監(jiān)控段包括監(jiān)控機(jī)和辦公室都可以通過(guò)使用TCP/IP協(xié)議連接到數(shù)據(jù)處理機(jī)獲得實(shí)時(shí)處理的監(jiān)控?cái)?shù)據(jù),通過(guò)連接中心數(shù)據(jù)庫(kù)獲得保存的歷史數(shù)據(jù)。

2 系統(tǒng)軟件設(shè)計(jì)

監(jiān)控軟件功能模塊以數(shù)據(jù)處理軟件為實(shí)時(shí)數(shù)據(jù)分發(fā)中心,以數(shù)據(jù)庫(kù)為歷史數(shù)據(jù)存放中心。其余客戶(hù)端軟件都通過(guò)Sockets的方式連接到數(shù)據(jù)處理中心,數(shù)據(jù)處理中心作為Socket Server給其他客戶(hù)端提供數(shù)據(jù)服務(wù),客戶(hù)端作為Socket client主動(dòng)與中心建立連接,使用TCP/IP協(xié)議與中心進(jìn)行通信。

3 通信庫(kù)實(shí)現(xiàn)原理

在Windows操作系統(tǒng)下實(shí)現(xiàn)的TCP/IP通信程序,用戶(hù)進(jìn)程的每次網(wǎng)絡(luò)訪(fǎng)問(wèn)都要通過(guò)操作系統(tǒng)來(lái)完成,Socke通信中發(fā)送方首先在用戶(hù)空間將欲發(fā)送的數(shù)據(jù)準(zhǔn)備好,通過(guò)系統(tǒng)調(diào)用進(jìn)入核心,由核心將發(fā)送的數(shù)據(jù)從用戶(hù)空間拷貝到核心空間,數(shù)據(jù)經(jīng)TCP/UDP協(xié)議和IP協(xié)議處理,最后由網(wǎng)卡驅(qū)動(dòng)程序發(fā)送到網(wǎng)絡(luò),當(dāng)消息被接收方的網(wǎng)絡(luò)接口卡收到后,產(chǎn)生硬件中斷通知核心,接收方核心同樣要經(jīng)過(guò)IP協(xié)議和TCP/UDP協(xié)議的處理然后才能將數(shù)據(jù)拷貝到接收方進(jìn)程的用戶(hù)空間中。

除了操作系統(tǒng)負(fù)責(zé)完成的部分以為,用戶(hù)程序還需要實(shí)現(xiàn)客戶(hù)業(yè)務(wù)數(shù)據(jù)的調(diào)度,尤其對(duì)于服務(wù)程序需要建立一個(gè)高效的線(xiàn)程級(jí)的服務(wù)架構(gòu),因?yàn)榉?wù)程序需要實(shí)時(shí)響應(yīng)很多監(jiān)控客戶(hù)端的同時(shí)數(shù)據(jù)請(qǐng)求。故很有必要專(zhuān)門(mén)為之設(shè)計(jì)一個(gè)高性能的TCP/IP通信庫(kù),用于實(shí)現(xiàn)高效的通信服務(wù)程序和通信客戶(hù)程序。

這里設(shè)計(jì)的通信庫(kù)基于TCP Client/TCP Server的通信模式,而不是Peer-to-Peer的通信模式?;贑lient/Server通信模式需要至少完成兩項(xiàng)任務(wù):

TCP客戶(hù)端負(fù)責(zé)發(fā)起一個(gè)與服務(wù)器的連接,因此客戶(hù)端只需要關(guān)心并處理僅僅一個(gè)簡(jiǎn)單的向外的連接。

服務(wù)器端監(jiān)聽(tīng)所有指向自己的客戶(hù)端的請(qǐng)求,服務(wù)器端必須關(guān)心并處理多個(gè)向內(nèi)的連接請(qǐng)求和向內(nèi)的連接。

4 通信庫(kù)設(shè)計(jì)實(shí)現(xiàn)

本系統(tǒng)的大部分軟件都使用微軟的新開(kāi)發(fā)平臺(tái).NET進(jìn)行開(kāi)發(fā),通信庫(kù)也使用.NET平臺(tái)下的C#語(yǔ)言進(jìn)行設(shè)計(jì)和實(shí)現(xiàn),可以供.NET平臺(tái)支持的所有語(yǔ)言調(diào)用。

4.1 關(guān)鍵接口設(shè)計(jì)

基于.NET開(kāi)發(fā)平臺(tái),在通信庫(kù)中設(shè)計(jì)一個(gè)向外的連接類(lèi)OutgoingConnection供客戶(hù)端程序連接服務(wù)器程序使用。當(dāng)客戶(hù)端請(qǐng)求一個(gè)向服務(wù)器程序的連接時(shí),服務(wù)器程序創(chuàng)建一個(gè)向內(nèi)的連接類(lèi)IncomingConnection的實(shí)例負(fù)責(zé)與客戶(hù)端進(jìn)行通信。OutgoingConnection類(lèi)和IncomingConnection類(lèi)都繼承自同一個(gè)基礎(chǔ)通信類(lèi)ConnectionBase類(lèi),它提供了向內(nèi)和向外通信相關(guān)的公共方法(如發(fā)送、接收數(shù)據(jù)等),都由接口ICommunicationsBase進(jìn)行聲明,這兩個(gè)連接類(lèi)共同實(shí)現(xiàn)的接口包含如下元素:一個(gè)Socket實(shí)例(發(fā)送和接收數(shù)據(jù)的管道);一個(gè)可以有管道接收到的新的數(shù)據(jù)觸發(fā)的事件;一個(gè)可以通過(guò)管道與遠(yuǎn)程主機(jī)進(jìn)行數(shù)據(jù)傳輸?shù)姆椒?一個(gè)可以關(guān)閉Socket的方法。

客戶(hù)端使用的OutgoingConnection類(lèi)需要另外實(shí)現(xiàn)一些元素:一個(gè)連接方法(包含節(jié)點(diǎn)地址、端口參數(shù))用來(lái)初始化與服務(wù)器的連接;三個(gè)線(xiàn)程:分別負(fù)責(zé)接收數(shù)據(jù)、發(fā)送數(shù)據(jù)和從數(shù)據(jù)流中提取數(shù)據(jù)。服務(wù)端使用的IncomingConnection類(lèi)需要另外實(shí)現(xiàn)一些元素:一個(gè)類(lèi)實(shí)例隸屬的通信服務(wù)器指針實(shí)例;一個(gè)用來(lái)標(biāo)識(shí)自己的ID編號(hào);一個(gè)指向要發(fā)送的信息的接口IIncomingMessageHandler的實(shí)現(xiàn)。

幾個(gè)關(guān)鍵的接口之間的關(guān)系如下,ICommunicationsServer包含了實(shí)現(xiàn)了接口ICommincomingConnection的類(lèi)的多個(gè)實(shí)例,并且動(dòng)態(tài)建立。

4.2 信息傳輸設(shè)計(jì)

動(dòng)力與環(huán)境監(jiān)控系統(tǒng)TCP/IP類(lèi)庫(kù)的核心功能就是在設(shè)備和系統(tǒng)之間、系統(tǒng)內(nèi)部、系統(tǒng)之間高效、正確地傳輸實(shí)時(shí)信息,實(shí)時(shí)信息可以是一段打包的實(shí)時(shí)變化的字節(jié)流或者字符的集合,類(lèi)庫(kù)負(fù)責(zé)的內(nèi)容就是保證打包發(fā)送信息,并且負(fù)責(zé)接收、解包信息,并保證發(fā)送的信息和接收到的信息完全一致。

通信類(lèi)庫(kù)提高性能的第一步是合理的利用多線(xiàn)程技術(shù),監(jiān)聽(tīng)、接收、發(fā)送都使用單獨(dú)的線(xiàn)程,以有效的利用CPU時(shí)間并且不會(huì)互相影響和造成不合理的等待。

類(lèi)庫(kù)設(shè)計(jì)了一個(gè)線(xiàn)程安全的類(lèi)SendReceiveBuffer作為發(fā)送的信息緩沖區(qū),緩沖區(qū)中的字節(jié)等待被發(fā)送或被處理,使用線(xiàn)程安全的隊(duì)列保存緩沖區(qū)數(shù)據(jù)。提供發(fā)送性能的關(guān)鍵在于減少少量字節(jié)的多次發(fā)送,將需要發(fā)送的多個(gè)少量字節(jié)預(yù)先保存在隊(duì)列緩存中,發(fā)送時(shí)可以合并成單個(gè)的TCP/IP包進(jìn)行發(fā)送以提供效率。

通信庫(kù)中另一個(gè)提高通信性能的方法是使用非阻塞模式,因?yàn)榉亲枞J皆诎l(fā)送和接收是不需要等待,可以立即進(jìn)行下一次接收和發(fā)送,而阻塞模式將使得當(dāng)前線(xiàn)程進(jìn)入等待直到發(fā)送或接收完成。尤其在通信庫(kù)的服務(wù)器端性能的提高將非常明顯,因?yàn)樵谟写罅康臄?shù)據(jù)等待發(fā)送到大量的客戶(hù)端時(shí),非阻塞模式可以立即進(jìn)行下一個(gè)客戶(hù)端的發(fā)送和接收。

5 結(jié)論

文章介紹的電信動(dòng)力與環(huán)境集中監(jiān)控系統(tǒng)已經(jīng)在電信公司實(shí)際運(yùn)行,獲得了良好的效果。系統(tǒng)采用了新的軟件平臺(tái),并且使用了專(zhuān)門(mén)設(shè)計(jì)的高性能TCP/IP通信庫(kù),經(jīng)過(guò)測(cè)試,可以支持100個(gè)以上的監(jiān)控客戶(hù)端沒(méi)有明確的通信滯后,表現(xiàn)了良好的性能,也有一定的通用性。

參考文獻(xiàn):

[1] Christian Holm, Mike Kruger等. C#軟件項(xiàng)目全程剖析[M]. 北京: 清華大學(xué)出版社, 2003: 13-36.

[2] 嚴(yán)蔚敏, 吳偉民. 數(shù)據(jù)結(jié)構(gòu):[M].北京:北京: 清華大學(xué)出版社,1997.

[3] Ivar Jacobson, Grady Booch 等.統(tǒng)一軟件開(kāi)發(fā)過(guò)程 [M].北京:機(jī)械工業(yè)出版社,2002.

[4] Erich Gamma, Richard Helm.設(shè)計(jì)模式 [M].北京:機(jī)械工業(yè)出版社,2000:54-91.

[5] 劉險(xiǎn)峰,倪涉權(quán). 蓄電池容量在線(xiàn)監(jiān)測(cè)研究[J].通信電源技術(shù), 2009(5): 51-54.

[6] 王彥桂,郁 濱等. 配電自動(dòng)化系統(tǒng)中應(yīng)用DNP3.0協(xié)議進(jìn)行數(shù)據(jù)通信[J].計(jì)算機(jī)自動(dòng)測(cè)量與控制, 2001(T):99-101.

[7] 郝燕玲,趙玉新等. 基于事件交互樹(shù)模型的GUI測(cè)試技術(shù)[J].應(yīng)用科技, 2009(5):61-65.

猜你喜歡
類(lèi)庫(kù)線(xiàn)程客戶(hù)端
用Java編寫(xiě)客戶(hù)機(jī)/服務(wù)器端應(yīng)用程序
Python在數(shù)據(jù)可視化中的應(yīng)用
縣級(jí)臺(tái)在突發(fā)事件報(bào)道中如何應(yīng)用手機(jī)客戶(hù)端
孵化垂直頻道:新聞客戶(hù)端新策略
基于Vanconnect的智能家居瘦客戶(hù)端的設(shè)計(jì)與實(shí)現(xiàn)
數(shù)據(jù)結(jié)構(gòu)課程教學(xué)改革方案和應(yīng)用效果
軟件工程(2017年12期)2018-01-29 17:35:55
數(shù)據(jù)結(jié)構(gòu)可視化類(lèi)庫(kù)的設(shè)計(jì)與實(shí)現(xiàn)
淺談linux多線(xiàn)程協(xié)作
客戶(hù)端空間數(shù)據(jù)緩存策略
Linux線(xiàn)程實(shí)現(xiàn)技術(shù)研究
阿克陶县| 镶黄旗| 澄城县| 建昌县| 武山县| 东平县| 宽城| 临安市| 万宁市| 中宁县| 醴陵市| 尖扎县| 赤峰市| 泰安市| 岗巴县| 周至县| 云龙县| 内江市| 华容县| 大足县| 东至县| 淮安市| 兰州市| 崇州市| 溧阳市| 盱眙县| 错那县| 敦化市| 钦州市| 正定县| 罗田县| 阿荣旗| 南昌县| 广东省| 克拉玛依市| 江川县| 新河县| 唐山市| 宽甸| 乌兰县| 大竹县|