anet icon indicating copy to clipboard operation
anet copied to clipboard

Anet 1.0 Roadmap(讨论中)

Open liamwang opened this issue 6 years ago • 10 comments

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 验证
  • [ ] 单元测试
  • [ ] 示例

liamwang avatar Feb 20 '19 10:02 liamwang

广泛征求意见,欢迎讨论和补充。

liamwang avatar Feb 20 '19 10:02 liamwang

嗯,我可以从单位测试开始,即是熟悉项目,又是在路线图内

chinaq avatar Feb 21 '19 08:02 chinaq

我这几天重构了定时作业Scheduler, 晚些时候提PR (#5 )

Point:

  • 改用Timer控制调度, 减少线程开销
  • 添加调度Model
  • 添加StartNewAt方法, 能够进一步满足特殊需求
    • 延后执行, 可以实现如每天整点调度
    • 可以执行一次性任务

zaevi avatar Feb 21 '19 10:02 zaevi

期待jwt,这样我可以做个web的Sample

alexqueque avatar Feb 23 '19 05:02 alexqueque

这个可以用MySQL吗

ByronFeng avatar Feb 27 '19 10:02 ByronFeng

@ByronFeng 可以。Anet 集成了 Dapper,所以 Dapper 支持的 Anet 都支持。

liamwang avatar Feb 27 '19 15:02 liamwang

默认继承EntityBase的实体,能不能把Id这个默认字段交给用户自己起名定义类型; 目前只能是long类型。 Id的值现在也不是IdGen.NewId();而是0

ByronFeng avatar Mar 06 '19 09:03 ByronFeng

@ByronFeng

  1. 主键Id的类型可以自由指定的,比如字符串类型的Id:
public class User : EntityBase<string>{ } 
  1. Anet 约定 Entity 必须有且只有一个主键,且主键名为 “Id”。

    • 如果使主键名可由用户自己定义,那么就会失去 RepositoryBase 的通用性。当然,如果是旧项目,主键名已经不是“Id”,那么可以不用继承 EntityBase,也可以实现自己的 RepositoryBase。
    • 另外解释一下,为什么 Entity 必须有且只有一个主键。一个Entity通常有一个数据库表与之对应,但反过来,一个表并不一定有一个Entity与之对应,比如这样三个表:Post(Id), Tag(Id), PostTags(PostId, TagId)。前两个是 Entity,而 PostTags 表是双主键的,并不是一个业务上 Entity,对这个表的数据访问操作一般在 PostRepository 或 TagRepository 中。
  2. 创建Entity时,Id是要手动赋值的,比如:

new User{ Id = IdGen.NewId(), ... }
// 或
user.SetId();

Anet 之前的设计是在 EntityBase 的构造函数中默认给 Id 赋好值的。但考虑到有些情况构造 entity 并不需要生成新的 Id。比如导入大量数据,如果原始数据本来就带有Id的值,EntityBase构造函数中对Id的赋值操作就极大地浪费了资源。

liamwang avatar Mar 06 '19 15:03 liamwang

已移除 RepositoryBase,提供了 ServiceBase,不再依赖 IEntity。 Anet.Data 库已合并到 Anet 库。

liamwang avatar Jan 17 '22 06:01 liamwang

已完成 Dapper 日志记录 Hooks 扩展,方便追踪执行的 SQL 语句。

liamwang avatar Jan 17 '22 13:01 liamwang

由于本项目有很长一段时间没有维护,加上 .NET 8 有了很多最新特性,该 Issue 相关内容已经过时。

我近期开始重构 Anet,并重新计划 Roadmap。

liamwang avatar Jun 19 '23 02:06 liamwang