Targo 文件说明
不知道从哪里开始说起,那就先从结构设计和文件搞起,然后在从结构流程优化搞搞,最后就是依赖于优化后的结构流程,来进行组件封装,先增肥,在减脂,从有到精一步步来。
Targo.net 项目框架设计
提示:这张图只针对于目前的项目结构,之后更多的技术会以组件化的方式来进行集成,项目结构也会变得比这个要更完善>_-!
本人审美缺陷,所以凑合看看就行
先上文件目录说明
提示:这是文件的目录>_-!
├─src //(项目结构源代码)
│ ├─Client // 调用客户端文件夹
│ │ └─Targo.GRPC.Clienter // 客户端控制台应用程序(GRPC调用的)
│ ├─Grateway // 网关
│ │ ├─TarGo.GRPC.PrivateGrateWay // 内部网关
│ │ └─TarGo.GRPC.PublicGrateWay // 公共网关
│ ├─Host // 服务入口
│ │ └─Targo.BaseApplication.Host // 集成了GRPC-JsonTranscoding的GRPC项目,具有Swagger文档UI
│ ├─Services // 服务文件夹
│ │ └─BaseService // 基础服务文件夹
│ │ ├─Targo.Base.Application // 基础服务application层,很薄的一层,查询集中再这一层,而具体操作集中再Domain中以domainService的方式出现
│ │ ├─Targo.Base.Application.Contracts // 基础服务约定,主要来定义application层的抽象接口,做DataMapping,
│ │ ├─Targo.Base.Domain.Core // 领域核心层,主要领域划分,领域事件,领域服务
│ │ ├─Targo.BaseApplication.GRPCServices // GRPC服务存储Proto文档,并实现GrpcService,在GRPCService中调用application中的内容来进行操作的执行
│ │ └─RepositoryFile // 仓储层,做一些列数据的出入库操作,domainCore及application层通过仓储对数据进行管理
│ │ ├─Targo.Base.EntityFrameworkCore // EFCore-Data Margration Manager 管理数据库映射,采用的是codeFirst,并使用DBConnectionFactory来存储DBContext
│ │ ├─Targo.Base.IRepository // 抽象仓储,定义仓储的公共方法,以及某类存储类型的抽象方法
│ │ ├─Targo.Base.MemortCache.Repository // MemoryCache仓储实现
│ │ ├─Targo.Base.Mongo.Repositoy // mongo仓储实现
│ │ ├─Targo.Base.Redis.Repositoy // redis仓储实现
│ │ └─Targo.Base.EFCore.Repositoy // EFCORE 仓储实现,
│ └─SharedComponent // 组件
│ ├─consulCompon // Consul服务注册组件
│ └─Infrastructure.app // 暂时预留的(基础应用组件,功能后期扩展)
└─test // 测试文件夹(之后统一创建单元测试)
├─groc.jsontranscoding.test // GRPC-JsonTranscoding 转码测试项目
├─Targo.BaseApplication.GRPCServicesTests
└─Test.Client
小目标
截止到现在项目结构以及文件结构已经初步实现,在之后就来一波优化吧,例如
- 利用反射来进行依赖注入服务的注册,在每个层级都添加上自己类库独立的注册方法?
- 使用attribute来标记domainService的生命周期,同样也是使用反射来进行自动依赖注入。
- 网关层嵌入第三方的服务器监控页面
- 将更多常用技术进行组件封装,然后搞成nuget包,如果安装,那么就可以直接依赖注入,使用具体的组件,提高开发速度。
- 这个项目不会更多的涉及业务处理,主要围绕在从各种组件分装,以及便捷使用。
还是觉得这张图做的比较靠谱,感觉这个搭配很合VS
Targo.Net-----GitHub
后边有啥小更新再单独说明,下篇博客开始进入自动服务注册的代码包括Assembly反射的。