zoukankan      html  css  js  c++  java
  • DotNetCore学习-2.程序启动

    新创建的ASP.NET Core程序中包含两个文件,分别是Program、Startup。其中,Program中Main方法是整个应用程序的入口,该方法如下:

        var host = WebHost.CreateDefaultBuilder(args)
                    .UseKestrel(options => options.AddServerHeader = false)
                    .UseStartup<Startup>()
                    .Build();
        host.Run();
    

    它的主要作用就是设置使用Kestrel服务器,并设置程序启动类Startup。
    严格来说,Startup类需要继承自IStartup接口,但是此处采用契约的方式来实现,及时没有继承自IStartup,UseStartup方法内部也会将该类包装成IStartup接口的实现。
    Startup类包括一个属性一个构造函数,两个方法,分别为

    public class Startup
    {
        public IConfiguration Configuration { get; }
    
        public Startup(IConfiguration configuration)
        {
            //set configuration
            Configuration = configuration;
        }
    
        public IServiceProvider ConfigureServices(IServiceCollection services)
        {
            // to do something
        public void Configure(IApplicationBuilder application)
        {
            // to do something
        }
    }
    

    Startup类中的方法的调用顺序为

    Startup构造->ConfigureServices(...)->Configure(...)
    ASP.NET MVC中的某些功能,需要从IServiceCollection中请求某些服务,而这些服务都需要在接入请求管道之前被加入IServiceCollection中,因此,ConfigureServices函数必须在Configure之前被调用。
    
    • 构造函数中的传入参数IConfiguration configuration中包含默认配置文件appsettings.json中的配置。我们能够通过获取配置的方式得到对应的配置信息。我们也可以在此处获取自定义配置信息。
    • ConfigureServices函数的传入参数IServiceCollection services,可以将程序中使用的服务使用依赖注入(Dependency Injection)的方式加入到服务容器,这样程序中的其他类就可以获取并使用它。向服务容器中添加服务时,就涉及到服务的生命周期的问题,ASP.NET Core中生命周期的定义包括以下三种:
    Transient 瞬时 每次请求时都会创建,适合轻量级,无状态的服务
    Scoped 作用域 每次请求中只创建一次
    Signleton 单例 第一次被请求时创建,以后每个后续请求都将使用这个实例
    • Configure函数的传入参数IApplicationBuilder application,用来配置应用程序将如何响应每个HTTP请求。
  • 相关阅读:
    【持续更新】dp优化浅谈:实现篇
    【持续更新】dp优化浅谈:理论篇
    利用普通生成函数解斐波那契数列的通项问题
    【讲稿】动态规划基础4
    多项式板子(待完善)
    快速傅里叶变换学习笔记
    非阻塞同步算法实战(四)- 计数器定时持久化
    您还有心跳吗?超时机制分析(java)
    [分享]正则文本替换器(已开源)
    MySql大表分页(附独门秘技)
  • 原文地址:https://www.cnblogs.com/DreamOfLife/p/9396707.html
Copyright © 2011-2022 走看看