01第1节:appsettings.json文件
#NET编程#对于ASP.NETWeb应用程序的开发者来说,web.config文件应该很熟悉了,它是一个配置文件,用于对全局整个应用程序的配置。
那配置什么呢?
我们都知道,当软件项目开发完成之后,需要发布一个最终版本并交付给客户,而在客户使用的过程中,有些数据是需要发生变化的,如服务器的地址、数据库名称、管理员账户等等。
.NET全场课程-从0基础到深入学习线上.NET培训课程淘宝¥购买已下架因此,对于一个合格的开发者来说,开发的应用程序不仅要健壮,还要具有弹性,可配置化的。
能够在使用环境发生变化后,进行一些简单的配置,软件能够适应环境而正常运行。
因此,需要一个能够配置可变化数据的地方,因此配置文件就派上用场了。
而在ASP.NETCore中,微软进行了优化和修改,抛弃了Web.config配置文件,而是使用了appsettings.json文件来替代web.config。
我猜想是因为使用JSON格式要比使用xml格更好。Web.config是一个标准的XML格式的文件,冗余标签多,如果配置项多,该文件就会变的更大。而JSON格式轻量级的,小巧且结构清晰。
02第2节:Startup类
对于ASP.NETCoreWeb应用程序来说,appsettings.json配置文件重点是在程序发布后,经常变化的数据,可配置在appsettings.json文件中,且非开发人员就可以完成。
而对于Startup类来说,是开发层次的配置类,是开发者将开发过程中的可配置的组件放在Startup.cs类中。
这里的配置是当前开发框架中,使用到了其它程序集而进行的配置,因为在ASP.NETCore中,微软进行了组件式开发,实现可插拔式的组件组装。
因此,使项目依赖性更少,只依赖需要的组件。
03第3节:Startup类组成
ASP.NETCore中的Startup类主要有三部分组成:
构造函数。ConfigureServices()配置服务方法,该方法是可选的。Configure()配置方法。下面就这3部分组成详细讲解一下。
3.1.Startup构造函数
由于Startup.cs类文件中的类名就是Startup,构造函数的名称要与类名相同。
因此,在上图中,我们发现,Startup是一个普通类,且构造函数带有一个参数,其类型是:IConfiguration接口,且在构造函数内部:
是将参数的值赋值给了Configuration,Configuration是一个具有Iconfiguration类型的属性。
这样,我们可以在整个Startup类中使用Configuration属性了。
Startup构造函数的主要功能是注入服务,可以注入的服务有3个:
IConfiguration:表示以键/值的形式配置应用程序。IWebHostEnvironment:提供有关应用程序正在运行的web宿主环境的信息。IHostEnvironment:提供有关运行应用程序的宿主环境的信息。这3个服务都属于主机类型的服务,用于在主机启动后,注入这些服务,以提供相应的服务。
在应用程序所在的主机运行时,执行的顺序是:
Startup构造函数。ConfigureServices()方法。Configure()方法。根据这3个方法执行的顺序,按顺序加载不同的服务。
3.2.ConfigureServices()方法
该方法按微软官方的解释是:此方法由运行时调用,使用此方法将需要的服务添加到容器中。这样注入的服务就可以在整个应用程序中使用了。
在ConfigureServices()方法中,只能注入IServiceCollection类型的服务,
在使用时,通过参数的Addxxx开头的方法添加需要的服务。
好处是,我们自行开发的服务以注入的方式添加到配置中,这样注入的服务是可以在整个应用程序的其它方法中调用和使用的。
可以将这样的服务理解为:电脑上的USB口,当电脑上需要U盘、移动硬盘、手写板、扫描仪、打印机等设备时,只要他们具有USB插头,就可以在你的电脑上使用。
而Startup类中的ConfigureServices()方法,就相当于你的电脑USB口,你需要什么服务,就在此方法中注入即可。
3.3.Configure()方法
Configure()方法由运行时调用,使用此方法可以配置HTTP请求管道。
此方法有2个参数:
IApplicationBuilderapp。IWebHostEnvironmentenv。我们请求的HTTP就是添加到IApplicationBuilder类型的实例中的,以Usexxx的方式添加:
对于,我们通常使用的日志服务,就可以添加到Configure()方法中,
也就是与HTTP请求相关的服务,都要注入到Configure()方法中,像日志、路由、授权等。