玩转ASP.NET 6.0框架-序言
ASP.NET Core
是微软提供的强大的web
框架,它有很多潜在的强大而有用的功能。
本专栏的目标是帮助您把框架的隐藏能力最大限度地发挥出来,让您能够按需定制ASP NET Core框架。本专栏提供了一种具体的操作和实现方法,可以让你在短时间尽可能地提高效率。
ASP.NET Core
架构概览
接下来,我们将介绍ASP.NET Core
的基础架构及其组件。这专栏讨论了架构的几乎所有组成部分。
下图显示了ASP.NET Core 6.0
的基础架构,让我们从下往上快速浏览一下:
底部是Host
层,它是引导web
服务和启动ASP.NET Core所需的所有的东西,包括日志记录、配置和服务提供者(service provider
),这些对象都是上层需要的依赖项。
Host
层之上是中间件层。该层负责处理请求对象,比如错误处理、权限控制、HSTS、CORS等等。
此外,还有路由层,它根据定义的路由模式将请求路由到端点endpoints
。端点路由是NET Core的新层,它将路由与上面的UI层分离,以支持不同端点的路由,包括Blazor
、gRPC
和Signal
。
提醒:在
ASP.NET Core
的早期版本中,路由是MVC层的一部分,其他每个UI层都需要实现自己的路由。
实际端点由第四层UI层提供,该层包含著名的UI框架Blazor
、gRPC
、SignalR
和MVC
。作为ASP.NET Core开发人员,这里是你主要编码的地方。
最后,在MVC
上面,您将看到WebAPI
和Razor
页面。
专栏涵盖的内容
本专栏并未涵盖架构概述中提到的所有主题。本书涵盖了Host
层的大部分主题,因为Host
层包含了您可能需要定制的大部分内容。本专栏讨论了中间件和路由,以及MVC特性和一些更多的WebAPI主题,在这些主题中你可以做一些魔性化定制。
在每篇的开头,我会提示主题的难度级别。
专栏未涵盖的内容
专栏不包括Razor Pages
、Signal
、gRPC
和Blazor
。
原因是gRPC
和Signal
已经非常专业化,不需要定制。Blazor
是ASP.NET Core的新成员,虽然尚未广泛使用。此外,笔者本身对Blazor
还不够熟悉,不知道定制Blazor
的所有细节。Razor
页面位于MVC框架之上,MVC的定制也适用于Razor
页面。
专栏的阅读对象
本书面向使用ASP.NET Core
的web开发人员,他们可能需要更改框架的默认行为才能完成任务。读者应具备ASP. NET Core
的基本知识,因为本专栏没有介绍这些技术的基础知识。读者还应该对Visual Studio
、Visual Studio Code
或任何其他支持ASP.NET Core
和C#
的代码编辑器有很好的了解。
专栏涵盖的章节
第1篇:“自定义日志记录”,介绍如何自定义日志记录行为以及如何添加自定义日志记录提供程序。
第2篇:自定义应用程序配置,帮助您了解如何使用不同的配置源和添加自定义配置提供程序。
第3篇:定制依赖注入,介绍依赖注入(DI
)如何工作,以及如何使用不同的DI
容器。
第4篇:用Kestrel
配置和定制HTTPS
,探讨如何以不同的方式配置HTTPS
。
第5篇:配置WebHostBuilder
,帮助您了解如何在托管层上设置配置。
第6篇:使用不同的托管模型,介绍在不同平台上使用不同类型的托管。
第7篇:使用IHostedService
和BackgroundService
,让您了解如何在后台执行任务。
第8篇:编写定制中间件,探讨使用中间件的HTTP
上下文。
第9篇:“端点路由”,介绍如何使用新路由提供自定义端点。
第10篇:定制ASP.NET Core
的Identity
,介绍如何扩展应用程序的用户属性,并帮助您更改Identity UI
。
第11篇:配置Identity
(身份管理),帮助您管理用户及其角色。
第12篇:使用自定义OutputFormatter
的Content Negotiation
(内容协商),介绍如何基于HTTP Accept
头输出不同的内容类型。
第13章,使用自定义ModelBinder
管理输入,帮您创建具有不同内容类型的输入模型。
第14章,创建自定义ActionFilter
,介绍如何使用ActionFilter
的面向切面编程。
第15章,使用缓存,帮助您提高应用程序的性能。
第16章,创建自定义TagHelper
,通过创建TagHelper
简化您的UI层。
技术准备
读者应具备ASP.NET Core
的基本知识,以及Visual Studio
、Visual Studio Code
或任何其他支持ASP.NET Core
代码编辑器。
安装最新的NET 6.0 SDK
。请在以下网址查找最新版本。
使用任何支持ASP NET Core
的代码编辑器。我们建议使用Visual Studio Code
(网址),因为它可在所有平台上使用。
专栏中的所有项目都将使用控制台、命令提示符、shell
或PowerShell
创建。不建议使用Visual Studio
创建项目,因为基本配置可能会被更改。
除了NET 6.0
,理论上也支持NET Core 3.1
或NET 5.0
,有些章节介绍了NET 6.0和5.0的些许差异。
最后
欢迎你加入我的知识星球,学习更新更全的.NET知识。
玩转ASP.NET 6.0框架-序言的更多相关文章
- ASP.NET 2.0服务器控件开发的基本概念(转载)
利用ASP.NET 2.0技术,创建Web自定义服务器控件并不是一件轻松的事情.因为,这需要开发人员了解并能够灵活应用多种Web开发技术,例如,CSS样式表.客户端 脚本语言..NET开发语言.服务器 ...
- VS2017创建一个 ASP.NET Core2.0 应用,并搭建 MVC 框架
https://testerhome.com/topics/11747 1.使用最新版本的VS2017,并安装.NET Core2.0中相关开发工具 2.打开VS2017,点击文件-新建-项目,选 ...
- IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习保护API
IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习之保护API. 使用IdentityServer4 来实现使用客户端凭据保护ASP.N ...
- 7 天玩转 ASP.NET MVC — 第 1 天
0. 前言正如标题「7 天玩儿转 ASP.NET MVC」所言,这是个系列文章,所以将会向大家陆续推出 7 篇.设想一下,一天一篇,你将从一个愉快的周一开始阅读,然后在周末成为一个 ASP.NET M ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(14)-主框架搭建 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2 ...
- Asp.NET Core2.0 项目实战入门视频课程_完整版
END OR START? 看到这个标题,你开不开心,激不激动呢? 没错,.net core的入门课程已经完毕了.52ABP.School项目从11月19日,第一章视频的试录制,到今天完整版出炉,离不 ...
- Log4Net异常日志记录在asp.net mvc3.0的应用
前言 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不同的媒介.本文主要是简单的介绍如何在Visual ...
- 新作《ASP.NET MVC 5框架揭秘》正式出版
ASP.NET MVC是一个建立在ASP.NET平台上基于MVC模式的Web开发框架,它提供了一种与Web Form完全不同的开发方式.ASP.NET Web Form借鉴了Windows Form基 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(24)-权限组的设计和实现(附源码)(终结)
ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2):数据库访问层的设计Demo (3):面向接口编程 (4 ):业务逻辑层的封装 ...
随机推荐
- IDEA问题之“微服务启动项目时,不会加载Spring Boot到Services中”
1.启动项目时,不会加载Spring Boot到Services中 现象解析: 启动项目时 会在debug的位置加载项目 注:这里没有配图,因为问题已解决,未记录图,需往后遇到记录 解决方案: 需要在 ...
- SQL数据库之设置查询出来数据为默认值
-- 如果工资为null,按0处理 -- 函数: ifnull(字段, 默认值) : 如果指定字段的内容是null, 就按默认值处理 select name, ifnull(salary, 0) fr ...
- Java根路径设置(在获取本地路径时会获取到这个文件夹,,这样就可以专门放配置文件了)
在获取本地路径时会获取到这个文件夹,,这样就可以专门放配置文件了
- C# 正则表达式判断是否是有效的文件、文件夹路径
C# 正则表达式判断是否是有效的文件.文件夹路径 省流 /// <summary> /// 是否有效的文件,文件夹路径 /// </summary> /// <param ...
- 学习webpack前的准备工作
前言 由于vue和react的流行,webpack这个模块化打包工具也已经成为热门.作为前端工程师这个需要不断更新自己技术库的职业,真的需要潜下心来学习一下. 准备工作(针对mac用户) 安装 hom ...
- jQuery Validate多实例讲解
规则 描述 required:true 必须输入的字段. remote:"check.php" 使用 ajax 方法调用 check.php 验证输入值. email:true 必 ...
- Bootstrap 之 Metronic 模板的学习之路 - (1)总览
写在前面 bootstrap 的模板非常多,Envato 上有着各种各样的免费及付费模板.Metronic 是我最喜欢的模板之一(看一眼就喜欢上的那种),当前售价 $28 ,觉得赞的,不妨支持一下作者 ...
- 微信小程序答题,怎么设计页面渲染,答完一题,跳到下一题
想要的效果 1.第一页只显示第一道题的内容,如图红框2.答题后,点击下一题,内容显示第二道题的内容 代码 answer.wxml <!--pages/answer/answer.wxml--&g ...
- 原生ES6写的Web游戏:ES6-Mario,小美女,小帅哥快来玩啊~~
? ES6-Mario 这是一个用原生ES6语法和HTML5新特性写成的Web 游戏. 通过这个项目,你可以在实践中对ES6的主要内容.HTML Canvas 相关API以及Webpack的基础配置有 ...
- Node的重要性
一. 为什么要学Node 1. 是自己更全面, 有大局观 2. 提升话语权 3. 升职加薪的筹码 二. Node的作用和应用 1. 脱离浏览器运行 js 2. 后台API编写 3. webpack, ...