Skip to content

Commit 524fd43

Browse files
Develop (#14)
* Add<TParamSqlValid>: Add annotation for application to check whether params are legal * Upd<TParamSqlValid>: Update annotation for custom validate field * Fix<ConfigAdapter>: logout instance return error * Fix<Mysql>: Fix disconnect logic (Set status in advance cause data couldn't save) Fix<MaxLengthCheckError>: case error Change<UrlUtil>: Improve logic Fix<MethodAppReceiver>: Fix intervalMS logic * Change<Frame>: For couldn't stop frame properly, add some debug log * Change<RouterMatch>: Quote tire, waiting for next canary version, for completely hot-adapt path mechanism * Change<Frame>: Trim plug-in system, transposing partial implementation, add application command * Upd<README>: Update README, english version waiting
1 parent cb1334e commit 524fd43

21 files changed

Lines changed: 1596 additions & 105 deletions

File tree

README.md

Lines changed: 81 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,34 +26,93 @@
2626

2727
受到 Minecraft服务端 Bukkit及系列框架 启发,针对主体功能进行框架化完善,对从属功能使用 ModulePlugin 进行解耦化操作
2828

29+
## 项目历史
30+
31+
曾是为《Minecraft》 HyCraft 所开发的后端,后用于 Pubsher 服务器系列开发。
32+
33+
目前用于 PVPIN Studio/KxordMarket/TalexWiki 的后台开发。
34+
2935
## 项目介绍
3036

31-
一个简单的渐进式框架,为您提供类似 Bukkit 的开发体验
37+
TalexFrame 简称 TF,是一款用于构建系统性后端的 Java 转换式框架,通过使用知名库的迁移,提供标准的封装模板和简易的开发流程,让您上手更迅速,更便捷。它基于标准的 SpringBoot Annotation 风格提供统一 API标准 开发。
38+
39+
## 模块系统
40+
41+
我们使用诸如 apis, commands 的模块进行隔离
42+
43+
而我们所提供的基于模块的功能甚至能强于 SpringBoot 本身
3244

33-
项目主要可用于开发 Web网页 也可用作游戏后台
45+
## 系统设计
46+
47+
系统大体分为 3 个核心模块,各模块功能分别为:
48+
49+
- Launcher: 框架整体的启动逻辑,包括环境判断等,引导到 core 的启动
50+
- Core: 框架的整体核心
51+
- Checker: 框架的活性,耗能判断,包括对整体接收度的引领
3452

3553
## 可以做啥
3654

37-
通过 插件 实现功能的快速迭代 (也可以理解**微服务**
55+
TalexFrame 通过 Talexs 系列生态,为您提供全栈解决方案,在不同应用场景中实现代码统一化,项目系统化,应用集成化。目前,根据您的需求场景,您可以将 TalexFrame 用于不同的场景:
3856

39-
通过命令与插件等实现快速的功能开发 避免重复启动 SpringBoot 的时间
57+
- 增强型 SpringBoot 后端 (通过 talex-spring-boot-strater 使用)
4058

41-
使用本框架将无需等待各个模块的加载,数据库等的连接耗时
59+
- 修复型 Game 后台 (通过 TalexFrame + TGameAddon使用)
4260

43-
## 项目历史
61+
- 转换型 AllStack 服务器 (通过完全引用 TalexFrame 使用)
4462

45-
曾是为网易我的世界HyCraft打造的后端,后来用于 Pubsher 目前用于 PVPIN Studio 的后台开发
63+
针对不同应用场景,从上至下复杂度递增。除此之外,addon比plugin更加重量,这将在后续章节中逐步介绍。
4664

47-
目前,该项目也正在为 Kxord 项目进行保驾护航。
65+
## 项目优势
4866

49-
## 模块系统
67+
### 管理者
5068

51-
我们使用诸如 apis, commands 的模块进行隔离
69+
- 项目审核更有保障,选型更有参考
70+
- 系列生态集成更容易,转换数据自处理
71+
- 自然学习分配,自动调用转换
5272

53-
而我们所提供的基于模块的功能甚至能强于 SpringBoot 本身
73+
### 开发者
74+
75+
- 一站式开箱即用,多种场景满足不同需求
76+
- 前后端代码同步,部署更方便审查更容易
77+
- 知名框架运行时,并发和稳定性更有保障
78+
- 熟悉风格一键换,支持不同框架编写风格
79+
80+
### 学习者
81+
82+
- 学习到如何开发一个框架
83+
- 前后端全栈,全应用场景学习
84+
- 不同模式下(指框架的集成度)的分配
85+
- 较为规范的代码目录和格式
86+
- 较为精炼的算法参考和运行模式
87+
88+
## 转换式框架
89+
90+
项目通过 INature 抽象接口对所有数据进行管理,底层封装 FrameCreator 意为框架缔造者。
91+
92+
### INature
93+
94+
INature 自然处理,包含 自然语言处理,自然数据处理与自然拓展处理。
95+
96+
通过 INature 你可以在中等及以下复杂度应用场景忽略底层数据交换,直接对对象进行较复杂的数据操作。在需要时,数据将自动提取,并在无需时自动释放保存。这将大大提高系统稳定性和高可用性,通过系列生态,分布部署的同步性得到保障。在应用服务前往另外一个应用服务时,数据确保提前加载以便提高响应速度。
97+
98+
> 将在后续通过 AI 模型训练提高 自然处理 效率和准确率。
99+
100+
#### INatureTransfer
101+
102+
ITransfer 自然转换,通过系统整体架构实现对外开发和谐统一的 api接口,使得对接外部语言诸如 JavaScript,Lua,Python 等脚本语言更加容易,并且针对此类外部语言,系列生态提供相应的 SDK解决方案,供您快速使用或参考。
103+
104+
#### IDataNature
105+
106+
IDataNature 自然数据处理,通过内部的预测算法与缓存算法,提前加载数据和及时保存数据,大幅度提高QPS,利用 RAM 更合理。
107+
108+
#### ILangNature
109+
110+
ILangNature 自然语言处理,通过内部的集成AI,分析用户语言。可实现 国际化,图片分析与识别,后台管理识别,后台操作步骤判别,日志分析,拓展分析,插件分析。
54111

55112
## 插件系统
56113

114+
插件系统大体分为 Addon 与 Plugin 两大类。
115+
57116
你可以通过使用任意基于Jvm的语言来开发插件,我们所推荐的有 Java和Kotlin。
58117

59118
无论如何,请一定记住不要使用 SpringBoot 的东西而是使用本身的东西,因为 SpringBoot 的东西在插件卸载后会残留,这是非常严重的问题。
@@ -62,7 +121,17 @@
62121

63122
当然,你也可以使用我们的事件系统。详细的信息将在教程中提到
64123

65-
**当你不知所措时,尝试 TFrame 吧**
124+
当你不知所措时,尝试 TFrame 吧
125+
126+
### Addon
127+
128+
Addon 是重量级拓展,与 Plugin 呈现互补趋势。
129+
130+
#### Plugin
131+
132+
Plugin 是轻量级拓展,具有 移植性强,占用率低,拓展性高等优势。
133+
134+
****
66135

67136
## 开发计划
68137

src/main/java/com/talexframe/frame/TalexFrameApplication.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ public static void start(String[] args) {
2323

2424
context = SpringApplication.run(TalexFrameApplication.class, args);
2525

26+
context.setId("TalexFrameApp");
27+
2628
}
2729

2830
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package com.talexframe.frame.core.function.command.app;
2+
3+
import com.talexframe.frame.core.function.command.BaseCommand;
4+
import com.talexframe.frame.core.function.command.ISender;
5+
import com.talexframe.frame.core.modules.application.TApp;
6+
import com.talexframe.frame.core.modules.network.connection.TRequest;
7+
import com.talexframe.frame.core.pojo.annotations.TCmd;
8+
import com.talexframe.frame.core.pojo.wrapper.WrappedSender;
9+
import com.talexframe.frame.core.talex.TFrame;
10+
11+
import java.lang.reflect.Method;
12+
13+
/**
14+
* <br /> {@link com.talexframe.frame.core.function.command.app Package }
15+
*
16+
* @author TalexDreamSoul
17+
* 2022/07/26 09:23:28 <br /> Project: TalexFrame <br />
18+
*/
19+
public class appCmd extends BaseCommand {
20+
21+
public appCmd() {
22+
23+
super(TFrame.tframe.getFrameSender(), "app", new String[]{"application","apps","应用件"}, "应用件帮助");
24+
}
25+
26+
@Override
27+
public boolean executeCommand(ISender sender, String wholeCommand, String matchedLabel, String[] args) {
28+
29+
return false;
30+
}
31+
32+
@TCmd("list")
33+
public void onListApp(WrappedSender sender) {
34+
35+
sender.sendMessage("%divider%");
36+
37+
for( TApp c : this.tframe.getAppManager().getControllers().values() ) {
38+
39+
Class<?> clz = c.getClass();
40+
41+
sender.sendMessage(" @" + clz.getName());
42+
43+
for( Method method : clz.getMethods() ) {
44+
45+
TRequest tRequest = method.getAnnotation(TRequest.class);
46+
47+
if( tRequest == null ) {
48+
49+
sender.sendMessage(" - " + method.getName() + " / ×");
50+
51+
} else {
52+
53+
sender.sendMessage(" - " + method.getName() + " / " + tRequest.value());
54+
55+
}
56+
57+
}
58+
59+
}
60+
61+
sender.sendMessage("%divider%");
62+
63+
}
64+
65+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
/**
2+
* Application 应用命令
3+
* {@link com.talexframe.frame.core.function.command.app Package }
4+
*
5+
* @author TalexDreamSoul 22/07/26 上午 09:22 Project: TalexFrame
6+
*/
7+
package com.talexframe.frame.core.function.command.app;

src/main/java/com/talexframe/frame/core/function/listener/FrameMajorListener.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,16 +75,15 @@ public void onStopped(ContextStoppedEvent event) {
7575

7676
TFrame.tframe.callEvent(new FramePreUnInstallEvent(System.nanoTime() - TalexFrameApplication.startedTimeStamp));
7777

78+
// TFrame.tframe.shutdown();
7879
}
7980

8081
/**
8182
* SpringBoot Application Closed
8283
*/
8384
@SneakyThrows
8485
@EventListener
85-
public void onStopped(ContextClosedEvent event) {
86-
87-
TFrame.tframe.shutdown();
86+
public void onClosed(ContextClosedEvent event) {
8887

8988
log.warn("框架已停止.");
9089

src/main/java/com/talexframe/frame/core/modules/network/connection/NetworkManager.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
*/
1717
@Getter
1818
@Slf4j
19+
@Deprecated
1920
public class NetworkManager {
2021

2122
public static final NetworkManager INSTANCE = new NetworkManager();

0 commit comments

Comments
 (0)