XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEExtension.NetCore.ServerInteractive

[DLL] Server interaction extension, including user identity verification and querying in conjunction with AutoConfig

公开
关注 0 Fork 0 Star 0
返回提交历史

XFEstudio/XFEExtension.NetCore.ServerInteractive

重构XFE服务器核心配置,支持集中化选项

本次提交重构了XFE服务器核心的配置方式: - 新增XFEServerCoreOptions类,集中管理核心配置项; - XFEServerCoreBuilder支持通过配置对象或委托灵活构建; - 移除XFEServerCore构造函数中的默认命名,统一由Builder处理; - 相关属性迁移至配置类,构建时赋值; - 优化默认服务器名称生成逻辑; - 提升了代码结构的清晰度和可维护性。

139fe93
XFE工作室室长 <mail@xfegzs.com>
提交于

代码差异

3 个文件 +53 -12
Modified XFEExtension.NetCore.ServerInteractive/Options/XFEServerCoreOptions.cs +26 -2
@@ -1,6 +1,30 @@
1 namespace XFEExtension.NetCore.ServerInteractive.Options;
1 using XFEExtension.NetCore.CyberComm;
2 2
3 namespace XFEExtension.NetCore.ServerInteractive.Options;
4
5 /// <summary>
6 /// XFE服务器核心选项
7 /// </summary>
3 8 public class XFEServerCoreOptions
4 9 {
5
10 /// <summary>
11 /// 绑定的IP地址(服务初始化执行完成后才会刷新)
12 /// </summary>
13 public string BindingIPAddress { get; set; } = string.Empty;
14 /// <summary>
15 /// 核心服务器名称
16 /// </summary>
17 public string ServerCoreName { get; set; } = string.Empty;
18 /// <summary>
19 /// 是否自动对Json字符串进行反转义处理,默认为true
20 /// </summary>
21 public bool AutoUnescapeJson { get; set; } = true;
22 /// <summary>
23 /// 是否接收非标准的Json字符串,默认为true
24 /// </summary>
25 public bool AcceptNonStandardJson { get; set; } = true;
26 /// <summary>
27 /// 获取IP地址的函数,默认为从请求事件参数中获取客户端IP地址
28 /// </summary>
29 public Func<CyberCommRequestEventArgs, string> GetIpFunction { get; set; } = args => args.ClientIP;
6 30 }
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Server/XFEServerCore.cs +0 -6
@@ -19,7 +19,6 @@ namespace XFEExtension.NetCore.ServerInteractive.Utilities.Server;
19 19 [CreateImpl]
20 20 public abstract class XFEServerCore : ServerCoreServiceBase
21 21 {
22 static int serverCount = 1;
23 22 /// <summary>
24 23 /// 是否自动对Json字符串进行反转义处理,默认为true
25 24 /// </summary>
@@ -61,11 +60,6 @@ public abstract class XFEServerCore : ServerCoreServiceBase
61 60 /// </summary>
62 61 public CyberCommServer CyberCommServer { get; internal set; } = new();
63 62
64 /// <summary>
65 /// XFE核心服务器
66 /// </summary>
67 public XFEServerCore() => ServerCoreName = $"XFE服务器-{serverCount++}";
68
69 63 private async void CyberCommServer_RequestReceived(object? sender, CyberCommRequestEventArgs e)
70 64 {
71 65 var r = new ServerCoreReturnArgs
Modified XFEExtension.NetCore.ServerInteractive/Utilities/Server/XFEServerCoreBuilder.cs +27 -4
@@ -1,7 +1,7 @@
1 1 using XFEExtension.NetCore.AutoImplement;
2 using XFEExtension.NetCore.CyberComm;
3 2 using XFEExtension.NetCore.ServerInteractive.Implements;
4 3 using XFEExtension.NetCore.ServerInteractive.Interfaces.CoreService;
4 using XFEExtension.NetCore.ServerInteractive.Options;
5 5 using XFEExtension.NetCore.StringExtension;
6 6
7 7 namespace XFEExtension.NetCore.ServerInteractive.Utilities.Server;
@@ -12,6 +12,7 @@ namespace XFEExtension.NetCore.ServerInteractive.Utilities.Server;
12 12 [CreateImpl]
13 13 public abstract class XFEServerCoreBuilder : XFEBuilderBase<XFEServerCoreBuilder>
14 14 {
15 static int serverCount = 1;
15 16 readonly XFEServerCore xFEServerCore = new XFEServerCoreImpl();
16 17 readonly List<IServerCoreOriginalService> serverCoreServiceList = [];
17 18 readonly List<IServerCoreVerifyService> serverCoreVerifyServiceList = [];
@@ -134,7 +135,7 @@ public abstract class XFEServerCoreBuilder : XFEBuilderBase<XFEServerCoreBuilder
134 135 /// 构建XFE服务器核心
135 136 /// </summary>
136 137 /// <returns>XFE服务器核心</returns>
137 public XFEServerCore Build(string? name = "")
138 public XFEServerCore Build(XFEServerCoreOptions? xFEServerCoreOptions = null)
138 139 {
139 140 foreach (var serverCoreService in serverCoreServiceList)
140 141 {
@@ -145,8 +146,30 @@ public abstract class XFEServerCoreBuilder : XFEBuilderBase<XFEServerCoreBuilder
145 146 xFEServerCore.serverCoreVerifyAsyncServiceList = serverCoreVerifyAsyncServiceList;
146 147 xFEServerCore.standardCoreServiceDictionary = serverStandardCoreServiceDictionary;
147 148 xFEServerCore.standardMultiCoreServiceDictionary = serverMultiStandardCoreServiceDictionary;
148 if (!name.IsNullOrEmpty())
149 xFEServerCore.ServerCoreName = name;
149
150 if (xFEServerCoreOptions is not null)
151 {
152 xFEServerCore.ServerCoreName = xFEServerCoreOptions.ServerCoreName;
153 xFEServerCore.AutoUnescapeJson = xFEServerCoreOptions.AutoUnescapeJson;
154 xFEServerCore.AcceptNonStandardJson = xFEServerCoreOptions.AcceptNonStandardJson;
155 xFEServerCore.GetIpFunction = xFEServerCoreOptions.GetIpFunction;
156 if(!xFEServerCoreOptions.BindingIPAddress.IsNullOrEmpty())
157 xFEServerCore.BindingIPAddress = xFEServerCoreOptions.BindingIPAddress;
158 }
159
160 if (xFEServerCore.ServerCoreName.IsNullOrEmpty())
161 xFEServerCore.ServerCoreName = $"XFE服务器-{serverCount++}";
150 162 return xFEServerCore;
151 163 }
164
165 /// <summary>
166 /// 构建XFE服务器核心
167 /// </summary>
168 /// <returns>XFE服务器核心</returns>
169 public XFEServerCore Build(Action<XFEServerCoreOptions> optionsBuilder)
170 {
171 var xFEServerCoreOptions = new XFEServerCoreOptions();
172 optionsBuilder(xFEServerCoreOptions);
173 return Build(xFEServerCoreOptions);
174 }
152 175 }