3.asp.net core 关键概念
1. StartUp类
在Startup.ConfigureServices方法里配置或注册服务
在Startup.Configure方法里配置请求处理管道。请求处理管道由一系列中间件组建构成,每个中间件对HttpContext进行异步操作,然后调用下一个中间件组件,或是结束请求。
2.依赖注入
asp.net core拥有内建的依赖注入框架。在应用中,可以通过创建参数中包含目标服务的类型或接口的构造函数,来获取这个服务的实例。
3.中间件
asp.net core包含丰富的内建中间件,你也可以实现自己的中间件。中间件通常是在Startup.Configure方法里,通过调用它的Use...扩展方法来加入到请求处理管道里,比如UseStaticFiles或者UseMvc等。
4.主机
asp.net core在启动时构建一个主机。主机封装了应用需要的所有资源,比如HTTP服务器、中间件、日志系统、依赖注入框架、配置等。之所以把所有的资源放在一个地方,是为了生命周期管理。
有两种主机可用,通用主机和web主机。推荐使用通用主机,web主机是为了向后兼容考虑的。
创建主机的代码在Program.Main方法里:
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
} public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
5.服务器
asp.net core应用程序使用HTTP服务器监听http请求。服务器把对应用程序的请求转化为HttpContext。
6.配置
asp.net core中有一系列内建的配置提供器,比如appsettings.json,环境变量,命令行参数等,你也可是实现自定义的配置提供器。
7.选项
asp.net core 尽可能地遵照选项模式来存储和检索配置信息。选项模式使用类来代表一组相关的设置。
8.环境
执行环境包括3中类型:开发,暂存,生产。可以在ASPNETCORE_ENVIRONMENT环境变量里设置具体的执行环境。程序在启动的时候,读取这个环境变量,并且把值存储在IHostingEnvironment实现里。在应用中,可以通过DI依赖注入来获取它的实例。
9.日志
asp.net core支持日志api,它能和许多内建的和第三方日志提供程序通信。
在应用中通过依赖注入获取一个ILogger实例,并调用log方法记录日志。
10.路由
路由就是对请求url和处理程序的映射。
11.错误处理
asp.net core包含内建的错误处理机制。
12.构造HTTP请求
IHttpClientFactory实现可以用来创建HttpClient实例。
13.内容根目录
通常内容根目录指向web app可执行文件所在目录,可以在构建主机的时候配置其他的位置。
14.web根目录
web根目录下存放公共的静态的资源,比如css,js和图片文件,通常指向目录{Content Root}/wwwroot,可以在构建主机的时候配置其他的位置。默认情况下,静态文件中间件只会从web根目录和它的子目录里提供文件。
在razor(.cshtml)文件里,~/代表的就是web根目录。以~/开头的路径被称为虚拟路径。
3.asp.net core 关键概念的更多相关文章
- .NET 云原生架构师训练营(ASP .NET Core 整体概念推演)--学习笔记
演化与完善整体概念 ASP .NET Core 整体概念推演 整体概念推演到具体的形式 ASP .NET Core 整体概念推演 ASP .NET Core 其实就是通过 web framework ...
- .net core 关键概念
startup startup asp.net core 的入口,在构造函数中完成环境参数的配置. 其中Configure 方法是用来控制如何respond一个http请求的, 例如配置l ...
- 200行代码实现Mini ASP.NET Core
前言 在学习ASP.NET Core源码过程中,偶然看见蒋金楠老师的ASP.NET Core框架揭秘,不到200行代码实现了ASP.NET Core Mini框架,针对框架本质进行了讲解,受益匪浅,本 ...
- Asp.net Core IdentityServer4 入门教程(一):概念解析
目录 1.IdentityServer4 是什么 2.什么是OpenID和OAuth 2.0协议 3.IdentityServer4 可以用来做什么 其他 1.IdentityServer4 是什么 ...
- ASP .Net Core路由(Route) - 纸壳CMS的关键
关于纸壳CMS 纸壳CMS是一个开源免费的,可视化设计,在线编辑的内容管理系统.基于ASP .Net Core开发,插件式设计: GitHub:https://github.com/SeriaWei/ ...
- ASP.NET Core on K8S学习初探(2)K8S基本概念快速一览
在上一篇<单节点环境搭建>中,通过Docker for Windows在Windows开发机中搭建了一个单节点的K8S环境,接下来就是动人心弦的部署ASP.NET Core API到K8S ...
- 【翻译】asp.net core 3.0基本概念
这篇文章描述了开发asp.net core所需要掌握的基本概念. 原文地址:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/?vie ...
- asp.net core 3.x 身份验证-1涉及到的概念
前言 从本篇开始将围绕asp.net core身份验证写个小系列,希望你看完本系列后,脑子里对asp.net core的身份验证原理有个大致印象.至于身份验证是啥?与授权有啥联系?就不介绍了,太啰嗦. ...
- asp.net core 3.x 授权中的概念
前言 预计是通过三篇来将清楚asp.net core 3.x中的授权:1.基本概念介绍:2.asp.net core 3.x中授权的默认流程:3.扩展. 在完全没有概念的情况下无论是看官方文档还是源码 ...
随机推荐
- Hystrix原理与实战(转)
背景 分布式系统环境下,服务间类似依赖非常常见,一个业务调用通常依赖多个基础服务.如下图,对于同步调用,当库存服务不可用时,商品服务请求线程被阻塞,当有大批量请求调用库存服务时,最终可能导致整个商品服 ...
- error C2061: 语法错误: 标识符“openmode”
今天在一台新机子上编译项目,出现了这个错误,不知如何解决,先记录一下. 1>------ 已启动全部重新生成: 项目: ZERO_CHECK, 配置: Debug x64 ------1> ...
- QML工程加载main.qml的两种方式
1. QQmlApplicationEngine engine; engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); if (e ...
- rf安装对应requests库的方法
先要安装requests,再安装requestsLibrary pip install requests pip install robotframework-requests github地址 ht ...
- 了解有后门的sshd服务是如何劫持密码的
在服务器上安装一个打了后门补丁的sshd服务,当用户连接时,直接把密码记录下来,然后使用脚本发送到邮箱中. (1).实验环境 使用CentOS6.2作为系统环境,查看sshd和gcc的版本 [root ...
- OpenGL程序无法启动此应用程序,因为计算机中丢失glut32.dll(转))
今天打开一个OpenGL源码,各种修改之后想要运行看一下效果,结果在我的开发环境下出现缺少相应的dll库: Windows7 64位+VS2010 提示:程序无法启动此应用程序,因为计算机中丢失glu ...
- MongoDB学习笔记一:MongoDB基础
目录 MongoDB是什么? 学了有什么用? MongoDB入门 安装 修改数据库位置 MongoDB的启动方式 MongoDB的图形化工具 MongoDB基本命令 增 查询 更新 删除 排序 投影 ...
- composer autoload优化
为生产环境作准备 最后提醒一下,在部署代码到生产环境的时候,别忘了优化一下自动加载: composer dump-autoload --optimize 安装包的时候可以同样使用--optimize- ...
- LODOP中table自动分页补线加border
LODOP中可以用ADD_PRINT_TABLE.ADD_PRINT_HTM.ADD_PRINT_HTML.ADD_PRINT_TBURL等可以输出超文本的表格,超文有超过打印项高度或纸张高度自动分页 ...
- easyui datagrid里的toobar按钮隐藏、显示、禁用等方式的实现
easyui datagrid里的toobar按钮隐藏.显示.禁用等方式的实现 //隐藏第一个按钮 $('div.datagrid-toolbar a').eq(0).hide(); //隐藏第一条分 ...