zoukankan      html  css  js  c++  java
  • 学习ASP.NET Core(01)-解决方案文件简介

    近期学习了ASP.NET Core相关的内容,决定从零开始写一个小例子,消化所学的内容,并记录过程中遇到的问题。本章是第一篇,内容为ASP.NET Core Web项目的解决方案文件介绍


    一、新建项目

    1、环境准备

    安装Visual Studio时,默认会安装上.NET Core SDK;如果没有安装,需要到微软官方网站下载.NET Core SDK,保证对ASP.NET Core的支持,目前版本是.NET Core 3.1,如下图,下载安装即可:

    2、创建项目

    1、打开Visual Studio,我这边用的是2019版本,选择ASP.NET Core Web应用程序,如下图,如果找不到可以进行简单的筛选:

    2、给项目起个名字,后续我想实现项目分层,所以把解决方案名称修改了一下,如下图:

    3、选择.NET Core和对应的版本号,为了熟悉项目的建立过程,这里我们选择空,右边高级“为HTTPS配置”把勾去掉,如下图:

    二、解决方案文件

    1、csproj文件

    双击项目名称,会出现了一个后缀为csproj的文件,该文件包含的是一些项目信息,包括使用的SDK,目标框架版本信息。如下图:

    2、launchsettings.json

    点开Properties,会发现launchsettings.json文件,这是一个程序运行配置文件。

    内部对应了两个配置,一个是IIS Express的配置,使用该配置时,VS会调用IIS Express运行项目,IIS Express是IIS的一个“迷你”版(项目运行时电脑右下角可见),所以文件中还包括了一些IIS的设定;另一个是项目的配置,使用该配置时会使用dotnet run来运行程序,并默认使用Kestrel Web Service来替代传统的IIS,Kestrel支持跨平台,并且它性能更佳。

    我们可以通过菜单栏中选择进行切换,或者右击项目选择属性后再调试选项页面中切换。

    3、依赖项

    依赖项中我们可以手动添加对项目或是封装好了的dll的引用,或使用NuGet来添加一些封装好的插件

    4、appsetting.json与appsettings.Development.json

    1、appsetting.json是应用程序配置文件,类似原先使用的WebConfig文件,里面默认对日志进行了一些配置。我们点开之后发现里面还有一个appsettings.Development.json文件,这个又是什么呢?

    在实际的开发中,我们通常会配置多个环境,比如开发环境,生产环境以及模拟环境等。在不同的环境中,配置是不同的,比如数据库的连接,静态文件的是否压缩等等。为了满足这种需求,微软推出了这样的配置方式。

    2、那么,它们的执行顺序是怎么样的呢?我们来看一下源码,系统会先加载appsetting.json,再加载目前设定的环境变量,比如appsettings.Development.json(可以在launchsettings.json中修改,或自定义一个),再加载UserSecrets,再加载计算机系统的环境变量,最后加载命令行变量。所以如果在上面5个设置中添加了相同的参数变量,那么后执行的会覆盖前面执行的。

    5、Program

    接下来我们来看一下Program.cs文件,它其实对应了一个控制台应用,系统运行后首先会进入Main方法。

    来看一下具体的流程:

    1、Main方法会调用下方的CreateHostBuilder静态方法;

    2、CreateHostBuilder静态方法会调用Host对象的CreateDefaultBuilder静态方法,在此方法中会加载一些默认的服务,包括:①使用ASP.NET Core内置的Kestrel服务;②IIS集成服务;③Log服务;④Configuration服务;当然还有其他很多默认服务,如下图:

    3、 CreateHostBuilder静态方法会返回一个IWebHostBuilder对象,该对象会通过UseStartUp实例化一个类加载整个Web应用的默认服务,系统默认使用的是StartUp类

    6、Startup(重要)

    最后我们来看一下Program中被调用的StartUp,它是系统默认的Web应用配置类。类的内部包括了ConfigurationServices方法和Configure方法。

    1、ConfigurationServices:我们在这里进行服务的注册,前面有提到系统会加载一些默认的服务,其他系统默认实现好了的服务或者是我们自定义的服务,就需要我们自己在这里进行注册了。注册过之后我们就可以通过依赖注入的方式进行全局的使用。像在之前的.NET Framework中我们通过AutoFac或者Unity等第三方服务实现的IOC容器就可以在这里注册,但是ASP.NET Core已经内置了IOC容器,我们同样在这里注册就可以了。

    2、Configure:我们在这里配置Http处理请求管道中间件,来响应ASP.NET Core程序的HTTP请求。另外需要注意的是中间件的添加顺序是十分重要的,比如验证中间件要放在比较靠前的位置,否则是无意义的。我们通常使用Use开头的方法进行注册中间件。

    最后再来看下什么是中间件?中间件是应用程序管道中进行组装后,可以处理请求和响应的组件。它们会按照添加的顺序依次进行处理,处理完成后再依次进行返回。即前一个组件接受请求后,会将请求传递给下一个中间件,直至最后一个中间件处理完成后再逆序返回响应,如下图:

    此外,每个中间件可以进行“短路”,举个例子,第2个中间件是验证中间件,发现请求的信息不满足验证要求,就会返回,传递回第一个中间件,不会再继续处理第3个中间件。

    本节完~

    若文中有错误的地方请及时指正,方便大家更好的学习和交流。

    文章参考了博客园几位大佬的视频内容及图片,仅供学习和交流使用

    solenovex,ASP.NET Core MVC 2.x 全面教程

    solenovex,ASP.NET Core 3.x 入门视频

    角落的白板报,《从零开始学ASP.NET Core与Entity Framework Core 》

    原创文章声明
  • 相关阅读:
    Java中的String,StringBuilder,StringBuffer三者的区别
    安装ik分词器以及版本和ES版本的兼容性
    利用logstash从mysql同步数据到ElasticSearch
    安装logstash和logstash-input-jdbc
    mac 下安装ES 与 Head插件 以及安装Kibana
    数据库备份出现警告:Warning: Using a password on the command line interface can be insecure. Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions, even thos
    Mybatis 中$与#的区别
    spring boot Tomcat访问日志
    spring boot配置druid数据源和监控配置
    kafka基本概念
  • 原文地址:https://www.cnblogs.com/Jscroop/p/12833592.html
Copyright © 2011-2022 走看看