- 博客(16)
- 收藏
- 关注
原创 Redis安装
下载地址: https://github.com/MicrosoftArchive/redis/releases最新下载地址:https://github.com/zkteco-home/redis-windows/releaseswin+r 输入 services.msc ,看一下服务有没有启动,没启动 手动启动一下 本示列Linux系统为CentOS 7.9 #可通过wget下载也可以在官网下载后通过工具上传先cd /usr/local/redis 再wget https://downloa
2023-07-29 16:18:36
38
原创 ASP.NET Core的部署
网站发布1、不能直接把bin/Debug部署到生产环境的服务器上,性能低。应该创建网站的发布版,用【发布】功能。2、两种部署模式:“框架依赖”和“独立”。两者的优缺点。1:框架依赖的部署模式下,我们发布生成的程序集中不包含.NET运行时,所以我们需要在服务器上安装对应版本的.NET运行时2:独立模式下,我们生成的程序集包含.NET运行时,所以我们不需要在服务器上安装对应版本的.NET运行时。3:对于大多数情况下,独立模式更符合项目的部署要求。在独立模式下,我们只需要把程序集复制到服务器上
2023-06-15 18:52:46
372
原创 ASP.NET Core Web API
Controller继承自ControllerBase,只不过增加了视图相关的方法,一般mvc项目选用Controller而Web API项目选择ControllerBase即可。ASP.NET Core Web API中的操作方法返回值如果是普通数据类型,则返回值默认被序列化为JSON格式的响应报文体返回。对于失败的请求,一般要统一响应报文体的格式以便在客户端进行处理。声明一个表示错误的详细信息类其中code参数表示错误的自定义业务代码。
2023-06-15 16:18:21
194
原创 Restful
5:服务器端要通过状态码来反映资源获取的结果:200 (意思是一切正常),201(新增成功),400(错误请求,一般是客户端请求的参数错误),401(未授权,没登录的意思),、403(没有权限,一般指已经登录,但是你没有权限访问当前方法),404(没有找到任何资源),500 (服务器错误)2:具有不同的请求方法(也叫请求谓词),主要有get、post、put、delete,获取资源使用get,新增资源使用post,整体更新使用put,删除资源使用delete。3:什么是“幂等”,举例?
2023-06-15 15:44:13
79
原创 ASP.NET Core Web 入门
1:MVC开发的系统一般是在浏览器中查看,而目前访问服务器的客户端已不仅仅是浏览器了,很多客户端和服务器之间一般都是使用JSON结构来传递数据,所以需要将数据进行结构化,执行结构化操作的服务叫做Web API。浏览器提交的请求会被封装到模型类的对象中,然后传递给控制器,控制器对其进行处理后将结果放到模型类的对象中再传给视图,视图则解析模型对象渲染成HTML输出给浏览器。1:MVC中,控制器由Controller类实现,视图一般为*.cshtml文件,模型则是C#中的普通类。
2023-06-15 15:19:13
217
原创 SignalR服务器端消息推送
在传统的HTTP中,只能客户端主动向服务器端发起请求,服务器端是无法主动向客户端发送消息的,但是有一些场景需要我们服务器端主动向客户端发送消息,那么主要有以下3种方式实现原理: 利用Ajax定时朝后端发送请求,比如每隔五秒钟发一次请求,那么你的数据延迟就可能会高达五秒特点: 数据延迟,消耗资源过大,请求次数太多原理: 利用Ajax + 队列 定时朝后端发送请求, 如果没有数据则会阻塞但是不会一直阻塞, 比如阻塞你30秒,还没有数据则返回,然后让客户端浏览器再次发送请求数据的请求。
2023-06-15 11:57:10
676
原创 请求数据校验
上文中,我们提到了.NET Core中内置数据校验机制的不足,这里向读者推荐优秀的数据校验框架FentValidaion 它可以让我们用类似于.NET Core中Fluent API的方式进行校验规则的配置,也就是我们可以把对模型类的校验放到单独的校验类中。在程序中,需要进行数据验证的场景经常存在,且数据验证是有必要的。1:我们的校验规则都是跟模型类耦合在一起的,这违返了面向对象的“单一职责原则”,而且同一个模型类在不同的地方可能需要不同的校验规则,这种难以实现.[比较]:验证模型中的两个属性是否匹配。
2023-06-15 09:48:29
161
原创 托管服务(IHostedService,BackgroundService)
有些工作是需要后台运行的,比如每天凌晨备份数据库。ASP.NET Core提供了托管服务来供我们编写后台代码。托管服务只需要实现IHostedService即可,一般在开发时编写继承自BackgroundService的类,该类不进实现了IHostedService接口,并且处理了任务取消等逻辑,我们只需实现BackgroundService中定义的ExecuteAsync方法即可。
2023-06-14 21:00:37
423
原创 JWT提前撤回
当遇到用户被删除或者用户在另一个设备上登陆等场景时需要将JWT提前撤回,但是JWT是保存在客户端,无法在服务器中进行删除。:是在用户表中增加一列JWTVersion,用来存储最后一次发放出去的令牌版本号,每次登陆、发放令牌的时候都让JWTVersion自增,当服务器收到客户端提交的JWT后,将客户端的JWTVersion和服务器的进行比较,如果客户端的值小于服务器中的值则过期。
2023-06-13 16:14:51
169
原创 JWT(代替Session会话)
经典的保持登陆状态的办法是Session,也就是用户登陆后,服务器产生唯一标识SessionId,并把SessionId和登陆的用户信息保存在服务器内存中,通时将SessionId发送给浏览器(),当浏览器再次访问的时候,http请求中便携带了SessionId,服务器根据该Id在内存中取到用户信息,这样就实现了登陆功能功能。1:如果Session保存在内存中,当登陆用户多的时候,会占用服务器大量服务器内存,而且无法支持分布式集群。
2023-06-11 18:23:09
384
原创 .Net Core配置系统
Net Core配置系统支持文件(Json、XML、INI)、注册表、环境变量、命令行、Key Vault等。:Microsoft.Extensions.Configuration(这个是个基础包)//配置创建器//添加一个待解析的JSON文件//option:option为true时,Config.json文件不存在时不会报错,返回null;//option为false时,Config.json文件不存在时直接报异常。
2023-06-02 14:31:13
156
原创 .NET Core 依赖注入
使用了依赖注入框架之后,所有我们注入到容器中的类型的创建、销毁工作都由容器来完成,那么容器什么时候创建一个类型实例,什么时候销毁一个类型实例呢?根据我们的需要,我们可以向容器中注册服务的时候,对服务的生命周期进行设置。注册到容器中的对象(依赖项注入术语中,服务通常是指向其他对象提供服务的对象,既可以作为其他类的依赖项,也可能依赖于其他服务。在某些情况下,对于某些特殊的类,我们需要注册成单例模式,这可以减少实例初始化的消耗,还能实现跨 Service 事务的功能。控制反转的目的是让框架完成对象的创建和组装。
2023-06-01 16:13:41
391
原创 C# Lambda表达式
Action fun1 = (name, age) => Console.WriteLine("你好");正因为任何 Lambda表达式都可以转换为委托类型,那么在需要使用委托的地方都可以结合Lambda使用,极大的方便了委托的使用和提高代码的简洁度。若指定有0个输入参数,则需要用空括号( )表示,即:( ) => { Console.WriteLine(“你好”);如果编译器无法推算出类型,则可以显示地指定类型,即:( int x, int y) => x+y;
2023-05-25 15:00:52
160
1
原创 C# 委托
从数据结构来讲,委托是和类一样是一种用户自定义类型。委托是方法的抽象,它存储的就是一系列具有相同签名和返回回类型的方法的地址。调用委托的时候,委托包含的所有方法将被执行。
2023-05-25 12:04:50
100
1
原创 .net 数据库操作技术
现代应用开发的经验,都要求尽量保持数据库的干净,避免使用存储过程、外键、视图等,这些功能都应该在程序端来实现,所以推荐使用Dapper。2、由于EFCore,增加了LINQ至SQL的翻译步骤,如果复杂一些的LINQ语句,机翻的结果可能不是最优的SQL语句,同时,EFCore会对实体类状态进行跟踪,所以性能会稍低于Dapper。5、EF Core是官方推荐、推进的框架,尽量屏蔽底层数据库差异,.NET开发者必须熟悉,根据的项目情况再决定用哪个。.net 常用的orm:EF,EF core、Dapper、
2023-05-22 15:08:40
337
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人