有关 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)的特定阶段(之前或之后)执行代码,管道在选择了要执行的操作之后运行。

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

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

阅读全文 »

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 相关服务。

阅读全文 »