<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          BeetleX輕量級高性能 TCP 通訊組件

          聯(lián)合創(chuàng)作 · 2023-09-29 07:28

          BeetleX

          beetleX是基于dotnet core實現(xiàn)的輕量級高性能的TCP通訊組件,使用方便、性能高效和安全可靠是組件設計的出發(fā)點!開發(fā)人員可以在Beetlx組件的支持下快帶地構建高性能的TCP通訊服務程序,在安全通訊方面只需要簡單地設置一下SSL信息即可實現(xiàn)可靠安全的SSL服務。

          使用方便性

          beetleX網(wǎng)絡流讀寫是基于Stream標準來構建,僅僅基于Stream的基礎讀寫對于應用者來說還是過于繁瑣;組件為了更方便進行網(wǎng)絡數(shù)據(jù)處理在Stream的基礎之上擴展了一系列的讀寫規(guī)則:ReadLine、ReadInt、WriteLine、WriteInt等一系列簡便方法,在這些方法的支持下使用者就可以更輕松地處理數(shù)據(jù);為了在網(wǎng)絡通訊中更好的兼容其他平臺協(xié)議以上方法都兼容Big-Endian和Little-Endian不同方式。為了更好地利用現(xiàn)有序列化組件,組件通過IPacket接口規(guī)范消息擴展,通過實現(xiàn)不同的Packet解釋器,即可以實現(xiàn)基于Protobuf,json和Msgpack等方式的對象數(shù)據(jù)傳輸。

          高性能特性

          beetleX的高性能是建立在內(nèi)部一個數(shù)據(jù)流處理對象PipeStream,它是構建在Stream標準之上;它和.NET內(nèi)置的NetworkStream最大的差別是PipeStream的讀寫基于SocketAsyncEventArgs實現(xiàn),這正是在編寫高性能網(wǎng)絡數(shù)據(jù)處理所提倡的模式。PipeStream不僅在網(wǎng)絡數(shù)據(jù)處理模式上有著性能的優(yōu)勢,在內(nèi)存讀寫上和MemoryStream也有著很大的區(qū)別;由于PipeStream的內(nèi)存塊是以一個基于鏈表的SocketAsyncEventArgs Buffer 組成,因此PipeStream在寫入大數(shù)據(jù)的情況并不存在內(nèi)存擴容和復制的問題;因為PipeStream基礎內(nèi)存是SocketAsyncEventArgs Buffer,所以在數(shù)據(jù)和網(wǎng)絡緩存讀寫并不存在內(nèi)存塊復制過程。如果在應用中中使用PipeStream相應的BinaryReader和IBinaryWriter讀寫規(guī)范,那大部分數(shù)據(jù)處理基本不存在內(nèi)存復制過程,從而讓數(shù)據(jù)處理性能更高效。

          以下是PipeStream的結構: 


          性能

          beetleX的性能到底怎樣呢,以下簡單和DotNetty進行一個網(wǎng)絡數(shù)據(jù)交換的性能測試,分別是1K,5K和10K連接數(shù)下數(shù)據(jù)請求并發(fā)測試

          DotNetty測試代碼

                  public override void ChannelRead(IChannelHandlerContext context, object message)
                  {
                      var buffer = message as IByteBuffer;
                      context.WriteAsync(message);
                  }

          Beetlex 測試代碼

                  public override void SessionReceive(IServer server, SessionReceiveEventArgs e)
                  {
                      server.Send(e.Stream.ToPipeStream().GetReadBuffers(), e.Session);
                      base.SessionReceive(server, e);
                  }

          測試結果

          1K connections



          5K connections

          輸入圖片說明輸入圖片說明

          10K connections

          輸入圖片說明輸入圖片說明

          瀏覽 15
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91乱子伦国产乱子伦无码 | 国产激情综合 | 日韩视频专区 | 国产性爱一区 | 亚洲精品三级在线观看 |