今天开始边学边写技术博客。

ASP .NET CORE 3.1为长期维护版本(3年,web技术感觉更新也比较快呢)

学这个跨平台跟物联网啥的有没有关系,目前还不确定。先学一学怎么跨平台再说。

 ASP ,net core 核心组件详解

定位:轻松基于http  构建B/S结构的web 应用,并在设计之处就寄去了asp .net 的体系的而经验,进行了重构裁剪使得框架的构建逻辑犹如乐高积木拼装一般,看似简单却又恰到好处。

 核心组件的能力与应用场景:(均以microsoft.Extensions为前缀)

1>依赖注入:从容器的角度来看待,依赖注入由容器负责对象的构造,对象所依赖的其他对象由容器负责管理并注入给对象。控制反转是从对象的视角来讲的,指对象把构造自己及其依赖对象的控制权交给容器来管理。

在.NET Core生态中,是由依赖注入组件来实现依赖注入设计模式的,它的设计思路是通过定义类型的生命周期、构造方式等规则配置到容器中,由容器负责管理对象的创建和资源释放。

需要用到DependencyInjection.Abstractions \DependencyInjection两个nuget包;

DependencyInjection的核心类型是serviceDescriptor,serviceCollection\serviceProvider,三者关系如下:

.net Core3.0如何安装 .net core3.1_ide

 

 

服务描述类ServiceDescriptor;包含服务的类型、生命周期和构造方式等信息。

可以有3种方式获得目标类型(ServiceType)的实例:·

从已有的实例来创建,即ImplementationInstance。·

从指定的类型来动态创建,即ImplementationType。

从指定的工厂方法来动态创建,即ImplementationFactory。

IServiceColletion 与服务注册;IServiceColletion是服务描述类ServiceDescriptor的集合,

通过IServiceProvider获取服务实例;通过BuildServiceProvider方法可以获得服务容器ServiceProvider。

通过ServiceProvider的GetService方法可以获得注册服务的实例。

服务指的是什么??

三种生命周期函数:SCOPED\SINGLETON\TRANSIENT

根容器、子容器??

扩展接口:需要额外的扩展能力比如面向切面编程,采用第三方的库。

在controller中获取服务:使用构造函数参数;·使用HttpContext.RequestServices属性。·使用FromServicesAttribute标注Action的入参。

.net Core3.0如何安装 .net core3.1_ide_02

 

 

 

 

 

IDisposable

2>配置:本质上,配置是一种运行时对应用程序行为进行控制的手段。\

配置组件的构造过程:

整个过程如下:·

*创建IConfigurationBuilder。

·*向Builder中添加各种配置源(ConfigurationSource)。

·*通过Build方法构建IConfigurationRoot对象,其内部过程如下:

◇由ConfigurationSource的Build方法创建对应的ConfigurationProvider。

◇将ConfigurationProvider存储在ConfigurationRoot中。

内存配置提供程序

IConfigurationBuilder builder = new ConfigurationBuilder();

builder.Add(new MemoryConfigurationSource{InitialData=configData});

builder.AddInMemoryCollection(configData);

内存配置  内存中集合

为程序提供了与环境无关的特定行为的配置,这在定义应用程序时非常有用。明确定义组件使用的配置值,可以避免组件采用隐含的默认配置,使得应用程序的行为更为明确,代码也更易管理。

 

命令行配置提供程序

命令行配置提供程序可以轻松地将命令行参数作为配置的数据源。要使用命令行配置提供程序,需要安装NuGet包Microsoft.Extensions.Configuration.CommandLine,并使用如下代码将其注册到IConfigurationBuilder中。

命令行配置提供程序在开发自定义的命令行工具时非常有用,它可以灵活地定义工具的命令参数名称,并且无须在应用程序功能类的内部考虑命令映射关系。

 

环境变量配置提供程序

在容器化流行的当下,尤其是Kubernetes中,环境变量被广泛使用,这得益于容器的环境隔离能力,使得应用程序运行环境相互独立。使用环境变量作为配置数据源是一个不错的做法。环境变量配置提供程序提供了从环境变量读取配置的能力,因此可以非常轻松地适配容器化环境。

文件配置提供程序 文件(INI\JSON\XML)

 

key-per-file配置提供程序(目录文件)

使用Iconfiguration 读取配置

使用强类型接收配置

 

配置提供程序的典型顺序为:

  1. 文件(appsettings.json、appsettings.{Environment}.json,其中 {Environment} 是应用的当前托管环境)
  2. Azure 密钥保管库
  3. 用户机密 (Secret Manager)(仅限开发环境中)
  4. 环境变量
  5. 命令行参数

通常的做法是将命令行配置提供程序置于一系列提供程序的末尾,以允许命令行参数替代由其他提供程序设置的配置。

3>选项:

4>中间件:

5>路由:

日志:默认的ASP .net core web 应用模板,使用通用的主机,调用CreateDefaultBuilder,将添加控制台、调试、eventsource、eventlog(仅限Windows)

 

 

 

 

 

  

 

-参考书目《深入浅出asp .net core》

-《ASP. net core 从入门到实战》

-W3C ASP.NET Core 中的配置_w3cschool

学习无止境