asp.net core默认项目包括
项目根目录级的Startup.cs、Program.cs、appsettings.json(appsettings.Development.json) launchSettings.json
Controllers文件夹下面的ValuesController.cs
以及启动配置文件launchSettings.json

Program.cs

Program.cs 配置程序启动项以及各类初始化, Asp.net Core 3.0以及以后版本的替换依赖注入就得在Program内配置

.net core 3.0之前的Program.cs
.net core 3.0之后的Program.cs

.net core 3.0之前的Program.cs

.net core 2.2以及之前的版本,控制容器的,主要是WebHost,默认实现也以此为主

在WebHost.CreateDefaultBuilder(args)之后,就可以完成各种对于WebHost的配置,常见的默认函数 UseStartu、UseUrl以及UseConfiguration等。
执行完CreateWebHostBuilder函数后,返回IWebHostBuilder,然后Build->Run项目启动

.net core 3.0之后的Program.cs

.net core 3.0以及以后,控制容器的,从WebHost变成Host,默认实现也以此为主

在WebHost.CreateDefaultBuilder(args)之后,执行ConfigureWebHostDefaults函数,在函数内就可以完成各种对于WebHost的配置,常见的默认函数 UseStartu、UseUrl以及UseConfiguration等
执行完CreateWebHostBuilder函数后,返回IWebHostBuilder,然后Build->Run项目启动

Startup.cs

Startup是Asp.net core启动程序
Startup启动过程中默认实现并启动了IStartup接口和IStartupFilter接口
IStartup是Starup的隐式实现,IStartupFilter是启动过程中的过滤器,可以完成一些加载在asp.net core管道/中间件之前的额外流程

IStartup/Startup

Starup是根据IStartup实现的

       public interface IStartup       {              IServiceProvider ConfigureServices(IServiceCollection services);              void Configure(IApplicationBuilder app);       }

ConfigureServices方法只能有一个参数,且参数类型为IServiceCollection,返回值为IServiceProvider
Startup类的ConfigureServices方法,在asp.net core 3.0以及以上,返回值只能为void
Configure方法可以依赖注入多个Singleton/Transient生命周期的服务

IStartupFilter

IStartupFilter是启动前的过滤器

       public interface IStartupFilter       {              Action Configure(Action next);       }

在启动过程中,通过Ioc容器获取一组IStartupFilter实力,然后列表反转执行

private RequestDelegate BuildApplication(){    ..    IApplicationBuilder builder = builderFactory.CreateBuilder(Server.Features);    builder.ApplicationServices = _applicationServices;    var startupFilters = _applicationServices.GetService>();    Action configure = _startup.Configure;    foreach (var filter in startupFilters.Reverse())    {        configure = filter.Configure(configure);    }    configure(builder);    return builder.Build();}

后记

开了一个系列,杂谈一下asp.net core的内容,做一下系统性的总结分享。网上不缺乏分享asp.net core细节的,无论是源码级,还是应用上的sample,但是缺乏一个系统性的系列。
不自量力,想分享一点。

asp网上书店系统_Asp.net Core启动流程讲解(一)相关推荐

  1. (附源码)ssm网上书店系统 毕业设计 061436

    SSM网上书店系统 摘 要 随着科学技术的飞速发展,社会的方方面面.各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,网上书店系统当然也不能排除在外.网上书店系统是以实际运用为开发背 ...

  2. 一张图理清ASP.NET Core启动流程

    1. 引言 对于ASP.NET Core应用程序来说,我们要记住非常重要的一点是:其本质上是一个独立的控制台应用,它并不是必需在IIS内部托管且并不需要IIS来启动运行(而这正是ASP.NET Cor ...

  3. 网上书店系统/书店管理系统的设计与实现

    摘  要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息.为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代, ...

  4. [附源码]java毕业设计网上书店系统

    项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...

  5. MySQL数据库设计作业 ——《网上书店系统》数据库设计实验报告

    数据库设计作业--<网上书店系统>数据库设计 一.功能需求 普通用户:可以进行最基础的登陆操作,可浏览图书.按类别查询图书.查看 图书的详细信息,还可以注册成为会员. 会员:需要填写详细信 ...

  6. 基于java web的网上书店系统

    006基于java web的网上书店系统(含论文) 开发环境: Eclipse/MyEclipse.Tomcat8.Jdk1.8 数据库: MySQL 适用于: 课程设计,毕业设计,学习等等 系统介绍 ...

  7. 基于JSP网上书店系统的设计与实现

    欢迎添加微信互相交流学习哦! 项目源码:https://gitee.com/oklongmm/biye2 摘 要 JAVA语言是目前Internet上大型的WEB应用程序开发时使用得最热门的编程语言, ...

  8. java和sql网上书店系统_网上书店管理系统(java。SQL Server数据库)

    [实例简介] 网上书店管理系统(java.SQL Server数据库) [实例截图] [核心代码] 网上书店系统(1) └── 网上书店系统 └── Store ├── bookDB │   ├── ...

  9. [附源码]计算机毕业设计JAVA网上书店系统

    [附源码]计算机毕业设计JAVA网上书店系统 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(Intell ...

最新文章

  1. [置顶] 面向业务开发应用
  2. 碰到Maven依赖冲突,想砸电脑?这个IDEA插件必须了解一下...
  3. Hbase完全分布式的搭建
  4. python树莓派设备_Python+树莓派制作IoT(物联网)门控设备
  5. mysql截取栏目字符_substring从指定字符串开始截取(图)
  6. 二值形态学操作、图像的边缘检测、图像编码
  7. 被嫌弃的互联网的 “一生”(上)
  8. .Net Framework4.5中Asp.net mvc使用Singal R轮训实现导入进度条功能
  9. 菜鸟教程 php mysql_PHP MySQL 读取数据 | 菜鸟教程
  10. 分治法:归并排序求逆序对
  11. 获取pycharm 2016.1.4 注册码 (window系统) 2016.3注册码(Ubuntu系统)
  12. Makefile 中$@ $^ $ 解释
  13. filebeat日志采集的一次流程记录
  14. 关于微信隐藏分享按钮的心得
  15. 使用自定义手势处理器-陈鹏
  16. 高并发 问题怎么解决
  17. 使用el-image-viewer的预览功能
  18. windows xp sp3(XP3)无法安装或使用iis的根本原因及解决办法研究
  19. 《剑来》语句摘录(六)
  20. element-ui input 身份证号码验证

热门文章

  1. 60亿击败1750亿、验证胜过微调:OpenAI发现GPT-3解决数学题,并非参数越大越好...
  2. 盘点3个提升技能的AI项目,NLP/CV/BI,3个方向
  3. 80后博导当上双一流高校副校长:还是杰青获得者
  4. SHELL中的三神器:管道、重定向、backtick
  5. 使用 RPI.GPIO 模块的脉宽调制(PWM)功能
  6. Flask环境的配置
  7. RESTful之权限Permissions
  8. 爬虫之requests模块超时参数timeout的使用
  9. MySQL数据库子查询
  10. 关于卷积神经网络的思考:将CNN视作泛函拟合