.Net Core 简化版启动流程、常见启动方式、请求/响应流程
- 前言--为什么要使用.Net Core
- 一. 启动流程
- 二. 几种启动方式
- (1)命令行启动
- (2)IIS反向代理启动
- 三. 请求/响应流程
前言–为什么要使用.Net Core
首先.Net Core与.NET Framework 对比
1. 组件化开发 vs 全家桶
2. 跨平台 vs 基于windows
3. 高性能 vs 性能相对较低
未来2-3年内,.NET5会统一 .Net Core和.NET Framework(一起期待这一天)
一. 启动流程
所有的ASP.NET Core程序本质上也是一个控制台程序,使用Program的Main方法作为程序的入口。
控制台Main入口–>IWebHostBuilder–>IWebHost–>Run,发现本质上就是启动一个作为宿主的Host。
从上图中我们可以看出CreateDefaultBuilder()方法主要干了六件大事:
- UseKestrel: 使用Kestrel作为Web server。
- UseContentRoot: 指定Web host使用的contentroot(内容根目录),比如Views。默认为当前应用程序根目录。
- ConfigureAppConfiguration: 设置当前应用程序配置。主要是读取 appsettinggs.json配置文件、开发环境中配置的UserSecrets、添加环境变量和命令行参数 。
- ConfigureLogging: 读取配置文件中的Logging节点,配置日志系统。
- UseIISIntegration: 使用IISIntegration 中间件。
- UseDefaultServiceProvider: 设置默认的依赖注入容器。创建完毕WebHostBuilder后,通过调用UseStartup()来指定启动类,来为后续服务的注册及中间件的注册提供入口,并构建请求中间件管道。
更详细的解释请访问以下链接:https://blog.csdn.net/WuLex/article/details/81942623
二. 几种启动方式
先解释一下为什么.net Core能够跨平台: Asp.NetCore本质是个控制台—运行起来是个网站—内置了一个Kestrel服务器(IIS服务器是基于windows系统—有了Kestrel服务器,程序就能脱离对IIS的依赖,才能做到跨平台)
注意: 因为Kestrel相对较新,对抵御安全攻击至今还没有一个完整的功能补充。安全性处理包括但不限于适当的超时,大小的限制,以及并发连接限制等问题。
所以出于安全性的考虑,如果你将你的应用部署在公共网络上,我们建议你使用IIS,Nginx或者Apache作为反向代理服务器。一个反向代理服务器接收来自网络的HTTP请求并且在经过一些初步处理后将请求传递到Kestrel服务器。
(1)命令行启动
假设项目名为 MvcCoreTest
在项目的 \bin\Debug\netcoreapp3.1目录下输入cmd并回车
输入:dotnet MvcCoreTest.dll --urls=“http://*:5177” --ip=“127.0.0.1” --port=5177
(2)IIS反向代理启动
如果还在调试阶段,直接F5,
如果需要部署到IIS,请参考链接: .NET Core项目+华为云+Windows Server2019+IIS部署.