- 博客(77)
- 资源 (2)
- 收藏
- 关注
原创 .netcore微服务——项目搭建
在.NET Core中,微服务是一种架构风格,它将应用程序构造为一组小型服务的集合,这些服务都通过HTTP-based API进行通信。每个服务都是独立部署的,可以用不同的编程语言编写,并且可以使用不同的数据存储技术。微服务的主要优点包括:增强容错能力:一个服务的故障不会影响其他服务。增强弹性:可以根据需求增加或减少服务的实例。增加弹性:使用更适合的语言或工具。增加敏捷性:每个服务都可以独立于其他服务进行更新和迭代。以下是一个简单的例子,展示如何在.NET Core中创建一个简单的微服务。
2024-07-05 10:58:06
1855
1
原创 .Net Core + DDD基础分层
四,Redis缓存,多种数据类型,查询,插入效率高,Redis与数据库同步策略,先更新数据库在删除缓存,延时双删,(延时,根据数据查询的数据来判断延时的时间),使用StackExchange.Redis。基础设施层使用的相关知识:Code First ,EF Core,Autofac依赖注入,仓储模式的实现接口,领域服务的实现接口,缓存,以及各种基础工具类。四,仓储:仓储是针对聚合的,封装领域逻辑,明确查询的意图,仓储中只维护聚合的状态,不进行持久化,仓储可以方便单元测试,更换ORM。
2024-07-05 10:57:23
850
原创 基于.NetCore和ABP.VNext的项目实战十一:定时任务实战-抓取热点新闻
本篇来完成一个全网各大平台的热点新闻数据的抓取,本次要抓取的源有18个,分别是博客园、V2EX、SegmentFault、掘金、微信热门、豆瓣精选、IT之家、36氪、百度贴吧、百度热搜、微博热搜、知乎热榜、知乎日报、网易新闻、GitHub、抖音热点、抖音视频、抖音正能量。之后就可以循环 list_task,使用XPath语法,或者解析JSON数据,去拿到数据了。用来处理爬虫逻辑,用构造函数方式注入仓储。先将实体类和自定义仓储创建好,实体取名。将我们各大平台放到一个枚举类。
2024-06-18 09:55:56
296
原创 基于.NetCore和ABP.VNext的项目实战十:AutoMapper实现对象映射
定义一种映射的方法是创建一个Profile 类,在。然后再基础模块类中添加。定义两个规则,第一个:从。中是没有的,所以可以使用。中都是存在的,所以直接。中存在Id属性,而在。
2024-06-18 09:55:24
202
原创 基于.NetCore和ABP.VNext的项目实战九:集成Hangfire实现定时任务处理
Hangfire 是一个开源的.NET 任务调度框架,它提供了内置集成化的控制台,允许用户直观明了地查看作业调度情况。它基于队列的任务处理机制,客户端使用 BackgroundJob 类的静态方法 Enqueue 来调用指定的方法或匿名函数,并将任务持久化到数据库。本文将完成一个任务调度中心,关于定时任务有多种处理方式,如果你的需求比较简单,比如就是单纯的过多少时间循环执行某个操作,可以直接使用.net core中内置的实现方式,新建一个类继承。解析服务,获取到我们的实列,所以我们可以在模块类中的。
2024-06-07 08:14:31
541
原创 基于.NetCore和ABP.VNext的项目实战八:使用Redis缓存数据
在Mag.Blog.Application层的AuthorizeService.cs中注入IAuthorizeCacheService,将查询到的数据添加到缓存当中。扩展方法,可以同时处理获取和添加缓存的操作,当缓存存在时,直接返回,不存在时,添加缓存,在。在对应的AppSettings.cs里面读取配置的Redis字符串。层的MagBlogConsts类下定义的缓存过期时间策略常量。的时候,不指定过期时间,那么我们的缓存就不会过期。中配置我们的缓存过期时间,当。层的模块类中添加依赖缓存模块。
2024-06-07 08:14:11
476
原创 基于.NetCore和ABP.VNext的项目实战七:全局异常处理并日志记录
中判断当前请求状态,当状态不是200,获取到状态码枚举的Key值用来当作错误信息返回,最后也执行。F5运行项目,调用 .../HelloWorld/Exception,查看日志文件。ABP框架已经默认为我们实现了全局的异常模块,这里我们自定义全局异常模块,先在。配置log4net,然后我们直接返回IHostBuilder对象,便于在。出现异常,也要能够记录日志,这里采用。的Filter,他需要实现我们的。方法,返回我们自定义的模型。方法,当没有异常发生时,在。,这样才会执行新建的中间件。
2024-06-04 08:21:18
485
原创 基于.NetCore和ABP.VNext的项目实战六:JWT(接入第三方GitHub进行身份认证)
认证与授权是两种含义:认证,是证明你的身份,你有账号密码,你可以登录进我们的系统,说明你认证成功了;一致时,就为其授权。然后编写生成token的方法,GitHub的这个API做了相应的安全机制,有一点要注意一下,当我们用代码去模拟请求的时候,需要给他加上。,生成Token,有了access_token,可以直接调用获取用户信息的接口,会得到一个json,将这个json包装成一个模型类。,因为是博客系统,管理员用户就只有我一个人,GitHub的用户Id是唯一的,我将自己的。,不然是不会成功返回结果的。
2024-06-04 08:20:46
952
原创 基于.NetCore和ABP.VNext的项目实战五:自定义消息返回,统一规范API
支持返回参数的api使用,T就是我们的返回结果,然后继承ServiceResult,指定T为class。层主要是公共的工具类、扩展方法,将统一返回模型放在这里,新建Base文件夹,新建Enum文件夹,定义一个。还需要返回带分页的数据,所以需要扩展一个分页的响应实体,当我们使用的时候,直接将分页响应实体作为上面写的。中的T参数,即可满足需求,新建文件夹PageList,添加总数接口。方法,当我们成功返回数据或者当系统出错或者参数异常的时候执行。,它同时也要接受一个泛型参数 T。,在构造函数中为其赋值。
2024-05-27 09:49:59
457
原创 基于.NetCore和ABP.VNext的项目实战四:自定义仓储的实现
上一章通过新建实体类,数据库迁移新建了数据库表,这一章实现自定义仓储,实现批量插入、更新的方法(abp框架中已经实现了默认的通用(泛型)仓储,,有着基本的标准的CRUD)。在领域层中创建仓储接口,、、、、,这里继承 以使用已有的通用仓储功能。 在层实现这些接口,这些类继续使用EFCore进行数据库操作,需要继承,和我们的仓储接口在和仓储接口的实现中新增了批量插入数据的方法。在服务层新建IServices和Services文件夹,分别为接口的服务
2024-05-27 09:49:32
399
原创 基于.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
526
原创 基于.NetCore和ABP.VNext的项目实战二:Swagger
在Swagger文档中,默认只显示我们的Controller的名称,其实他也是支持描述信息的,这是就需要我们自行扩展了。手动为其初始化一些值,记录swagger的分组信息,在AddSwagger方法、UseSwaggerUI方法中遍历使用。代表API文档仅展开标记,不默然展开所有接口,需要我们手动去点击才展开,可以自行查看。方法中使用SwaggerUI。:定义一个变量,内容自拟主要是一些介绍性的描述,将在Swagger界面进行显示。方法中引用我们的XML文件,配置接口的名称版本以及描述信息,在。
2024-05-21 08:14:04
395
原创 基于.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
774
原创 Dapper的快速使用
Dapper是.NET下一个轻量级的ORM框架,它和Entity Framework或Nhibnate不同,属于轻量级的,并且是半自动的。Dapper通过扩展IDbConnection提供一些有用的扩展方法去查询您的数据库。用vs2022创建一个新的控制台项目,名称为“sample01”,新建类Article.cs和Comment.cs。9、联查:comment表里面有四条关于article表ID=1的评论。1、测试插入单条数据到数据库。4、测试一次删除多条数据。3、测试删除单条数据。
2024-05-09 15:05:21
217
原创 ASP.NET Core日志管理(Serilog)
Nuget安装:Microsoft.EntityFrameworkCore.Sqlserver,Microsoft.EntityFrameworkCore.Tools。2、用于日志输出到SQLServer数据库Serilog.Sinks.MSSqlServer。1、用于日志输出到控制台Serilog.Formatting.Compact。3、用于日志输出到文件Serilog.Sinks.RollingFile。Nuget安装:Serilog.AspNetCore。
2024-05-02 10:30:00
560
原创 ASP.NET Core 高级组件:标识框架(identity)
一般的系统中都需要通过数据库保存用户、角色等信息,并且需要注册、登录、密码重置、角色管理等功能,但是ASP.NET Core提供了标识(identity)框架,内置了对用户、角色等表的管理及相关的接口,简化了系统的开发。3、创建继承自IdentityDbContext的类,EFCore中的上下文类,操作数据库,其中的3个泛型参数是用户类、角色类、主键类型。2、创建用户实体类User和角色实体类Role,分别继承自IdentityUser、IdentityRole,主键自增。9、实现密码重置功能。
2024-04-25 08:54:22
392
原创 .NetCore——自定义筛选器
开发一个实现请求限流器功能的操作筛选器,避免恶意客户端频繁发送大量请求而消耗服务器资源,实现“1s 内只允许最多有一个来自同一个IP地址的请求”,通过自定义操作筛选器实现:新建RateLimitFilter.cs。
2024-04-17 15:43:54
570
原创 性能优化“万金油”:缓存Cache
这边用一个不存在的ID查询就会一直返回null,如果一直大量的恶意用不存在的ID查询数据库,那么数据库就会承受非常大的压力,可能导致服务器崩溃,所以我们可以把“查不到”也加入到缓存中,这时候就可以使用GetOrCreateAsync方法,这个方法会把null当成合法的缓存值,就可以避免缓存穿透问题。分布式系统中,缓存数据是不能共享的,集群中每个节点的web应用都要加载一份数据到自己的内存缓存中,如果集群较多,这样重复的查询,重复的加载到分布式服务器缓存中,也是有可能压垮数据库服务器的。
2024-04-11 15:16:45
432
1
原创 EFCore高级技术:表达式树
一是自己构建表达式树,二是使用DynamicLinq,直接输入查询字符串。Func输出的结果只有参数、返回值类型,Expression中有内部运算逻辑,表示Expression对象存储了运算逻辑。表达式树(expression tree)是用树形数据结构来表示代码逻辑运算的技术,在运行时访问逻辑运算的结构。2、就算要构建运行时的动态查询,首先想到的,也是利用IQueryable的延迟执行和复用的特性来完成。所以,在实际项目中,除非是自己要开发一个框架,否则一般的业务项目,都极少会需要自己构建表达式树。
2024-04-01 15:15:41
261
原创 EFCore 反向工程(DBFirst)----慎用
使用EFCore时一般推荐code first,也就是先创建实体类,然后根据实体类生成数据表。但是有时候数据表已经存在,这时候就需要基于数据库表来创建实体类。
2024-04-01 14:09:16
492
原创 VS2022常用快捷键
Ctrl+K, Ctrl+D--------格式化全部代码 (如果这个不可以用的话,就应该是: Ctrl+K+D )查看上次阅读处\反上次查看处--------Ctrl+“-”Ctrl+Shift+“-”在当前行下面插入一个空行--------Ctrl+Shift+Enter。Ctrl+K,Crtr+U-------- 取消选定注释内容。Ctrl+Shitf+左右键--------选择整个的单词。Shift+Alt+Enter--------切换全屏编辑。
2024-03-21 10:02:31
3073
原创 Oracle SEQUENCE实现自增流水号,并设置定时任务每日清零
BYMINUTE=0;BYSECOND=0', -- 每天 0 点执行。start_date => SYSTIMESTAMP, -- 开始时间,可以设置为当前时间或者你需要的时间。--创建存储过程重置自增序列从1开始。--查询正在执行的jobs。
2024-03-21 10:02:05
927
原创 WPF实战项目二十二(客户端):首页添加备忘录与待办事项
3、ViewModels新建Dialogs文件夹,新建AddMemoViewModel、AddToDoViewModel。1、在View文件夹下新建文件夹Dialog,新建View:AddMemoView、AddToDoView。2、IndexView中修改按钮,绑定方法:ExecuteCommand。5、在App.xmal.cs中注册弹窗。4、修改IndexViewModel。
2023-12-27 14:04:23
1199
原创 力软敏捷开发框架前后端基础
top.learun.frameTab.open({ F_ModuleId: "edit" + keyValue, F_FullName: "编辑" + name, F_UrlAddress: top.$.rootUrl + '/LR_CodeDemo/ProjectG/FormEdit?$('input:radio[name="F_ParticipateStatus"][value="参加"]')[0].checked = true;} else if (cellvalue == "已报价") {
2023-12-22 08:58:14
1445
原创 WPF实战项目二十一(客户端):设置默认首页
1、在Common文件夹里面新增接口IConfigureService,来专门配置启动过程设置的一些参数。2、MainViewModel中继承接口IConfigureService,并实现。3、在app.xmal.cs中初始化过程,重写方法。
2023-12-21 13:31:14
853
原创 WPF实战项目二十(客户端):完善待办事项、备忘录功能
4、在API中修改传入参数类型,在ToDoController中改成【ToDoParameter】1、修改删除部分的代码,在前台页面命令绑定DeleteCommand,并新增删除方法。6、将前台的SelectedIndex作为参数传递给后台,并修改查询数据方法。2、修改删除部分的代码,在前台页面命令绑定DeleteCommand。【待办事项】【备忘录】中设置搜索功能增加找不到数据的提示。【待办事项】的搜索修改完成,【备忘录也相应的修改】【待办事项】中增加筛选全部、待办、已完成功能。1、绑定多选框的索引。
2023-12-21 11:53:31
1199
原创 SQL中left join、right join、inner join等的区别
inner join,其实就是“join”,两个是表示一个的,内连接,表示以两个表的交集为主,查出来是两个表有交集的部分,其余没有关联就不额外显示出来。就是“左连接”,表1左连接表2,以左为主,表示以表1为主,关联上表2的数据,查出来的结果显示左边的所有数据,然后右边显示的是和左边有交集部分的数据。“右连接”,表1右连接表2,以右为主,表示以表2为主,关联查询表1的数据,查出表2所有数据以及表1和表2有交集的数据。1、inner join:inner join的数量小于等于左表和右表中的记录数量。
2023-12-01 16:32:46
3154
1
原创 WPF实战项目十九(客户端):修改RestSharp的引用
修改HttpRestClient,更新RestSharp到110.2.0,因为106版本和110版本的代码不一样,所以需要修改下代码。Baseservice.cs也要相应的修改。
2023-11-30 16:28:26
972
原创 WPF实战项目十八(客户端):添加新增、查询、编辑功能
8、SearchCommand搜索事件可以和上面AddCommand合并到一起,【添加待办】按钮设置事件:ExecuteCommand,参数设置="新增",查找框设置成ExecuteCommand,参数设置="查询"7、绑定搜索输入框,首先定义一个属性,前台绑定输入框的值Search,给输入框添加回车事件。12、【保存】事件,按钮添加绑定事件,修改Excute方法、新增Add方法和Save方法。1、ToDoView.xmal添加引用,添加微软的行为类。5、前台绑定文本标题、内容、状态。
2023-11-30 16:28:24
1927
原创 WPF实战项目十七(客户端):数据等待加载弹框动画
1、在Common文件夹下新建文件夹Events,新建扩展类UpdateLoadingEvent。2、新建一个静态扩展类DialogExtensions来编写注册和推送等待消息弹框方法。3、在ViewModel中添加实现类NavigationViewModel。5、在View文件夹下新建用户控件ProgressView.xmal。4、在主窗体MainView.xmal中给弹窗界面命名。6、在MainView.xmal.cs中注册消息。
2023-11-23 16:59:23
2125
原创 WPF实战项目十六(客户端):备忘录接口
2、新增MemoService类,继承BaseService和IMemoService接口。1、新增IMemoService接口,继承IBaseService接口。5、重新编写获取备忘录信息代码,CreateMemoList。4、在MemoViewModel.cs中添加备忘录的服务。3、在App.xmal.cs中注册备忘录的服务。
2023-11-23 09:38:12
745
原创 SQL语法常用总结
SELECT DISTINCT NAME FROM all_source --系统表。WHERE TYPE = 'PROCEDURE' --类型为存储。--查询SPE1字符串中第一个逗号和第三个逗号之间的字符串。--查询所有存储当中是否用了tabel_A这个表。--将字符串时间转化成时间格式比较。--sql比较两个字符串是否包含。--查询所有存储中是否使用A字段。--case when 语句。--判断字符串空值就赋值为0。--截取字符前或后面的字符串。--查询正在运行的job。--like语句优化。
2023-11-22 16:40:37
399
原创 WPF实战项目十五(客户端):RestSharp的使用
10、修改ToDoViewModel的代码,添加ToDoService服务,修改CreateToDoList 代码。12、F5启动项目,点击【待办事项】,显示了待办事项的列表这和webapi中返回的待办事项Json数据一样。8、新增ToDoService类,继承BaseService类和接口IToDoService。9、在客户端App.xaml中注册httprestclient、注册默认服务的地址、注册服务。7、新增IToDoService接口,继承IBaseService接口。
2023-11-22 16:09:23
2209
原创 WPF实战项目十四(API篇):登录注册接口
4、新增登录控制器LoginController。2、新增ILoginService接口。6、在program.cs里面添加服务。3、实现LoginService接口。5、添加AutoMapper映射关系。1、新建UserDto.cs。
2023-08-31 16:34:18
1297
原创 WPF实战项目十三(API篇):备忘录功能api接口、优化待办事项api接口
9、在IToDoService.cs和IMemoService.cs中添加分页查询的接口。10、在ToDoService.cs中实现接口和MemoService.cs中实现接口。8、针对查询数据可以做个优化,增加查询的页数、内容、数据量等,新建查询参数类。11、在ToDoController和MemoController中添加代码。3、新建服务接口IMemoService。4、新建服务MemoService。6、在program.cs添加服务。1、新建MenoDto.cs。
2023-08-29 16:19:36
1369
原创 WPF实战项目十二(API篇):配置AutoMapper
1、新建类库WPFProjectShared,在类库下新建文件夹Dtos,新建BaseDto.cs,继承INotifyPropertyChanged,实现通知更新。4、在api层引入AutoMapper,并新建文件夹Extensions,新建帮助类AutoMapperProFile.cs,继承ProFile。6、IToDoService.cs修改代码传入ToDoDto,相应的ToDoService.cs的代码也要修改。3、新建待办事项传输实体TodoDto.cs,继承BaseDto.cs。
2023-08-24 14:09:47
1677
.NET Core 生成JWT令牌源码
2024-04-27
力软Learun敏捷开发框架源码v7.0,开发手册
2023-05-25
异步线程编程事例,C#托管代码实现的线程池
2024-04-25
Redis帮助类,为基本的设置数据和取数据
2024-04-24
Csv文件导入导出帮助类
2024-04-24
日期转换帮助类,常用于报表开发
2024-04-24
FTP文件上传下载帮助类
2024-04-24
WinForm全局异常捕获方法
2024-04-24
ZebraDesigner for Developers 3 打印程序
2024-04-08
WPF界面设计(MaterialDesignThemes)
2023-07-07
ModbusTcp 封装好的Modbus协议的类库
2023-05-24
TwinCAT.Ads.dll 倍福PLC ADS通讯帮助类库
2023-05-24
.net core从零开始学习
2023-05-18
.net core6.0 webapi 后端项目框架源码,配置sqlserver数据库连接字符串,开箱即用
2023-05-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人