anet
anet copied to clipboard
Anet 1.0 Roadmap(讨论中)
Anet 包含三个库:
- Anet 基础库
- Anet.Job 扩展库,用于定时作业
- Anet.Web 扩展库,用于网站和WebAPI(目前不建议使用)
Schedule
| Release | Time frame |
|---|---|
| 1.0.0 | Q3 2022 |
TODO
Anet
- [x] 基于 Dapper 封闭利于 DI 的 Db 实例
- [x] 扩展 Dapper,支持追踪打印 SQL 语句
- [x] 通用 ServiceBase 基类
- [x] 基于雪花算法的 ID 生成器
- [x] 常见加密/解密工具类
- [ ] 常用 Utility (完成: 3)
- [ ] 常用 Model (完成: 2)
- [ ] 常用类型扩展 (完成: 5)
- [ ] 单元测试
- [ ] 文档
Anet.Job
- [x] 定时作业基础功能
- [x] 集成日志
- [ ] 单元测试
- [x] 示例
Anet.Web
- [x] 全局异常处理
- [ ] 集成日志
- [x] 封装 JWT 验证
- [ ] 单元测试
- [ ] 示例
广泛征求意见,欢迎讨论和补充。
嗯,我可以从单位测试开始,即是熟悉项目,又是在路线图内
我这几天重构了定时作业Scheduler, 晚些时候提PR (#5 )
Point:
- 改用Timer控制调度, 减少线程开销
- 添加调度Model
- 添加StartNewAt方法, 能够进一步满足特殊需求
- 延后执行, 可以实现如每天整点调度
- 可以执行一次性任务
期待jwt,这样我可以做个web的Sample
这个可以用MySQL吗
@ByronFeng 可以。Anet 集成了 Dapper,所以 Dapper 支持的 Anet 都支持。
默认继承EntityBase的实体,能不能把Id这个默认字段交给用户自己起名定义类型; 目前只能是long类型。 Id的值现在也不是IdGen.NewId();而是0
@ByronFeng
- 主键Id的类型可以自由指定的,比如字符串类型的Id:
public class User : EntityBase<string>{ }
-
Anet 约定 Entity 必须有且只有一个主键,且主键名为 “Id”。
- 如果使主键名可由用户自己定义,那么就会失去 RepositoryBase 的通用性。当然,如果是旧项目,主键名已经不是“Id”,那么可以不用继承 EntityBase,也可以实现自己的 RepositoryBase。
- 另外解释一下,为什么 Entity 必须有且只有一个主键。一个Entity通常有一个数据库表与之对应,但反过来,一个表并不一定有一个Entity与之对应,比如这样三个表:Post(Id), Tag(Id), PostTags(PostId, TagId)。前两个是 Entity,而
PostTags表是双主键的,并不是一个业务上 Entity,对这个表的数据访问操作一般在 PostRepository 或 TagRepository 中。
-
创建Entity时,Id是要手动赋值的,比如:
new User{ Id = IdGen.NewId(), ... }
// 或
user.SetId();
Anet 之前的设计是在 EntityBase 的构造函数中默认给 Id 赋好值的。但考虑到有些情况构造 entity 并不需要生成新的 Id。比如导入大量数据,如果原始数据本来就带有Id的值,EntityBase构造函数中对Id的赋值操作就极大地浪费了资源。
已移除 RepositoryBase,提供了 ServiceBase,不再依赖 IEntity。 Anet.Data 库已合并到 Anet 库。
已完成 Dapper 日志记录 Hooks 扩展,方便追踪执行的 SQL 语句。
由于本项目有很长一段时间没有维护,加上 .NET 8 有了很多最新特性,该 Issue 相关内容已经过时。
我近期开始重构 Anet,并重新计划 Roadmap。