ET框架詳解

一、簡介

ET框架是一款基於C#語言的開源網絡應用程序框架,旨在為遊戲和其他高性能應用程序提供快速開發解決方案。它包含了一個完整的網絡庫,用於構建分佈式系統,並提供了一套強大的工具集,可以幫助您管理實體、消息、任務和流程。此外,ET框架的設計理念是簡單易用、高效穩定、可擴展性強。

ET框架最初的開發者是陸昶輝,其最初版本即是在其任職於億方互動期間開發的。隨着ET框架在億方等遊戲公司的採用,其逐漸成為遊戲服務器的主流框架,並逐步獲得更廣泛的應用和認可。

二、核心特性

ET框架的核心特性包括以下幾個方面:

1、網絡庫

ET框架內置了高性能的網絡庫,可以幫助您快速構建分佈式系統。其網絡庫的主要特點是基於Socket的異步I/O模式實現,利用了C#語言的異步編程的特性,具有很高的吞吐量和可擴展性。


public class Session : AChannel
{
    private readonly CircularBuffer buffer = new CircularBuffer(SessionConfig.ReceiveBufferSize);
    private readonly MemoryStream memoryStream = new MemoryStream();
    private readonly MemoryStream stream = new MemoryStream();
    private readonly byte[] messageBytes = new byte[SessionConfig.MessageMaxLength];
    private readonly IMessageDispatcher messageDispatcher;
    private readonly SemaphoreSlim sendSemaphore = new SemaphoreSlim(1, 1);
    private readonly object sendLock = new object();
    private readonly Queue sends = new Queue();

    public Session(long id, CancellationTokenSource tokenSource, AService aService)
        : base(id, aService, tokenSource.Token)
    {
        this.messageDispatcher = this.GetService();
    }
}

2、實體組件

ET框架提供了實體組件,可以讓您很方便地定義並管理遊戲中的物品、角色等實體。這個組件的主要思想是通過添加組件來構建實體,通過移除組件來銷毀實體。在遊戲運行過程中,您可以在任何時候添加或移除組件,動態操縱實體。


public partial class Unit : Entity
{
    public long OwnerId { get; set; }
    public long GateSessionActorId { get; set; }
    public long MapSessionActorId { get; set; }
    public float X { get; set; }
    public float Y { get; set; }
    public float Z { get; set; }
    public int UnitType { get; set; }
}

3、消息組件

ET框架還提供了消息組件,可以讓您定義和管理遊戲中的所有消息。您只需定義消息格式,並在消息組件中註冊即可在遊戲運行時發送和接收消息。ET框架自帶的ProtoBuf序列化庫支持消息的快速編解碼。


[Message(Order = 3)]
[ProtoContract]
public partial class UnitEnterMap_SyncUnits : IActorMessage
{
    [ProtoMember(1)]
    public long ActorId { get; set; }

    [ProtoMember(2)]
    public long[] PlayerIds { get; set; }

    [ProtoMember(3)]
    public List Units { get; set; }
}

4、任務組件

ET框架提供了任務組件,可以讓您方便地定義並管理遊戲中的任務。您可以定義任務目標、獎勵等,同時可以方便地查看任務完成情況。


[Task(2)]
public class AchieveOneTask : ATask
{
    [TaskComponent(1)]
    public int Value;

    public override void OnExecute()
    {
        if (this.Value == 1)
        {
            this.Complete();
        }
    }
}

5、流程組件

ET框架的最後一個核心特性是流程組件,可以讓您定義和管理遊戲中的複雜流程。流程組件依賴任務組件,您可以定義任務節點、流程串行和並行、任務完成條件等,以實現複雜的遊戲流程。


[Flow(1)]
public class FlowDemo : AFlow
{
    [MessageHandle]
    public async Task TestMessage(Session session, FlowData message)
    {
        ETModel.Log.Info("TestMessage receive!");
        return this.NextFlow();
    }
}

三、使用場景

ET框架適用於各種高性能應用場景,包括遊戲服務器、金融服務、廣告投放等。特別是在遊戲服務器領域有廣泛的應用,曾被部分遊戲公司選擇作為其遊戲服務器框架。

四、擴展性

ET框架具有很高的可擴展性,可以方便地加入各種插件和自定義組件。例如,可以很容易地在ET框架中加入自定義的數據庫、日誌、計費等插件,甚至可以在ET框架基礎上構建自己的網絡通信庫。

五、性能測試

ET框架經過長時間的優化,已經取得了很好的性能表現。截至目前,ET框架已經針對多種配置進行過基準測試,測試結果顯示,在vCPU數量為2-32,內存為2G-32G的服務器上,ET框架的吞吐量最高可達到10萬TPS,延遲最低僅為5ms。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/286466.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-23 03:47
下一篇 2024-12-23 03:47

相關推薦

  • Ojlat:一款快速開發Web應用程序的框架

    Ojlat是一款用於快速開發Web應用程序的框架。它的主要特點是高效、易用、可擴展且功能齊全。通過Ojlat,開發人員可以輕鬆地構建出高質量的Web應用程序。本文將從多個方面對Oj…

    編程 2025-04-29
  • Zlios——一個多功能的開發框架

    你是否在開發過程中常常遇到同樣的問題,需要不斷去尋找解決方案?你是否想要一個多功能、易於使用的開發框架來解決這些問題?那麼,Zlios就是你需要的框架。 一、簡介 Zlios是一個…

    編程 2025-04-29
  • agavi開發框架

    Agavi是一個基於MVC模式的Web應用程序開發框架,以REST和面向資源的設計為核心思想。本文章將從Agavi的概念、優點、使用方法和實例等方面進行詳細介紹。 一、概念 Aga…

    編程 2025-04-29
  • Python unittest框架用法介紹

    Python unittest框架是Python自帶的一種測試框架,可以用來編寫並運行測試用例。在本文中,我們將從以下幾個方面詳細介紹Python unittest框架的使用方法和…

    編程 2025-04-29
  • com.alipay.sofa.bolt框架

    com.alipay.sofa.bolt框架是一款高性能、輕量級、可擴展的RPC框架。其廣泛被應用於阿里集團內部服務以及阿里雲上的服務。該框架通過NIO支持高並發,同時還內置了多種…

    編程 2025-04-29
  • Django框架:從簡介到項目實戰

    本文將從Django的介紹,以及如何搭建Django環境開始,逐步深入到Django模型、視圖、模板、表單,最後通過一個小型項目實戰,進行綜合性的應用,讓讀者獲得更深入的學習。 一…

    編程 2025-04-28
  • LuaEP:一款強大的Lua開發框架

    LuaEP是一個集成了可以快速開發web應用程序所需的組件的Lua開發框架。它以Lua語言為基礎,提供了許多常用接口和庫,使得開發者不需要從頭開始編寫web應用程序,而是專註於業務…

    編程 2025-04-28
  • Java持久層框架的複合主鍵實現

    用Java持久層框架來操作數據庫時,複合主鍵是常見的需求。這篇文章將詳細闡述javax.persistence複合主鍵的實現方式,並提供完整的示例代碼。 一、複合主鍵的定義 複合主…

    編程 2025-04-27
  • AMTVV:一個全能的開發框架

    AMTVV是一個面向現代Web應用程序的全能開發框架,它可以讓你的工作更加高效。AMTVV能夠處理各種各樣的技術棧,包括但不限於React、Angular、Vue和TypeScri…

    編程 2025-04-27
  • Python語言的MVC框架

    本文將從以下幾個方面詳細闡述Python語言的MVC框架: 一、MVC框架的基本概念 一般而言,MVC框架被分為Model,View,Controller三部分。Model代表數據…

    編程 2025-04-27

發表回復

登錄後才能評論