国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      業(yè)務(wù)邏輯的實現(xiàn)方法和系統(tǒng)的制作方法

      文檔序號:9648982閱讀:863來源:國知局
      業(yè)務(wù)邏輯的實現(xiàn)方法和系統(tǒng)的制作方法
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及計算機應(yīng)用技術(shù),特別是涉及一種業(yè)務(wù)邏輯的實現(xiàn)方法和系統(tǒng)。
      【背景技術(shù)】
      [0002]隨著計算機技術(shù)的發(fā)展,開發(fā)人員常通過開發(fā)各種服務(wù)器引擎實現(xiàn)各種業(yè)務(wù)邏輯。例如,通過開發(fā)的服務(wù)器引擎實現(xiàn)游戲業(yè)務(wù)邏輯。
      [0003]傳統(tǒng)的服務(wù)器引擎在接收到數(shù)據(jù)包之后,直接通過棧的方式將接收到的數(shù)據(jù)包壓給服務(wù)器引擎中的lua(—種動態(tài)類型語言)層進行解析,進而使得服務(wù)器引擎在數(shù)據(jù)交換方面存在著一定的性能損耗。
      [0004]因此,為了減少服務(wù)器引擎在數(shù)據(jù)交換上的性能損耗,將通過服務(wù)器引擎中的C++層解析數(shù)據(jù)包的包頭,并根據(jù)不同的命令字來讀取數(shù)據(jù)包中的包體。
      [0005]但是,這將存在著不利于擴展的局限性,也就是說,當新加一個命令字、修改一個協(xié)議的數(shù)據(jù)體時,都需要進行C++代碼的修改,并進行重新編譯,缺乏靈活性。

      【發(fā)明內(nèi)容】

      [0006]基于此,有必要針提供一種易于擴展、能提高靈活性的業(yè)務(wù)邏輯的實現(xiàn)方法。
      [0007]此外,還有必要提供一種易于擴展、能提高靈活性的業(yè)務(wù)邏輯的實現(xiàn)系統(tǒng)。
      [0008]一種業(yè)務(wù)邏輯的實現(xiàn)方法,包括如下步驟:
      [0009]在C++層由接收到的數(shù)據(jù)包獲取協(xié)議命令字,以得到相應(yīng)的lua文件規(guī)定的協(xié)議,根據(jù)得到的協(xié)議解析數(shù)據(jù)包得到參數(shù);
      [0010]根據(jù)所述協(xié)議命令字獲取lua層中對應(yīng)的協(xié)議命令字處理函數(shù);
      [0011]將所述參數(shù)傳入所述獲取得到的協(xié)議命令字處理函數(shù),以實現(xiàn)業(yè)務(wù)邏輯。
      [0012]在其中一個實施例中,所述在C++層由接收到的數(shù)據(jù)包獲取協(xié)議命令字,以得到相應(yīng)的lua文件規(guī)定的協(xié)議,根據(jù)得到的協(xié)議解析數(shù)據(jù)包得到參數(shù)的步驟包括:
      [0013]初始化服務(wù)器,并解析所述lua文件以得到所述lua文件中包含的協(xié)議,存儲所述得到的協(xié)議。
      [0014]在其中一個實施例中,所述在C++層由接收到的數(shù)據(jù)包獲取協(xié)議命令字,以得到相應(yīng)的lua文件規(guī)定的協(xié)議,根據(jù)得到的協(xié)議解析數(shù)據(jù)包得到參數(shù)的步驟包括:
      [0015]通過C++層接收發(fā)送至服務(wù)器請求進行業(yè)務(wù)邏輯處理的數(shù)據(jù)包;
      [0016]C++層從數(shù)據(jù)包的包頭中獲取協(xié)議命令字;
      [0017]C++層根據(jù)協(xié)議命令字查找由所述lua文件中包含的協(xié)議,根據(jù)所述查找到的協(xié)議,解析所述數(shù)據(jù)包以得到參數(shù)。
      [0018]在其中一個實施例中,所述方法還包括:
      [0019]根據(jù)所述lua層中當前觸發(fā)的事件回調(diào)所述C++層中的接口,通過所述C++層中的接口調(diào)用所述C++層中設(shè)置的模塊實現(xiàn)所述當前觸發(fā)的事件。
      [0020]在其中一個實施例中,所述當前觸發(fā)的事件包括寫日志事件、定時器事件、服務(wù)器事件、客戶端事件以及數(shù)據(jù)庫操作事件。
      [0021]一種業(yè)務(wù)邏輯的實現(xiàn)系統(tǒng),包括:
      [0022]數(shù)據(jù)包處理模塊,用于在C++層由接收到的數(shù)據(jù)包獲取協(xié)議命令字,以得到相應(yīng)的lua文件規(guī)定的協(xié)議,根據(jù)得到的協(xié)議解析數(shù)據(jù)包得到參數(shù);
      [0023]函數(shù)獲取模塊,用于根據(jù)所述協(xié)議命令字獲取lua層中對應(yīng)的協(xié)議命令字處理函數(shù);
      [0024]業(yè)務(wù)邏輯處理模塊,用于將所述參數(shù)傳入所述獲取得到的協(xié)議命令字處理函數(shù),以實現(xiàn)業(yè)務(wù)邏輯。
      [0025]在其中一個實施例中,所述系統(tǒng)還包括:
      [0026]初始化模塊,用于初始化服務(wù)器,并解析所述lua文件以得到所述lua文件中包含的協(xié)議,存儲所述得到的協(xié)議。
      [0027]在其中一個實施例中,所述數(shù)據(jù)包處理模塊包括:
      [0028]接收單元,用于通過C++層接收發(fā)送至服務(wù)器請求進行業(yè)務(wù)邏輯處理的數(shù)據(jù)包;
      [0029]包頭提取單元,用于通過C++層從數(shù)據(jù)包的包頭中獲取協(xié)議命令字;
      [0030]查找解析單元,用于通過C++層根據(jù)協(xié)議命令字查找由所述lua文件中包含的協(xié)議,根據(jù)查找到的協(xié)議,解析數(shù)據(jù)包以得到參數(shù)。
      [0031]在其中一個實施例中,所述系統(tǒng)還包括:
      [0032]回調(diào)模塊,用于根據(jù)所述lua層中當前觸發(fā)的事件回調(diào)所述C++層中的接口,通過所述C++層中的接口調(diào)用所述C++層中設(shè)置的模塊實現(xiàn)所述當前觸發(fā)的事件。
      [0033]在其中一個實施例中,所述當前觸發(fā)的事件包括寫日志事件、定時器事件、服務(wù)器事件、客戶端事件以及數(shù)據(jù)庫操作事件。
      [0034]上述業(yè)務(wù)邏輯的實現(xiàn)方法和系統(tǒng),在C++層中由接收到的數(shù)據(jù)包獲取協(xié)議命令字,以得到lua文件規(guī)定的協(xié)議,得到的協(xié)議解析接收到的數(shù)據(jù)包,以得到數(shù)據(jù)包中包含的參數(shù),根據(jù)該協(xié)議命令字獲取lua層中對應(yīng)的協(xié)議命令字處理函數(shù),將解析得到的參數(shù)傳輸獲取得到的協(xié)議命令字處理函數(shù),以實現(xiàn)業(yè)務(wù)邏輯的處理,由于數(shù)據(jù)包的解析是在lua文件規(guī)定的協(xié)議作用下由C++層實現(xiàn)的,lua文件可以動態(tài)進行重新加載,因此,在需要加入新的協(xié)議時,只需要修改lua文件即可,不需要進行C++代碼的修改和重新編譯,將大為提高了擴展性和靈活性。
      【附圖說明】
      [0035]圖1為一個實施例中業(yè)務(wù)邏輯的實現(xiàn)方法的流程圖;
      [0036]圖2為圖1中在C++層由接收到的數(shù)據(jù)包獲取協(xié)議命令字,以得到相應(yīng)的lua文件規(guī)定的協(xié)議,根據(jù)得到的協(xié)議解析數(shù)據(jù)包得到參數(shù)的方法流程圖;
      [0037]圖3為一個實施例中業(yè)務(wù)邏輯的實現(xiàn)系統(tǒng)的結(jié)構(gòu)示意圖;
      [0038]圖4為圖3中數(shù)據(jù)包處理模塊的結(jié)構(gòu)示意圖。
      【具體實施方式】
      [0039]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應(yīng)當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
      [0040]如圖1所示,在一個實施例中,一種業(yè)務(wù)邏輯的實現(xiàn)方法,包括如下步驟:
      [0041]步驟110,在C++層由接收到的數(shù)據(jù)包獲取協(xié)議命令字,以得到lua文件規(guī)定的協(xié)議中與所述協(xié)議命令字對應(yīng)的協(xié)議,根據(jù)所述得到的協(xié)議解析數(shù)據(jù)包以得到與該協(xié)議命令字對應(yīng)的參數(shù)。
      [0042]本實施例中,用于實現(xiàn)業(yè)務(wù)邏輯的服務(wù)器包括C++層以及與C++層進行交互的lua層,其中,C++層采用C++語言,以提供豐富,甚至于更為復雜的算法,為服務(wù)器實現(xiàn)各種業(yè)務(wù)邏輯提供基礎(chǔ);lua層采用lua語言,用于靈活地完成各種業(yè)務(wù)邏輯。
      [0043]具體的,預先設(shè)定包含了各種協(xié)議的lua文件,在接收到數(shù)據(jù)包之后,C++層將進行數(shù)據(jù)包中包頭的處理,以得到包頭中所包含的協(xié)議命令字,讀取存儲的協(xié)議中與所得到的協(xié)議命令字對應(yīng)的協(xié)議,以根據(jù)讀取得到的協(xié)議進行數(shù)據(jù)包的協(xié)議解析,以完成數(shù)據(jù)包中包體的處理,從而得到其包含的與包頭中的協(xié)議命令字對應(yīng)的參數(shù)。其中,所述存儲的協(xié)議是服務(wù)器初始化后讀取lua文件所得到并存儲的,以便于后續(xù)進行的數(shù)據(jù)包處理。
      [0044]C++層解析數(shù)據(jù)包所得到的協(xié)議命令字指示了當前接收得到的數(shù)據(jù)包所對應(yīng)網(wǎng)絡(luò)事件的協(xié)議;所得到的參數(shù)即為實現(xiàn)當前接收得到的數(shù)據(jù)包所對應(yīng)網(wǎng)絡(luò)事件的參數(shù)。
      [0045]例如,C++層當前解析的數(shù)據(jù)包所對應(yīng)的網(wǎng)絡(luò)事件為客戶端觸發(fā)的登錄事件,則解析數(shù)據(jù)包所得到的參數(shù)為該客戶端所對應(yīng)的登錄信息,即用戶標識和用戶密碼。
      [0046]步驟130,根據(jù)協(xié)議命令字獲取lua層中對應(yīng)的協(xié)議命令字處理函數(shù)。
      [0047]本實施例中,lua層將作為服務(wù)器中的應(yīng)用層實現(xiàn)各種業(yè)務(wù)邏輯。業(yè)務(wù)邏輯所觸發(fā)的各種事件將通過調(diào)用lua層中的各種函數(shù)進行處理,以實現(xiàn)該事件的響應(yīng)。
      [0048]也就是說,服務(wù)器中觸發(fā)的各種事件將通過C++層提供的接口傳遞到lua層中,進而由lua層響應(yīng)該事件,實現(xiàn)相應(yīng)的功能。
      [0049]由于lua層采用的lua語言是用于擴展C++編程的輕量級語言,較為易懂,因此,對于開發(fā)人員而言,降低了編碼的難度,不需要耗費過多的學習成本,進而使得基于服務(wù)器的各種業(yè)務(wù)邏輯開發(fā)速度大為提高,有效縮短了業(yè)務(wù)邏輯的開發(fā)周期。
      [0050]每一協(xié)議命令字都有與其對應(yīng)的協(xié)議命令字處理函數(shù),因此,將根據(jù)解析得到的協(xié)議命令字獲取得到存在于lua層中并且與其對應(yīng)的協(xié)議命令字處理函數(shù)。
      [0051]具體的,可以通過CProtocal::get_message(cmd)方法獲取lua層中的協(xié)議命令字處理函數(shù),其中,所述cmd為解析數(shù)據(jù)包所得到的協(xié)議命令字。
      [0052]步驟150,將所述參數(shù)傳入獲取到的協(xié)議命令字處理函數(shù),以實現(xiàn)業(yè)務(wù)邏輯。
      [0053]本實
      當前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1