ET框架有一個好處就是很多組件在客戶端和服務端幾乎都是可以通用的。比如EventSystem組件,和在客戶端是一樣的使用邏輯,具體可以看這篇文章《ET框架學習——EventSystem類》。
在加載完服務端的Hotfix和Model的dll後,開始後面就是開始讀取服務端的配置,並根據配置加載相應的組件。服務端的配置的讀取方法使用的是CommandLine,該類用於讀取命令行輸入,並且將輸入參數解析成Options類,存放在OptionComponent組件裏面。這裏的參數來自客戶端的配置文件,在Config\StartConfig目錄下。裏面的參數是按照類似json的格式定義的,LocalAllServer.txt定義的內容如下圖(我自己寫成這樣的格式的,方便閱讀):
配置的讀取是從客戶端貓大寫的工具裏面讀取的,具體在ServerCommandLineEditor類裏面。啓動服務器的時候,傳遞的參數如下:
string arguments = $"App.dll --appId={startConfig.AppId} --appType={startConfig.AppType} --config=../Config/StartConfig/{this.fileName}";
ProcessStartInfo info = new ProcessStartInfo("dotnet", arguments) { UseShellExecute = true, WorkingDirectory = @"../Bin/" };
讀取完配置後,將配置保存在StartConfigComponent組件裏面,該組件在初始化時會根據配置的情況,分門別類將配置內容存進行緩存。接下來就是添加網絡相關的組件OpcodeTypeComponent和MessageDispatherComponent組件,具體可看這篇文章《ET框架學習——OpcodeTypeComponent組件和MessageDispatherComponent組件》。
最後就是根據配置的AppType類型,添加對應的組件,這裏我選擇的是AllServer類型,所有相關組件都會添加,具體可以參看源碼。