XFEExtension.NetCore.ServerInteractive
[DLL] Server interaction extension, including user identity verification and querying in conjunction with AutoConfig
关注
0
Fork
0
Star
0
返回提交历史
Modified
XFEExtension.NetCore.ServerInteractive.Test/Program.cs
+2
-2
Deleted
XFEExtension.NetCore.ServerInteractive/Implements/CoreService/ServerCoreVerifyAsyncServiceBase.cs
+0
-14
Modified
XFEExtension.NetCore.ServerInteractive/Implements/CoreService/ServerCoreVerifyServiceBase.cs
+5
-4
Modified
XFEExtension.NetCore.ServerInteractive/Implements/CoreService/XFEServerCoreServiceBase.cs
+1
-1
Modified
XFEExtension.NetCore.ServerInteractive/Interfaces/CoreService/IServerCoreStandardService.cs
+1
-1
Deleted
XFEExtension.NetCore.ServerInteractive/Interfaces/CoreService/IServerCoreVerifyAsyncService.cs
+0
-19
Modified
XFEExtension.NetCore.ServerInteractive/Interfaces/CoreService/IServerCoreVerifyService.cs
+10
-10
Modified
XFEExtension.NetCore.ServerInteractive/Interfaces/CoreService/IXFEServerCoreServiceBase.cs
+3
-113
Added
XFEExtension.NetCore.ServerInteractive/Interfaces/CoreService/IXFEStandardServerCoreServiceBase.cs
+119
-0
Modified
XFEExtension.NetCore.ServerInteractive/Options/XFEStandardServerCoreOptions.cs
+16
-0
Modified
XFEExtension.NetCore.ServerInteractive/Utilities/Extensions/XFEClientRequesterBuilderExtensions.cs
+1
-1
Modified
XFEExtension.NetCore.ServerInteractive/Utilities/Extensions/XFEServerCoreBuilderExtensions.cs
+17
-6
Deleted
XFEExtension.NetCore.ServerInteractive/Utilities/Server/Services/CoreService/EntryPointVerifyServer.cs
+0
-31
Added
XFEExtension.NetCore.ServerInteractive/Utilities/Server/Services/CoreService/EntryPointVerifyService.cs
+29
-0
Modified
XFEExtension.NetCore.ServerInteractive/Utilities/Server/XFEServerCore.cs
+7
-9
Modified
XFEExtension.NetCore.ServerInteractive/Utilities/Server/XFEServerCoreBuilder.cs
+8
-32
Modified
XFEExtension.NetCore.ServerInteractive/XFEExtension.NetCore.ServerInteractive.csproj
+6
-3
XFEstudio/XFEExtension.NetCore.ServerInteractive
重构服务接口与校验机制,提升标准化与扩展性
本次提交对核心服务接口进行了标准化重构,新增 IXFEStandardServerCoreServiceBase 作为统一基类,简化了校验服务实现,移除异步校验接口,所有校验服务统一为同步/异步方法。校验服务注册方式改为工厂模式,避免状态污染,并支持通过配置灵活启用内置服务。同步更新客户端请求构建器,修正默认端口与测试密码,提升整体可维护性和扩展性。版本号提升至 2.2.0。
c7e941c
代码差异
17 个文件
+225
-246
@@ -18,7 +18,7 @@ internal class Program
18
18
}, response => response)
19
19
.Build(options =>
20
20
{
21
options.RequestAddress = "http://localhost:8080/management";
21
options.RequestAddress = "http://localhost:3300/management";
22
22
});
23
23
24
24
private static readonly TableRequester TableRequester = new();
@@ -30,7 +30,7 @@ internal class Program
30
30
Console.WriteLine($"请求完成:{e.StatusCode}\t{e.Message}");
31
31
}
32
32
33
[SMTest("Admin", "12345641")]
33
[SMTest("Admin", "123456")]
34
34
public static async Task Login(string account, string password)
35
35
{
36
36
var result = await XFEClientRequester.Request<UserLoginResult<UserFaceInfo>>("login", account, password);
@@ -1,14 +0,0 @@
1
using XFEExtension.NetCore.CyberComm;
2
using XFEExtension.NetCore.ServerInteractive.Interfaces.CoreService;
3
using XFEExtension.NetCore.ServerInteractive.Models.ServerModels;
4
5
namespace XFEExtension.NetCore.ServerInteractive.Implements.CoreService;
6
7
/// <summary>
8
/// 服务器核心校验服务基类
9
/// </summary>
10
public abstract class ServerCoreVerifyAsyncServiceBase : XFEServerCoreServiceBase, IServerCoreVerifyAsyncService
11
{
12
/// <inheritdoc/>
13
public abstract Task<bool> VerifyRequestAsync(object? sender, CyberCommRequestEventArgs e, ServerCoreReturnArgs r);
14
}
@@ -1,6 +1,4 @@
1
using XFEExtension.NetCore.CyberComm;
2
using XFEExtension.NetCore.ServerInteractive.Interfaces.CoreService;
3
using XFEExtension.NetCore.ServerInteractive.Models.ServerModels;
1
using XFEExtension.NetCore.ServerInteractive.Interfaces.CoreService;
4
2
5
3
namespace XFEExtension.NetCore.ServerInteractive.Implements.CoreService;
6
4
@@ -10,5 +8,8 @@ namespace XFEExtension.NetCore.ServerInteractive.Implements.CoreService;
10
8
public abstract class ServerCoreVerifyServiceBase : XFEServerCoreServiceBase, IServerCoreVerifyService
11
9
{
12
10
/// <inheritdoc/>
13
public abstract bool VerifyRequest(object? sender, CyberCommRequestEventArgs e, ServerCoreReturnArgs r);
11
public virtual bool VerifyRequest() => true;
12
13
/// <inheritdoc/>
14
public virtual Task<bool> VerifyRequestAsync() => Task.FromResult(true);
14
15
}
@@ -9,7 +9,7 @@ namespace XFEExtension.NetCore.ServerInteractive.Implements.CoreService;
9
9
/// <summary>
10
10
/// 服务器核心服务基类
11
11
/// </summary>
12
public abstract class XFEServerCoreServiceBase : IXFEServerCoreServiceBase
12
public abstract class XFEServerCoreServiceBase : IXFEStandardServerCoreServiceBase
13
13
{
14
14
/// <inheritdoc/>
15
15
public bool Handled { get => ReturnArgs.Handled; set => ReturnArgs.Handled = value; }
@@ -3,7 +3,7 @@
3
3
/// <summary>
4
4
/// 服务器标准核心服务
5
5
/// </summary>
6
public interface IServerCoreStandardService : IXFEServerCoreServiceBase
6
public interface IServerCoreStandardService : IXFEStandardServerCoreServiceBase
7
7
{
8
8
/// <summary>
9
9
/// 服务器标准核心服务初始化事件(在请求初始化的时候执行)
@@ -1,19 +0,0 @@
1
using XFEExtension.NetCore.CyberComm;
2
using XFEExtension.NetCore.ServerInteractive.Models.ServerModels;
3
4
namespace XFEExtension.NetCore.ServerInteractive.Interfaces.CoreService;
5
6
/// <summary>
7
/// 服务器核心初始化服务
8
/// </summary>
9
public interface IServerCoreVerifyAsyncService : IXFEServerCoreServiceBase
10
{
11
/// <summary>
12
/// 校验请求
13
/// </summary>
14
/// <param name="sender"></param>
15
/// <param name="e"></param>
16
/// <param name="r"></param>
17
/// <returns></returns>
18
Task<bool> VerifyRequestAsync(object? sender, CyberCommRequestEventArgs e, ServerCoreReturnArgs r);
19
}
@@ -1,19 +1,19 @@
1
using XFEExtension.NetCore.CyberComm;
2
using XFEExtension.NetCore.ServerInteractive.Models.ServerModels;
3
4
namespace XFEExtension.NetCore.ServerInteractive.Interfaces.CoreService;
1
namespace XFEExtension.NetCore.ServerInteractive.Interfaces.CoreService;
5
2
6
3
/// <summary>
7
4
/// 服务器核心初始化服务
8
5
/// </summary>
9
public interface IServerCoreVerifyService : IXFEServerCoreServiceBase
6
public interface IServerCoreVerifyService : IXFEStandardServerCoreServiceBase
10
7
{
11
8
/// <summary>
12
9
/// 校验请求
13
10
/// </summary>
14
/// <param name="sender"></param>
15
/// <param name="e"></param>
16
/// <param name="r"></param>
17
/// <returns></returns>
18
bool VerifyRequest(object? sender, CyberCommRequestEventArgs e, ServerCoreReturnArgs r);
11
/// <returns>如果请求通过校验,返回true;否则返回false。</returns>
12
bool VerifyRequest();
13
14
/// <summary>
15
/// 校验请求
16
/// </summary>
17
/// <returns>如果请求通过校验,返回true;否则返回false。</returns>
18
Task<bool> VerifyRequestAsync();
19
19
}
@@ -1,124 +1,14 @@
1
using System.Net;
2
using XFEExtension.NetCore.ServerInteractive.Models.ServerModels;
3
using XFEExtension.NetCore.ServerInteractive.Utilities.Server;
4
using XFEExtension.NetCore.XFETransform.JsonConverter;
1
using XFEExtension.NetCore.ServerInteractive.Utilities.Server;
5
2
6
3
namespace XFEExtension.NetCore.ServerInteractive.Interfaces.CoreService;
7
4
8
5
/// <summary>
9
/// XFE服务器核心服务
6
/// XFE服务器核心服务基类接口
10
7
/// </summary>
11
8
public interface IXFEServerCoreServiceBase
12
9
{
13
/// <summary>
14
/// 当前请求的执行语句
15
/// </summary>
16
string Execute { get; set; }
17
18
/// <summary>
19
/// 客户端IP地址
20
/// </summary>
21
string ClientIP { get; set; }
22
23
/// <summary>
24
/// 是否是标准错误(如果是标准错误,服务器将自动处理并返回给客户端;如果不是,服务器将输出报错及堆栈信息)
25
/// </summary>
26
bool IsStandardError { get; set; }
27
28
/// <summary>
29
/// 错误抛出是否已经处理完成(如果为true,表示错误已经被处理,不需要ErrorProcessor再次处理)
30
/// </summary>
31
bool Handled { get; set; }
32
33
10
/// <summary>
34
11
/// 服务器核心
35
12
/// </summary>
36
13
XFEServerCore XFEServerCore { get; set; }
37
38
/// <summary>
39
/// 当前请求的 json 节点
40
/// </summary>
41
QueryableJsonNode? Json { get; set; }
42
43
/// <summary>
44
/// 当前请求的返回参数
45
/// </summary>
46
ServerCoreReturnArgs ReturnArgs { get; set; }
47
48
/// <summary>
49
/// 当前请求的 HttpListenerRequest 对象
50
/// </summary>
51
HttpListenerRequest Request { get; set; }
52
53
/// <summary>
54
/// Sends a reply message asynchronously using the current context.
55
/// </summary>
56
/// <param name="message">The message text to send as a reply. Cannot be null or empty.</param>
57
/// <returns>A task that represents the asynchronous send operation.</returns>
58
Task Send(string message);
59
60
/// <summary>
61
/// Sends a binary message using the specified buffer asynchronously.
62
/// </summary>
63
/// <param name="buffer">The byte array containing the data to be sent as the binary message. Cannot be null.</param>
64
/// <returns>A task that represents the asynchronous send operation.</returns>
65
Task Send(byte[] buffer);
66
67
/// <summary>
68
/// Sends the contents of the specified stream as a binary message asynchronously.
69
/// </summary>
70
/// <param name="stream">The stream containing the data to send. The stream must be readable and positioned at the beginning of the data
71
/// to be sent.</param>
72
/// <returns>A task that represents the asynchronous send operation.</returns>
73
Task Send(Stream stream);
74
75
/// <summary>
76
/// Sends an object as JSON asynchronously.
77
/// </summary>
78
/// <param name="data">The object to serialize to JSON and send.</param>
79
Task Send(object data);
80
81
/// <summary>
82
/// 关闭并返回 OK
83
/// </summary>
84
void OK();
85
86
/// <summary>
87
/// 返回信息并关闭
88
/// </summary>
89
/// <param name="message">要返回的信息</param>
90
Task Close(string message);
91
92
/// <summary>
93
/// 结束与客户端的通讯
94
/// </summary>
95
/// <param name="buffer"></param>
96
Task Close(byte[] buffer);
97
98
/// <summary>
99
/// 结束与客户端的通讯
100
/// </summary>
101
/// <param name="stream"></param>
102
Task Close(Stream stream);
103
104
/// <summary>
105
/// 返回错误信息并关闭
106
/// </summary>
107
/// <param name="message">要返回的错误信息</param>
108
/// <param name="code">HTTP 状态码</param>
109
Task CloseWithError(string message, HttpStatusCode code = HttpStatusCode.BadRequest);
110
111
/// <summary>
112
/// 以异常结束与客户端的通讯
113
/// </summary>
114
/// <param name="message"></param>
115
/// <param name="code"></param>
116
/// <param name="handled"></param>
117
ServerCoreReturnArgs Error(string message, HttpStatusCode code = HttpStatusCode.BadRequest, bool handled = false);
118
119
/// <summary>
120
/// Sends the specified object serialized as JSON and closes the connection.
121
/// </summary>
122
/// <param name="data">The object to serialize to JSON and send.</param>
123
Task Close(object data);
124
}
14
}
@@ -0,0 +1,119 @@
1
using System.Net;
2
using XFEExtension.NetCore.CyberComm;
3
using XFEExtension.NetCore.ServerInteractive.Models.ServerModels;
4
using XFEExtension.NetCore.XFETransform.JsonConverter;
5
6
namespace XFEExtension.NetCore.ServerInteractive.Interfaces.CoreService;
7
8
/// <summary>
9
/// XFE服务器核心标准服务基类接口
10
/// </summary>
11
public interface IXFEStandardServerCoreServiceBase : IXFEServerCoreServiceBase
12
{
13
/// <summary>
14
/// 当前请求的执行语句
15
/// </summary>
16
string Execute { get; set; }
17
18
/// <summary>
19
/// 客户端IP地址
20
/// </summary>
21
string ClientIP { get; set; }
22
23
/// <summary>
24
/// 是否是标准错误(如果是标准错误,服务器将自动处理并返回给客户端;如果不是,服务器将输出报错及堆栈信息)
25
/// </summary>
26
bool IsStandardError { get; set; }
27
28
/// <summary>
29
/// 错误抛出是否已经处理完成(如果为true,表示错误已经被处理,不需要ErrorProcessor再次处理)
30
/// </summary>
31
bool Handled { get; set; }
32
33
/// <summary>
34
/// 当前请求的 json 节点
35
/// </summary>
36
QueryableJsonNode? Json { get; set; }
37
38
/// <summary>
39
/// 当前请求的返回参数
40
/// </summary>
41
ServerCoreReturnArgs ReturnArgs { get; set; }
42
43
/// <summary>
44
/// 当前请求的 HttpListenerRequest 对象
45
/// </summary>
46
HttpListenerRequest Request { get; set; }
47
48
/// <summary>
49
/// Sends a reply message asynchronously using the current context.
50
/// </summary>
51
/// <param name="message">The message text to send as a reply. Cannot be null or empty.</param>
52
/// <returns>A task that represents the asynchronous send operation.</returns>
53
Task Send(string message);
54
55
/// <summary>
56
/// Sends a binary message using the specified buffer asynchronously.
57
/// </summary>
58
/// <param name="buffer">The byte array containing the data to be sent as the binary message. Cannot be null.</param>
59
/// <returns>A task that represents the asynchronous send operation.</returns>
60
Task Send(byte[] buffer);
61
62
/// <summary>
63
/// Sends the contents of the specified stream as a binary message asynchronously.
64
/// </summary>
65
/// <param name="stream">The stream containing the data to send. The stream must be readable and positioned at the beginning of the data
66
/// to be sent.</param>
67
/// <returns>A task that represents the asynchronous send operation.</returns>
68
Task Send(Stream stream);
69
70
/// <summary>
71
/// Sends an object as JSON asynchronously.
72
/// </summary>
73
/// <param name="data">The object to serialize to JSON and send.</param>
74
Task Send(object data);
75
76
/// <summary>
77
/// 关闭并返回 OK
78
/// </summary>
79
void OK();
80
81
/// <summary>
82
/// 返回信息并关闭
83
/// </summary>
84
/// <param name="message">要返回的信息</param>
85
Task Close(string message);
86
87
/// <summary>
88
/// 结束与客户端的通讯
89
/// </summary>
90
/// <param name="buffer"></param>
91
Task Close(byte[] buffer);
92
93
/// <summary>
94
/// 结束与客户端的通讯
95
/// </summary>
96
/// <param name="stream"></param>
97
Task Close(Stream stream);
98
99
/// <summary>
100
/// 返回错误信息并关闭
101
/// </summary>
102
/// <param name="message">要返回的错误信息</param>
103
/// <param name="code">HTTP 状态码</param>
104
Task CloseWithError(string message, HttpStatusCode code = HttpStatusCode.BadRequest);
105
106
/// <summary>
107
/// 以异常结束与客户端的通讯
108
/// </summary>
109
/// <param name="message"></param>
110
/// <param name="code"></param>
111
/// <param name="handled"></param>
112
ServerCoreReturnArgs Error(string message, HttpStatusCode code = HttpStatusCode.BadRequest, bool handled = false);
113
114
/// <summary>
115
/// Sends the specified object serialized as JSON and closes the connection.
116
/// </summary>
117
/// <param name="data">The object to serialize to JSON and send.</param>
118
Task Close(object data);
119
}
@@ -8,6 +8,22 @@ namespace XFEExtension.NetCore.ServerInteractive.Options;
8
8
/// </summary>
9
9
public class XFEStandardServerCoreOptions<T> where T : class
10
10
{
11
/// <summary>
12
/// 使用服务器入口点校验服务(默认为true,启用服务器入口点校验服务,服务器入口点校验服务用于校验请求是否来自合法的入口点)
13
/// </summary>
14
public bool UseEntryPointVerifyService { get; set; } = true;
15
/// <summary>
16
/// 使用日期统计服务(默认为true,启用日期统计服务,日期统计服务用于统计每天的请求数量等信息,可以用于监控服务器的使用情况)
17
/// </summary>
18
public bool UseDailyCounterService { get; set; } = true;
19
/// <summary>
20
/// 使用XFE异常处理服务(默认为true,启用XFE异常处理服务,XFE异常处理服务用于处理服务器核心服务中的异常,并将异常信息返回给客户端)
21
/// </summary>
22
public bool UseXFEErrorProcessService { get; set; } = true;
23
/// <summary>
24
/// 使用连接检查服务(默认为true,启用连接检查服务,连接检查服务用于检查服务器与客户端之间的连接是否正常,可以用于监控服务器的连接状态)
25
/// </summary>
26
public bool UseConnectService { get; set; } = true;
11
27
/// <summary>
12
28
/// 获取用户函数
13
29
/// </summary>
@@ -75,7 +75,7 @@ public static class XFEClientRequesterBuilderExtensions
75
75
/// </summary>
76
76
/// <typeparam name="T">登录返回用户接口类型</typeparam>
77
77
/// <returns></returns>
78
public XFEClientRequesterBuilder AddLoginRequest<T>() where T : IUserFaceInfo => xFEClientRequesterBuilder.AddXFERequest<LoginRequestService<T>>("login").AddXFERequest<ReloginRequestService<T>>("relogin");
78
public XFEClientRequesterBuilder AddLoginRequest<T>() where T : IUserFaceInfo => xFEClientRequesterBuilder.AddStandardRequest<LoginRequestService<T>>("login").AddStandardRequest<ReloginRequestService<T>>("relogin");
79
79
80
80
/// <summary>
81
81
/// 使用XFE标准服务器服务请求
@@ -78,7 +78,7 @@ public static class XFEServerCoreBuilderExtensions
78
78
/// 添加服务器入口点校验
79
79
/// </summary>
80
80
/// <returns></returns>
81
public XFEServerCoreBuilder AddEntryPointVerify() => xFEServerCoreBuilder.AddVerifyService<EntryPointVerifyServer>();
81
public XFEServerCoreBuilder AddEntryPointVerify() => xFEServerCoreBuilder.AddVerifyService<EntryPointVerifyService>();
82
82
83
83
/// <summary>
84
84
/// 添加服务器日志请求
@@ -133,11 +133,22 @@ public static class XFEServerCoreBuilderExtensions
133
133
}
134
134
135
135
// Common services that don't strictly require user functions
136
builder = builder.AddEntryPointVerify()
137
.AddDailyCounterService()
138
.AddXFEErrorProcessService()
139
.AddConnectService();
140
136
if (options.UseEntryPointVerifyService)
137
{
138
builder = builder.AddEntryPointVerify();
139
}
140
if (options.UseDailyCounterService)
141
{
142
builder = builder.AddDailyCounterService();
143
}
144
if (options.UseXFEErrorProcessService)
145
{
146
builder = builder.AddXFEErrorProcessService();
147
}
148
if (options.UseConnectService)
149
{
150
builder = builder.AddConnectService();
151
}
141
152
// Add services that depend on user functions if available
142
153
if (hasUserFunctions)
143
154
{