有关JWT的基础

看这文章之前需要先对JWT有了解,不过这部分已经有很多很好的文章,这边我就不再叙述,你可以看如 ASP.NET Core 认证与授权4:JwtBearer认证 前面的介绍。

ASP.NET Core使用JWT

这里我按照正常项目那样,分成两个项目,JWT.Server项目负责生成JWT,JWT.DemoApi则负责提供Api接口服务对于受限接口会验证JWT。

阅读全文 »

什么是 MiniProfiler

MiniProfiler 是一款针对 .NET、Ruby、Go 与 Node.js 的性能分析的轻量级程序。可以对一个页面本身,及该页面通过 直接引用、Ajax、Iframe 形式访问的其它页面进行监控,监控内容包括数据库内容,并可以显示数据库访问的 SQL(支持 EF、EF Core 等 )。并且以很友好的方式展现在页面上。

阅读全文 »

什么是Filter

过滤器(Filter)是 AOP[^AOP] 思想的一种实现,让我们在执行管道(pipeline)的特定阶段(之前或之后)执行代码,管道在选择了要执行的操作之后运行。

下面图片显示了管道所在位置

aspnetcore-filter-pipeline-1.png

通过使用过滤器可以实现 短路请求、缓存请求结果、日志统一记录、参数合法性验证、异常统一处理、返回值格式化 等,同时使业务代码更加简洁单纯,避免很多重复代码。

阅读全文 »

ASP.NET Core分层结构项目里使用EF Core

  1. 创建一个类库项目,引入需要的包,注意选择与自己项目版本匹配的

    1
    2
    3
    Install-Package Microsoft.EntityFrameworkCore
    Install-Package Npgsql.EntityFrameworkCore.PostgreSQL //使用PostgreSQL
    Install-Package Microsoft.EntityFrameworkCore.Tools

    注意安装的包版本需要匹配你的框架版本

    用的数据库需要什么包,可以看微软官方文档这篇:数据库提供程序

    阅读全文 »

前言

以下例子主要来源ASP.NET Core 3.1版本,后续版本可能会有所更改,请注意。

各版本区别既更多有关Configuration的信息,可以查看官方文档:Configuration in ASP.NET Core

关于ASP.NET Core的配置

ASP.NET Core 的配置遵循“约定大于配置”,是由一系列Configuration providers提供组合而成的。

ASP.NET Core Web应用,在建立引用服务前,会使用Host.CreateDefaultBuilder方法依次加载Configuration providers,顺序如下:

  1. ChainedConfigurationProvider:添加现有 IConfiguration 作为源。 在ASP.NET Core Web默认配置中,添加 Host 配置,并将它设置为应用配置的第一个源。
  2. 使用项目根目录下的appsettings.json
  3. 使用项目根目录下的appsettings.{Environment}.json 提供 。 例如,appsettings.Production.json 和 appsettings.Development.json 。
  4. 当在 Development 环境中运行时,会加载“用户机密”的配置。
  5. 使用系统环境变量的配置。
  6. 使用命令行参数的配置。

后来添加的配置会替代之前的配置。如:在appsettings.json中配置了"Name":"Joe",然后在命令行传了参数"Name":"Jack",那最终使用的就为后面的"Name":"Jack"

阅读全文 »

基础知识

Caching通过减少生成内容所需的工作,显著提高应用的性能和可伸缩性。 Caching最适用于不经常更改且 生成成本高 的数据。 Caching可比从源返回快得多的数据副本。

ASP.NET Core支持多个不同的缓存

阅读全文 »

有关服务的生命周期

  • 尽可能将您的服务注册为瞬态服务。 因为设计瞬态服务很简单。 您通常不用关心多线程和内存泄漏,并且您知道该服务的寿命很短。

  • 请谨慎使用Scoped,因为如果您创建子服务作用域或从非Web应用程序使用这些服务,则可能会非常棘手。

  • 谨慎使用Singleton,因为您需要处理多线程和潜在的内存泄漏问题。

  • 在Singleton服务中不要依赖Transient或者Scoped服务,因为如果当一个Singleton服务注入Transient服务,这个Transient服务就会变成一个Singleton服务,并且如果Transient服务不是为支持这种情况而设计的,则可能导致问题。 在这种情况下,ASP.NET Core的默认DI容器已经抛出异常。

阅读全文 »

什么是swagger

swagger是一款RESTFUL接口的文档在线自动生成+功能测试功能软件。Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTful风格的Web服务。

简单来讲,使用swagger能够自动生成友好的在线接口文档,并且支持接口测试,其好处:

  • 对后端人员:减少了编写接口后还要花费时间同步更新接口文档,且与前端沟通的时间成本。
  • 对前端人员:能够直观的快速的看到接口,并且进行在线测试,方便了调试调用接口,不用因接口问题频繁与后端沟通。
阅读全文 »

前言

SQL Server安装后默认是一直随系统启动的,对于服务器当然没问题,但是对于个人开发而言,确实是不希望在不需要时一直运行相关SQL Server的服务。毕竟个人电脑性能有限,还是希望软件能够要用的才打开,不需要时能够释放占用的性能。

于是就有了这篇文章,提供一个脚本,需要时开启SQL Server相关服务,不需要是关闭SQL Server相关服务。

阅读全文 »