亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        ACE框架在網(wǎng)絡(luò)游戲服務(wù)器中的設(shè)計(jì)與應(yīng)用

        2008-04-12 00:00:00萬旺根
        現(xiàn)代電子技術(shù) 2008年8期

        摘 要:由于操作系統(tǒng)及通信平臺(tái)的多樣性,通信軟件開發(fā)者往往要面對諸多問題,而利用軟件設(shè)計(jì)模式能夠幫助開發(fā)者成功完成任務(wù)并開發(fā)出高性能的通信軟件。介紹ACE框架在通信領(lǐng)域中的面向?qū)ο蟮脑O(shè)計(jì)模式以及使用ACE框架構(gòu)建通信系統(tǒng)軟件所帶來的優(yōu)勢,并提出了一種網(wǎng)絡(luò)服務(wù)器架構(gòu)以及基于模塊設(shè)計(jì)服務(wù)器系統(tǒng)軟件的思想。最后結(jié)合具體應(yīng)用,詳細(xì)講述如何利用ACE中的若干設(shè)計(jì)模式及組件框架進(jìn)行網(wǎng)絡(luò)服務(wù)器通信底層模塊的設(shè)計(jì)和實(shí)現(xiàn)。

        關(guān)鍵詞:自適配通信環(huán)境;中間件;網(wǎng)絡(luò)服務(wù)器系統(tǒng);設(shè)計(jì)模式

        中圖分類號:TP393文獻(xiàn)標(biāo)識(shí)碼:B

        文章編號:1004-373X(2008)08-153-04

        Design and Application of ACE Framework in Networked Game Server

        TAO Dao,WAN Wanggen

        (School of Communication and Information Engineering,Shanghai University,Shanghai,200072,China)

        Abstract:Due to difference of hardware and diversity of communication system,developers of communication software have to face many problems.Those problems can be solved by using software design pattern and programmers are easier to develop highperformance communication software.This paper introduces the OO design pattern of ACE framework in communication and its advantage.It also puts forward an idea of networked server architecture and modularization design in software.At last this paper illustrates how we use the design pattern and the module of the ACE framework to design the basic communication module of our game networked game server software.

        Keywords:adaptive communication environment;middleware;network server system;design pattern

        隨著計(jì)算機(jī)網(wǎng)絡(luò)的發(fā)展,特別是因特網(wǎng)的出現(xiàn),數(shù)字娛樂和網(wǎng)絡(luò)游戲產(chǎn)業(yè)得到了蓬勃的發(fā)展,異軍突起的網(wǎng)絡(luò)游戲成為中國網(wǎng)絡(luò)產(chǎn)業(yè)中的先鋒。而由于信息技術(shù)的進(jìn)步,計(jì)算機(jī)、手機(jī)以及不同的傳媒終端等不斷涌現(xiàn),如何將這些眾多不同的終端通過互聯(lián)網(wǎng)進(jìn)行互聯(lián)互動(dòng)成為一大技術(shù)難點(diǎn),而這些難點(diǎn)的突破取決于網(wǎng)絡(luò)游戲服務(wù)器的開發(fā)。目前在各種服務(wù)器通信軟件的設(shè)計(jì)和開發(fā)中,已經(jīng)廣泛地使用到軟件設(shè)計(jì)模式。尤其在大型的服務(wù)器通信軟件開發(fā)中常會(huì)采用模塊化設(shè)計(jì)。當(dāng)一個(gè)龐大的服務(wù)器系統(tǒng)執(zhí)行任務(wù)時(shí),往往要通過其中不同的模塊進(jìn)行協(xié)作完成,在這種情況下各機(jī)間的數(shù)據(jù)通信會(huì)變得異常繁瑣和復(fù)雜。另外不同操作系統(tǒng)通信機(jī)制的不同也會(huì)影響通信軟件的開發(fā)和效率,網(wǎng)絡(luò)編程人員通常從底層進(jìn)行開發(fā),這大大增加了軟件開發(fā)的難度和周期。針對以上存在的問題,ACE自適應(yīng)通信構(gòu)架給出了良好的解決方案,ACE能夠跨越多種操作系統(tǒng)平臺(tái),可進(jìn)行通用的網(wǎng)絡(luò)編程任務(wù),并結(jié)合軟件設(shè)計(jì)模式[1],避免了通信軟件根據(jù)不同環(huán)境需要重新開發(fā)的弱點(diǎn),減少了軟件開發(fā)的周期和資金,簡化和強(qiáng)化了系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)。

        1 ACE框架

        ACE自適應(yīng)通信環(huán)境(ADAPTIVE Communication Environment)[2]是可以自由使用、開放源碼的面向?qū)ο螅∣O)框架(Framework),在其中實(shí)現(xiàn)了許多用于并發(fā)通信軟件的核心模式。ACE提供了一組豐富的可復(fù)用C++ Wrapper Facade(包裝外觀)和框架組件,可跨越多種平臺(tái)完成通用的通信軟件任務(wù),其中包括:事件多路分離和事件處理器分派、信號處理、服務(wù)初始化、進(jìn)程間通信、共享內(nèi)存管理、消息路由、分布式服務(wù)動(dòng)態(tài)(重)配置、并發(fā)執(zhí)行和同步等。ACE體系結(jié)構(gòu)[3]包括3個(gè)基本層次:操作系統(tǒng)適配層、C++包裝層、框架組件層。操作系統(tǒng)適配層直接駐留在用C寫成的本地OS API之上,將ACE中的其他層與OS API 相關(guān)聯(lián)的平臺(tái)專有特性屏蔽開來。由于ACE操作適配層所提供的抽象,極大地增強(qiáng)了ACE的可移植性和可維護(hù)性。C++包裝層通過提供類型安全的C++接口簡化通信應(yīng)用程序的開發(fā),各種應(yīng)用可以有選擇地繼承、聚合或?qū)嵗渲械慕M件來使用這些包裝。ACE還包括一個(gè)高級的網(wǎng)絡(luò)編程框架,集成并增強(qiáng)較低層次的C++包裝層,該框架支持并發(fā)分布式服務(wù)動(dòng)態(tài)配置。

        大多數(shù)的網(wǎng)絡(luò)化應(yīng)用可以通過ACE這樣的可移植中間件進(jìn)行開發(fā),因?yàn)锳CE封裝并加強(qiáng)了本地操作系統(tǒng)機(jī)制,通過其組件可以移除底層操作系統(tǒng)API的繁瑣和易錯(cuò)性創(chuàng)建可重用的網(wǎng)絡(luò)程序。

        2 網(wǎng)絡(luò)游戲服務(wù)器系統(tǒng)框架的設(shè)計(jì)

        在設(shè)計(jì)網(wǎng)絡(luò)服務(wù)器的過程中,如何保證服務(wù)器的安全和最大限度地支持更多的客戶端連接是擺在開發(fā)者面前一個(gè)重要的問題。為了解決這2大問題,根據(jù)經(jīng)驗(yàn),在開發(fā)游戲服務(wù)器的過程中,采用如下的服務(wù)器架構(gòu)可有效解決上述2個(gè)問題。

        2.1 支持Gate的游戲服務(wù)器架構(gòu)

        在該架構(gòu)下,Client和Gate Server相連,而不是直接和Game Server相連。Gate Server主要負(fù)責(zé)轉(zhuǎn)發(fā)客戶端和Game Server之間的數(shù)據(jù)包,Game Server負(fù)責(zé)處理游戲的所有邏輯。如圖1所示。

        圖1 支持Gate的服務(wù)器系統(tǒng)架構(gòu)

        采用該架構(gòu),有如下幾個(gè)優(yōu)點(diǎn):客戶端通過Gate Server和游戲服務(wù)器Game Server相連,Game Server IP對外不可見,這樣Game Server更安全、更不易受攻擊。一個(gè)Game Server同樣也可以對應(yīng)若干個(gè)Gate Server,當(dāng)某個(gè)Gate Server受攻擊或停機(jī)后,其他的Gate Server仍然照常運(yùn)行,和其他Gate Server相連的客戶端仍然可正常進(jìn)行游戲;可支持更多的客戶端連接。Gate Server把眾多的客戶端連接分散到多個(gè)Game Server中去,而不是獨(dú)自來承擔(dān),從而可支持更多的客戶端連接;Gate Server可分擔(dān)一部分安全管理工作,減輕Game Server的壓力。例如若某個(gè)客戶端在一段時(shí)間內(nèi)不發(fā)數(shù)據(jù)包,則把該客戶端踢下線的工作可由Gate Server來完成。

        2.2 軟件功能模塊劃分

        在設(shè)計(jì)服務(wù)器框架時(shí),有一個(gè)基本原則,即框架和通信底層的具體實(shí)現(xiàn)需要分離,通信底層的具體實(shí)現(xiàn)不影響框架代碼的修改。因?yàn)橥ㄐ诺讓拥木唧w實(shí)現(xiàn)有很多方式,不同操作系統(tǒng)平臺(tái)的具體實(shí)現(xiàn)差別也很大。例如僅在Windows平臺(tái)下就有基于Windows消息機(jī)制的、基于事件機(jī)制的、也有基于完成端口I/O模型的實(shí)現(xiàn)等。采用框架與通信底層相分離的原則,也有利于利用一些成熟的開發(fā)框架,比如使用的ACE框架。這樣,當(dāng)采用一種新的通信技術(shù)實(shí)現(xiàn)通信底層時(shí),則可以不改變服務(wù)器框架,而只需要修改通信底層。在設(shè)計(jì)服務(wù)器時(shí)按照服務(wù)器框架與通信底層相分離的原則,將服務(wù)器框架設(shè)計(jì)為多個(gè)模塊。并生成相應(yīng)的動(dòng)態(tài)鏈接庫以供調(diào)用。軟件模塊框架如圖2所示。

        圖2 軟件模塊框架

        在軟件模塊劃分中,通信底層由線程模塊和通信模塊組成,上層則由同步、聯(lián)機(jī)管理和興趣區(qū)管理等模塊組成。其中同步模塊是基于保守/樂觀的同步算法構(gòu)建的服務(wù)器同步子系統(tǒng),客戶端方面則可以使用航位推測法減少服務(wù)器的發(fā)包頻率。興趣區(qū)管理模塊用于相關(guān)性信息過濾,通過訂購?fù)婕腋信d趣的范圍,可以有效減低網(wǎng)絡(luò)帶寬消耗和服務(wù)器負(fù)載。聯(lián)機(jī)管理模塊主要負(fù)責(zé)數(shù)據(jù)封包中的通信協(xié)議以及數(shù)據(jù)報(bào)的壓縮和加密,在數(shù)據(jù)包中采用加密以增加服務(wù)器系統(tǒng)的安全性能,采用壓縮以減少網(wǎng)絡(luò)帶寬消耗。

        3 服務(wù)器系統(tǒng)通信底層的實(shí)現(xiàn)

        3.1 線程模塊的實(shí)現(xiàn)

        在設(shè)計(jì)線程模塊中使用ACE框架中的ACE _Task類和ACE _Message _Queue來實(shí)現(xiàn)主動(dòng)對象模式[5],用于處理主動(dòng)對象,實(shí)現(xiàn)多線程處理。傳統(tǒng)的對象是被動(dòng)的代碼段,對象中的代碼是在對他發(fā)出方法調(diào)用的線程中執(zhí)行的,當(dāng)方法被調(diào)用時(shí),調(diào)用線程將阻塞,直至調(diào)用結(jié)束。而主動(dòng)對象卻不一樣。這些對象具有自己的命令執(zhí)行線程,主動(dòng)對象的方法將在自己的執(zhí)行線程中執(zhí)行,不會(huì)阻塞調(diào)用方法。由于主動(dòng)對象的方法調(diào)用不會(huì)阻塞,這樣就提高了系統(tǒng)響應(yīng)速度。

        設(shè)計(jì)中主動(dòng)對象繼承ACE _Task,應(yīng)用open進(jìn)行初始化,并派生線程去循環(huán)判斷方法隊(duì)列中是否有方法對象,若隊(duì)列不為空則將方法出隊(duì)并執(zhí)行。如圖3所示。

        在創(chuàng)建任務(wù)和主動(dòng)對象時(shí),從ACE _Task類派生子類,在子類派生之后,采取以下步驟:

        (1) 實(shí)現(xiàn)服務(wù)初始化和終止方法:open()方法應(yīng)該包含所有專屬于任務(wù)的初始化代碼;close()方法則包含相應(yīng)的終止方法。

        (2) 調(diào)用啟用(Activation)方法:在主動(dòng)對象實(shí)例化后,必須通過調(diào)用activate()啟用他。在主動(dòng)對象中創(chuàng)建的線程的數(shù)目,以及其他一些參數(shù),需傳遞給activate()方法,activate()方法會(huì)使svc()方法成為所有他生成的線程的啟動(dòng)點(diǎn)。

        (3) 實(shí)現(xiàn)服務(wù)專有的處理方法:在主動(dòng)對象被啟用后,各個(gè)新線程在svc()方法中啟動(dòng)。

        圖3 任務(wù)結(jié)構(gòu)示意圖

        并發(fā)策略實(shí)現(xiàn)的程序流程如圖4所示:

        圖4 線程模塊執(zhí)行流程圖

        3.2 通信模塊的實(shí)現(xiàn)

        3.2.1 反應(yīng)器ACE Reactor和前攝器ACE Proactor

        ACE Reactor(反應(yīng)器)和Proactor(前攝器)是可擴(kuò)展的面向?qū)ο蠖嗦贩蛛x器[4],他們分派應(yīng)用專有的處理器,以響應(yīng)多種類型的基于I/O、定時(shí)器、信號和同步的事件。

        ACE _Reactor反應(yīng)器應(yīng)用于同步I/O操作,實(shí)現(xiàn)了事件的多路分離與分派,能夠處理多個(gè)來源的I/O。使用反應(yīng)器框架,需要執(zhí)行3個(gè)步驟: 從ACE_Event_Handler派生一個(gè)和多個(gè)事件處理器類,并定義相應(yīng)的事件處理行為;向ACE _Reactor類登記應(yīng)用的事件處理對象;運(yùn)行ACE _Reactor事件循環(huán),事件發(fā)生時(shí)回調(diào)事件處理器中的事件處理函數(shù)。

        ACE_Proactor應(yīng)用于異步I/O操作,他與反應(yīng)器不同的是首先等待事件的完成,然后回調(diào)完成后的事件處理。當(dāng)初始化I/O讀寫后把讀寫交給系統(tǒng)完成,等待事件完成后前攝器會(huì)將執(zhí)行I/O結(jié)果返回給對象,并且回調(diào)完成后的事件處理。 前攝式模型允許單個(gè)應(yīng)用線程同時(shí)發(fā)起多個(gè)請求。這一設(shè)計(jì)允許單線程化應(yīng)用并發(fā)的執(zhí)行多個(gè)I/O操作,并且不會(huì)帶來與傳統(tǒng)的多線程化機(jī)制相關(guān)聯(lián)的開銷或設(shè)計(jì)復(fù)雜性。這樣做大大減少了I/O處理時(shí)間。

        3.2.2 利用前攝器實(shí)現(xiàn)高效異步I/O數(shù)據(jù)通信

        在實(shí)現(xiàn)通信模塊中使用的前攝器模式主要參與者有前攝發(fā)起器、完成處理器、異步操作、異步操作處理器、完成分派器[5]。其結(jié)構(gòu)如圖5所示:

        圖5 前攝器模式參與者

        其中,前攝發(fā)起器(服務(wù)器應(yīng)用的主線程)是應(yīng)用中任何發(fā)起異步操作的實(shí)體。他將完成處理器和完成分派器登記到異步操作處理器。完成處理器接口用于異步操作完成通知,異步操作則是被用于代表應(yīng)用執(zhí)行請求。當(dāng)異步操作完成時(shí),異步操作處理器將應(yīng)用通知委托給完成分配器。異步操作是由異步操作處理器來運(yùn)行直至完成的,該組件通常由操作系統(tǒng)實(shí)現(xiàn)。完成分派器負(fù)責(zé)在異步操作完成時(shí)回調(diào)應(yīng)用的完成處理器。當(dāng)異步操作處理器完成異步發(fā)起的操作時(shí),完成分配器代表應(yīng)用執(zhí)行應(yīng)用回調(diào)。該機(jī)制的實(shí)現(xiàn)交互圖如圖6所示:

        圖6 前攝器模式交互圖

        3.2.3 通信連接的建立

        在具體通信模塊中,所用到的ACE主要類有異步連接類、服務(wù)處理類、異步操作類和處理結(jié)果類。建立連接的過程為:創(chuàng)建異步主動(dòng)連接和被動(dòng)連接子類,在進(jìn)行異步連接時(shí),創(chuàng)建新的服務(wù)處理類,并將該服務(wù)類傳遞給異步連接類,這樣,數(shù)據(jù)的傳輸就交給服務(wù)類去執(zhí)行。實(shí)現(xiàn)服務(wù)處理子類中提供的掛鉤方法,并通過創(chuàng)建ACE_Sock_Stream和異步讀寫流類來進(jìn)行異步通信。在異步讀寫流初始化時(shí)將其注冊到已創(chuàng)建的proactor中,并保存異步讀寫流類的句柄。最后數(shù)據(jù)傳送的結(jié)果和狀態(tài)交給處理結(jié)果類來處理。異步通信的初始化:

        (1) 分別創(chuàng)建異步主動(dòng)連接類的派生類和被動(dòng)連接類的派生類

        class TCommandChannelConnectorAceImpl : public ACE_Asynch_Connector< TCommandChannelAceImpl >

        class TCommandChannelAcceptorAceImpl : public ACE_Asynch_Acceptor< TCommandChannelAceImpl >

        (2) 創(chuàng)建主動(dòng)連接類對象connector和被動(dòng)連接類對象acceptor;

        (3) 對于主動(dòng)連接,調(diào)用connector.open(…),并將其注冊到Proactor,由框架自動(dòng)創(chuàng)建異步通信服務(wù)類,并且自動(dòng)檢測連接建立狀態(tài);

        (4) 對于被動(dòng)連接,調(diào)用acceptor.open(…),并將其注冊到Proactor,由框架自動(dòng)創(chuàng)建異步通信服務(wù)類,并且自動(dòng)檢測連接建立狀態(tài),處于等待偵聽狀態(tài);

        整個(gè)異步通信機(jī)制實(shí)現(xiàn)的流程如圖7所示:

        圖7 異步通信的實(shí)現(xiàn)

        3.2.4 ACE_Proactor完成多路分離

        ACE_Proactor類負(fù)責(zé)驅(qū)動(dòng)前攝器框架的完成處理。要讓異步I/O完成事件處理得以發(fā)生,還需要運(yùn)行前攝器的事件循環(huán),其流程圖如圖8所示。

        圖8 Proactor事件循環(huán)流程

        4 結(jié) 語

        本文設(shè)計(jì)了一種適用于開發(fā)網(wǎng)絡(luò)游戲的服務(wù)器端架構(gòu),并應(yīng)用ACE框架組件和面向?qū)ο蟮脑O(shè)計(jì)模式完成服務(wù)器底層通信的開發(fā)。ACE作為一種免費(fèi)開源的中間件,富含網(wǎng)絡(luò)與系統(tǒng)編程的實(shí)用設(shè)計(jì)模式[6],具有跨平臺(tái)等優(yōu)越特性,能夠適合任何通信軟件的開發(fā)。尤其對于網(wǎng)絡(luò)游戲服務(wù)器開發(fā)者而言,ACE無疑是一種值得借鑒的通信框架,具有良好的應(yīng)用前景。

        參 考 文 獻(xiàn)

        [1]Schmidt D C,Huston S D.Mastering Complexity with ACE and Patterns.C++ Network Programming,2001.

        [2]Douglas C.Schmidt.ACE自適配通信環(huán)境中文技術(shù)文檔[EB/OL].馬維達(dá),譯.http://www.flyingdonkey.com/ace/.

        [3]王繼剛,顧國昌.構(gòu)架與模式在通信系統(tǒng)軟件中的應(yīng)用研究[J].計(jì)算機(jī)應(yīng)用,2003,23(11):4345.

        [4] Schmidt D C,Huston S D.Systematic Reuse with ACE and Frameworks.C++ Network Programming,2002.

        [5]Stephen D Huston,James C E Johnson,Umar Syyid.Practical Design Patterns for Network and Systems Programming\\[Z\\].The ACE Programmer′s Guide,2004.

        [6]高鵬.通過設(shè)計(jì)模式構(gòu)造的通信應(yīng)用服務(wù)器框架[J].計(jì)算機(jī)科學(xué),2004(2):89.

        [7]陳琳.中間件技術(shù)的研究與實(shí)現(xiàn)\\[J\\].現(xiàn)代電子技術(shù),2006,29(12):7678.[HJ0]

        作者簡介 陶 道 男,1983年出生,碩士研究生。主要研究方向?yàn)橛?jì)算機(jī)通信網(wǎng)絡(luò)、網(wǎng)絡(luò)虛擬環(huán)境、網(wǎng)絡(luò)游戲服務(wù)器。

        萬旺根 男,1961年出生,教授,博士生導(dǎo)師。主要研究領(lǐng)域?yàn)樘摂M現(xiàn)實(shí)技術(shù)、互動(dòng)數(shù)字媒體、多媒體信號處理。

        注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文

        久久96国产精品久久久| 成年视频网站在线观看777 | 国产成人精品一区二区视频| 乱人伦中文字幕在线不卡网站| 午夜亚洲精品一区二区| 在线精品国产亚洲av蜜桃| 97夜夜澡人人双人人人喊| 97性视频| 免费在线观看视频专区| 97精品一区二区三区| 十八18禁国产精品www| 亚洲AV电影天堂男人的天堂| 精品少妇后入一区二区三区| 国产精品国三级国产a| 国产香蕉国产精品偷在线| 一区二区国产在线观看| 精品蜜桃av一区二区三区| 中文字幕一区二区中文| 99国产精品无码| 亚洲一区二区三区av链接| 日韩日本国产一区二区 | 91伊人久久| 全程国语对白资源在线观看| 亚洲欧洲日产国码av系列天堂 | 按摩女内射少妇一二三区| 免费av网站大全亚洲一区| 欧美精品一区二区蜜臀亚洲| 精品91亚洲高清在线观看| 亚洲女同一区二区三区| 肉色欧美久久久久久久免费看| 亚洲女人被黑人巨大进入| 国产亚洲一区二区三区成人 | 私人毛片免费高清影视院| 久久九九有精品国产尤物| 91羞射短视频在线观看| 中文字幕人妻伦伦| 国产激情з∠视频一区二区| 精品亚洲一区二区视频| 精品国产亚洲亚洲国产| 性xxxx视频播放免费| 韩国无码精品人妻一区二|