作为佛系博主还是来发点文章“滥竽充数”吧
于是我就找到了尘封多年的.net core学习笔记


为什么学习.NET Core

  1. .NET Core是必不可少的技能之一
  2. .NET Core是.NET的未来和趋势、一个重大的转折,特别是在即将发行的.NET5
  3. .NET Core在市场招聘中的重视

什么是.NET Core?

开源的通用的开发框架,支持跨平台、部署、开发、物联网、云服务

兼容原有的.NET Framework

.NET Core特性

  • 跨平台
  • 跨架构(x86、x64、ARM)
  • 支持命令行
  • 搭配Docker
  • 部署灵活
  • 兼容性强,比如向下兼容
  • 开源项目,意味着生态更好,更多高效的、创新的技术和框架

.NET Core与.NET Framework关系

.NET Core的发展

.NET Core是.NET Framework 4.8的后代

.NET Core目前最新版:3.1,下一个版本.NET5

.NET5整合了现在的.NET Core和.NET Framework ,大整合,统一。

.NET Core1.0正式版 2016.06发布

.NET Core3.0正式版 2019.09

.NET Core3.1正式版 2019.11

注意:.NET Core2.x可以运行在.NET Framework平台,但.NET Core3.x开始就是全新的开始。

学习.NET Core必须保证visual studio 2019版本在16.4+或者用vscode cli方式创建。

.NET Core3.x的新功能

支持winform、wpf,暂时不支持跨平台

ASP.NET Core 3.0+EF Core3.0

云原生、微服务,这也是.NET Core比较核心的东西

性能更快、体积更小、占用资源更少

ASP.NET Core趋势

ASP.NET Core重新设计了ASP.NET,体系结构大改变,就目前微软的发展战略

十年之内ASP.NET Core将是热点和重点

Blazor

微软出品的web框架

Blazor 是一个使用 .NET 生成交互式客户端 Web UI 的框架

简单来说,Blazor是一个开发客户端网页程序的框架。需要注意,根据官网的说明,如果你要开发网站类型的应用,还是应该用ASP.NET Core等框架。Blazor比较适合传统企业,在内网中运行,用户数量不多,基于浏览器的应用。

ASP.NET Core

项目结构(纯净的空项目)
  • lauchSettings.json 调试配置文件
  • appsettings.json 应用配置文件,类似于ASP.NET的web.config,但ASP.NET Core没有web.config
  • Program.cs 程序启动入口文件 -> Main() 入口点
  • Startup.cs web应用的启动类

.NET Core的配置文件都是.json文件,与.NET Framework的.config不同。

.NET Core内置一个日志组件

启动方式
  1. 基于iis express服务启动
  2. 以项目为主(自宿主)方式启动(通过命令行启动):dotnet run
Program.cs 程序启动流程

作用:创建主机、运行配置

流程:创建主机生成器>配置主机>创建主机>运行主机

主机的相关概念

主机主要负责web应用程序的启用和生存期管理,配置服务器和请求处理管道

主机配置日志、依赖关系的注入

主机实际上是一个封装了应用资源的对象 / 主机不是服务器!!!

主机(host)有两种:1.通用(泛型)主机 2.webhost

Kestrel是一个跨平台、适用于ASP.NET Core的webhost,角色类似于iis但不等于iis,没有iis的功能强大

Kestrel在Linux下性能更高,但功能少,不支持反向代理,只能被别人代理

为什么用Kestrel(反向代理的好处):额外的安全配置、https方便配置、负载平衡

代码实例
namespace WebApplication1
{
    /// <summary>
    /// 入口文件
    /// </summary>
    public class Program
    {
        /// <summary>
        /// 入口点
        /// </summary>
        /// <param name="args"></param>
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run(); //创建主机生成器
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            //创建默认的生成器,含默认的配置如下:
            //环境变量 (DOTNET开头的)
            //加载命令行参数
            //加载应用配置
            //配置默认的日志组件
            Host.CreateDefaultBuilder(args) //默认的主机生成器(通用的泛型主机)
                 //调用这里面的一些扩展方法,进行自定义配置
                 //默认的配置,启用kestrel
                .ConfigureWebHostDefaults(webBuilder => //web主机
                {
                    //组件配置,举例:
                    webBuilder.ConfigureKestrel((context, optinos) =>
                    optinos.Limits.MaxRequestBodySize = 1024); //最大请求报文
                    webBuilder.ConfigureKestrel((context, optinos) =>
                    optinos.Limits.MaxConcurrentConnections = 1024); //最大连接数 

                    webBuilder.UseStartup<Startup>(); //指定web启动类
                    
                    //主机配置,举例:
                    //权重:命令行>应用配置>硬编码>环境变量(ASPNETCORE开头的)
                    webBuilder.UseUrls("http://*:6666"); //指定url,覆盖其他配置里的默认url
                });
    }
}

声明:文中涉及的观点仅为个人在学习时总结以及讲师的原话,如有冒犯请海涵

Last modification:March 14th, 2020 at 07:17 pm
如果觉得我的文章对你有用,请随意赞赏