痕迹灬
学而时习之,不亦乐乎
展开
-
基于.NetCore和ABP.VNext的项目实战九:集成Hangfire实现定时任务处理
Hangfire 是一个开源的.NET 任务调度框架,它提供了内置集成化的控制台,允许用户直观明了地查看作业调度情况。它基于队列的任务处理机制,客户端使用 BackgroundJob 类的静态方法 Enqueue 来调用指定的方法或匿名函数,并将任务持久化到数据库。本文将完成一个任务调度中心,关于定时任务有多种处理方式,如果你的需求比较简单,比如就是单纯的过多少时间循环执行某个操作,可以直接使用.net core中内置的实现方式,新建一个类继承。解析服务,获取到我们的实列,所以我们可以在模块类中的。原创 2024-06-07 08:14:31 · 253 阅读 · 0 评论 -
基于.NetCore和ABP.VNext的项目实战八:使用Redis缓存数据
在Mag.Blog.Application层的AuthorizeService.cs中注入IAuthorizeCacheService,将查询到的数据添加到缓存当中。扩展方法,可以同时处理获取和添加缓存的操作,当缓存存在时,直接返回,不存在时,添加缓存,在。在对应的AppSettings.cs里面读取配置的Redis字符串。层的MagBlogConsts类下定义的缓存过期时间策略常量。的时候,不指定过期时间,那么我们的缓存就不会过期。中配置我们的缓存过期时间,当。层的模块类中添加依赖缓存模块。原创 2024-06-07 08:14:11 · 128 阅读 · 0 评论 -
基于.NetCore和ABP.VNext的项目实战七:全局异常处理并日志记录
中判断当前请求状态,当状态不是200,获取到状态码枚举的Key值用来当作错误信息返回,最后也执行。F5运行项目,调用 .../HelloWorld/Exception,查看日志文件。ABP框架已经默认为我们实现了全局的异常模块,这里我们自定义全局异常模块,先在。配置log4net,然后我们直接返回IHostBuilder对象,便于在。出现异常,也要能够记录日志,这里采用。的Filter,他需要实现我们的。方法,返回我们自定义的模型。方法,当没有异常发生时,在。,这样才会执行新建的中间件。原创 2024-06-04 08:21:18 · 115 阅读 · 0 评论 -
基于.NetCore和ABP.VNext的项目实战六:JWT(接入第三方GitHub进行身份认证)
认证与授权是两种含义:认证,是证明你的身份,你有账号密码,你可以登录进我们的系统,说明你认证成功了;一致时,就为其授权。然后编写生成token的方法,GitHub的这个API做了相应的安全机制,有一点要注意一下,当我们用代码去模拟请求的时候,需要给他加上。,生成Token,有了access_token,可以直接调用获取用户信息的接口,会得到一个json,将这个json包装成一个模型类。,因为是博客系统,管理员用户就只有我一个人,GitHub的用户Id是唯一的,我将自己的。,不然是不会成功返回结果的。原创 2024-06-04 08:20:46 · 600 阅读 · 0 评论 -
基于.NetCore和ABP.VNext的项目实战五:自定义消息返回,统一规范API
支持返回参数的api使用,T就是我们的返回结果,然后继承ServiceResult,指定T为class。层主要是公共的工具类、扩展方法,将统一返回模型放在这里,新建Base文件夹,新建Enum文件夹,定义一个。还需要返回带分页的数据,所以需要扩展一个分页的响应实体,当我们使用的时候,直接将分页响应实体作为上面写的。中的T参数,即可满足需求,新建文件夹PageList,添加总数接口。方法,当我们成功返回数据或者当系统出错或者参数异常的时候执行。,它同时也要接受一个泛型参数 T。,在构造函数中为其赋值。原创 2024-05-27 09:49:59 · 42 阅读 · 0 评论 -
基于.NetCore和ABP.VNext的项目实战四:自定义仓储的实现
上一章通过新建实体类,数据库迁移新建了数据库表,这一章实现自定义仓储,实现批量插入、更新的方法(abp框架中已经实现了默认的通用(泛型)仓储,,有着基本的标准的CRUD)。在领域层中创建仓储接口,、、、、,这里继承 以使用已有的通用仓储功能。 在层实现这些接口,这些类继续使用EFCore进行数据库操作,需要继承,和我们的仓储接口在和仓储接口的实现中新增了批量插入数据的方法。在服务层新建IServices和Services文件夹,分别为接口的服务原创 2024-05-27 09:49:32 · 152 阅读 · 0 评论 -
基于.NetCore和ABP.VNext的项目实战三:EFCore访问数据库和CodeFirst方式数据迁移
本篇主要使用Entity Framework Core完成对数据库的访问,以及使用Code-First的方式进行数据迁移,自动创建表结构。Nuget安装数据库迁移工具在Mag.Blog.EntityFrameworkCore项目中添加我们的数据访问上下文对象MagBlogDbContext,继承自。然后重写方法新建静态扩展类和扩展方法,用来配置实体。在.Domain层创建配置文件访问类appsettings.json中的设置值appsettings.json文件修改连接字符串。原创 2024-05-21 08:14:47 · 156 阅读 · 0 评论 -
基于.NetCore和ABP.VNext的项目实战二:Swagger
在Swagger文档中,默认只显示我们的Controller的名称,其实他也是支持描述信息的,这是就需要我们自行扩展了。手动为其初始化一些值,记录swagger的分组信息,在AddSwagger方法、UseSwaggerUI方法中遍历使用。代表API文档仅展开标记,不默然展开所有接口,需要我们手动去点击才展开,可以自行查看。方法中使用SwaggerUI。:定义一个变量,内容自拟主要是一些介绍性的描述,将在Swagger界面进行显示。方法中引用我们的XML文件,配置接口的名称版本以及描述信息,在。原创 2024-05-21 08:14:04 · 190 阅读 · 0 评论 -
基于.NetCore和ABP.VNext的项目实战一:abp cli 搭建项目
学习了阿星Plus的博客项目,自己也试着搭建自己的博客。ABP和ABP.VNext的主要区别在于核心库的精简、对领域驱动设计(DDD)的关注、以及使用的技术栈。1、ABP VNext的核心库相比ABP更加精简,它将原有许多组件从核心库中抽离成独立的组件,这使得开发者可以更灵活地选择需要的功能。这种设计使得ABP VNext更加模块化,但也意味着管理的独立项目数量增加。2、ABP VNext更加关注领域驱动设计,引入了聚合根、实体、值对象等概念,并提供了仓储模式和领域服务等基础设施。原创 2024-05-14 17:00:55 · 70 阅读 · 0 评论