3.配置提供程序 上面提到,通过IConfigurationBuilder的实现类对象,我们可以自由地往配置系统中添加不同的配置提供程序,从而获取不同来源的配置信息。.NETCore中,微软提供了以下这些内置的配置提供程序: 文件配置提供程序 环境变量配置提供程序 命令行配置提供程序 Azure应用配置提供程序 AzureKeyVault配置提供程序 Key-per-file配置提供程序 内存配置提供程序 应用机密(机密管理器) 自定义配置提供程序 这里稍微介绍一下常用的几个。 3.1文件配置提供程序 顾名思义,这个就是我们熟悉的配置加载方式,从配置文件中加载配置信息。配置文件多种多样,....

  ajodTJtb5EW1   2023年11月02日   71   0   0 .NET

4.自定义配置提供程序 在.NETCore配置系统中封装一个配置提供程序关键在于提供相应的IconfigurationSource实现和IConfigurationProvider接口实现,这两个接口在上一章ASP.NETCore配置系统之配置提供程序中也有提到了。 IConfigurationSource IConfigurationSource负责创建IConfigurationProvider实现的实例。它的定义很简单,就一个Build方法,返回IConfigurationProvider实例: publicinterfaceIConfigurationSource { IConfigu...

  ajodTJtb5EW1   2023年11月02日   99   0   0 .NET

1.选项 前面讲完了.NETCore下的配置系统,我们可以通过IConfiguration服务从各种来源的配置中读取到配置信息,但是每次要用的时候都通过Iconfiguration读取配置文件会比较不方便,而且效率低。.NETCore体系下提供了一个选项系统,该功能用于实现以强类型的方式对程序配置信息进行访问,并且可以将选项类注入到依赖注入容器中进行管理和使用。 在进行配置信息的强类型选项绑定的时候,需要一个相应的选项类,该类推荐按{Object}Options命名规则进行命名,有以下特点: 必须非抽象类 必须包含公共无参的构造函数 类中需要与配置项进行绑定的属性必须拥有public的get...

  ajodTJtb5EW1   2023年11月02日   43   0   0 .NET

上一篇ASP.NETCore选项系统之选项配置中提到IOptions 、IOptionsMonitor 和IOptionsSnapshot 三个接口,通过这三个接口都可以从依赖注入容器中解析出已经配置的选项类,在我们通过Configure方法配置选项时,这三个接口会被同时注册,但三个接口是有区别的,适用场景也有所不同。 1.IOptions IOptions 对象的生命周期是Singleton(单例),它可以在任意地方进行注入使用 该接口对象在第一次使用的时候被实例化,并且选项类中的内容会一直保持不变,前面也提过选项类内容可以在配置来源修改之后更新,但是通过IOption ...

  ajodTJtb5EW1   2023年11月02日   69   0   0 .NET

  就像WebApi接口可以对入参进行验证,避免用户传入非法的或者不符合我们预期的参数一样,选项也可以对配置源的内容进行验证,避免配置中的值与选项类中的属性不对应或者不满足预期,毕竟大部分配置都是通过字符串的方式,验证是很有必要的。 1.注解验证 像入参验证一样,选项验证也可以通过特性注解方便地对选项类中的某个属性进行验证,这种是最简单便捷的方式。使用选项标签注解验证,需要引入Microsoft.Extensions.Options.DataAnnotationsNuget包。 在选项类中通过以下方式添加数据验证规则: publicclassBlogOptions { publicconst...

  ajodTJtb5EW1   2023年11月02日   40   0   0 .NET

.NETCore选项系统的主要实现在Microsoft.Extensions.Options和Microsoft.Extensions.Options.ConfigurationExtensions两个Nuget包。对于一个框架的源码进行解读,我们可以从我们常用的框架中的类或方法入手,这些类或方法就是我们解读的入口。 从上面对选项系统的介绍中,大家也可以看出,日常对选项系统的使用涉及到的主要有Configure方法,有IOptions 、IOptionsSnapshot 、IOptionMonitor 等接口。 Configure 首先看选项注册,也就是Configure方法,注册...

  ajodTJtb5EW1   2023年11月02日   43   0   0 .NET

1.缓存 缓存指的是在软件应用运行过程中,将一些数据生成副本直接进行存取,而不是从原始源(数据库,业务逻辑计算等)读取数据,减少生成内容所需的工作,从而显著提高应用的性能和可伸缩性,使用好缓存技术,有利于提高我们提升用户体验性。 对于缓存的使用有以下一些注意点: 缓存最适用于不常更改且生成成本很高的数据。 代码应始终具有回退选项,以提取数据,而不依赖于可用的缓存值。我们应该以从不依赖于缓存数据的方式编写和测试应用。缓存是会失效的,我们在进行应用开发时应该考虑到缓存失效的情况,提供缓存失效时按照正常逻辑获取相关数据的方式。 缓存使用短缺资源:内存。我们应该限制缓存增长: 不要将外部输入插入到...

  ajodTJtb5EW1   2023年11月02日   110   0   0 .NET

话接上篇ASP.NETCore缓存之内存缓存(上),所以这里的目录从2.4开始。 2.4MemoryCacheEntryOptions MemoryCacheEntryOptions是内存缓存配置类,可以通过它配置缓存相关的策略。除了上面讲到的过期时间,我们还能够设置下面这些: 设置缓存优先级。 设置在从缓存中逐出条目后调用的PostEvictionDelegate。回调在与从缓存中删除项的代码不同的线程上运行。 限制缓存大小 varmemoryCacheEntryOption=newMemoryCacheEntryOptions(); memoryCacheEntryOption.A...

  ajodTJtb5EW1   2023年11月02日   127   0   0 .NET

分布式缓存是由多个应用服务器共享的缓存,通常作为访问它的应用服务器的外部服务进行维护。分布式缓存可以提高ASP.NETCore应用的性能和可伸缩性,尤其是当应用由云服务或服务器场托管时。 与其他将缓存数据存储在单个应用服务器上的缓存方案相比,分布式缓存具有多个优势。 当分发缓存数据时,数据: 在多个服务器的请求之间保持一致(一致性)。 在进行服务器重启和应用部署后仍然有效。 不使用本地内存。 1.分布式缓存的使用 .NETCore框架下对于分布式缓存的使用是基于IDistributedCache接口的,通过它进行抽象,统一了分布式缓存的使用方式,它对缓存数据的存取都是基于byte[]的。 ...

  ajodTJtb5EW1   2023年11月02日   40   0   0 .NET

ABP框架 ABP是用于创建现代化Web应用程序的完整体系结构和强大的基础架构,以模块化的方式进行开发,所有模块以nuget包的方式提供,开箱即用,遵循最佳实践和约定,提供SOLID开发经验。 缩写 英文 中文 SRP TheSingleResponsibilityPrinciple 单一职责元素 OCP TheOpenClosedPrinciple 开放封闭原则 LSP TheLiskovSubstituutionPrinciple 里氏替换原则 ISP TheInterfaceSegregationPrinciple 接口替换原则 DIP TheDepende...

  ajodTJtb5EW1   2023年11月02日   90   0   0 .NET

Abp是一个基于模块化开发的应用程序框架,提供了模块化基础的架构和模块化加载的引擎。 理解模块 一个模块是对一个功能点的封装,可以独立成为一个包,实现了松耦合的代码组织方式。Abp框架的基本思想就是模块开发,模块就想乐高中的一块块积木,在项目中将不同功能点的模块引用进来,就像搭积木一样构建成一个成品。 模块化的实现 通过在一个程序集中,创建一个模块类,继承AbpModule类,就可以很简单的将这个程序集作为Abp框架中的一个模块。如下面的代码,就是一个模块类的定义。 [DependsOn( typeof(AbpAutoMapperModule), typeof(AbpDddApplic...

  ajodTJtb5EW1   2023年11月02日   23   0   0 .NET

依赖注入实现了系统之间、模块之间和对象之间依赖关系的解耦,基本上是现代应用程序框架必不可少的一个组成部分。 ABP的依赖注入系统是基于Microsoft的依赖注入扩展库(Microsoft.Extensions.DependencyInjection),所以能够完全兼容.netCore中的依赖注入的用法,同时使用Autofac替换了.netCore中的内部容器,利用了Autofac中的一些特性。 Abp依赖注入的配置方式 手动注册依赖注入关系 与Asp.NetCore在Startup类中的ConfigureServices()方法中,通过IServiceCollection向容器中添加依赖...

  ajodTJtb5EW1   2023年11月02日   51   0   0 .NET

依赖注入的使用 构造方法注入 这是将服务注入类的最常用方法,是将依赖项注入类的首选方式,也是微软推崇的模式。这样,除非提供了所有构造方法注入的依赖项,否则无法构造类,显示的声明了类必需的服务,使开发人员一目了然。 publicclassBookAppService:ApplicationService { privatereadonlyIBookRepository_bookRepository; publicTaxAppService(IBookRepositorybookRepository) { _bookRepository=bookRepository; } publicvo...

  ajodTJtb5EW1   2023年11月02日   69   0   0 .NET

1.与.NETCore缓存的关系和差异 ABP框架中的缓存系统核心包是Volo.Abp.Caching,而对于分布式缓存的支持,abp官方提供了基于Redis的方案,需要安装Volo.Abp.Caching.StackExchangeRedis集成包。默认的情况下,在我们使用ABPCLI创建ABP框架模板项目的时候已经集成了这个包,我们不需要手动进行安装。 ABP框架中的缓存系统在ASP.NETCore的分布式缓存系统上进行扩展,从而为了使分布式缓存使用起来更加方便。理所当然的,ABP框架的缓存系统兼容ASP.NETCore原生的分布式缓存使用方式,关于ASP.NETCore分布式缓存的使用,...

  ajodTJtb5EW1   2023年11月02日   34   0   0 .NET

一、日志记录 日志记录是什么?简单而言,就是通过一些方式记录应用程序运行中的某一时刻的状态,保留应用程序当时的信息。这对于我们进行应用程序的分析、审计以及维护有很大的作用。 作为程序员,我们恐怕谁也不敢保证我们开发的软件应用一定不存在BUG,一定不会出现故障,而当故障出现的时候,日志就是我们排查故障的首要依据,排查故障的第一步一定是查看故障发生时的日志信息。 当然,日志也不仅仅只是在排查故障的时候有用,这类称为错误日志,比较常谈的还有安全日志、审计日志等等,它根据应用场景、企业团队对其认知和需要有不同的应用。日志记录在软件工程中更是一种思想,而不止是一种开发技术实现,它被认为是产品团队对其产品...

  ajodTJtb5EW1   2023年11月02日   37   0   0 .NET
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~