ASP.NET Core框架揭秘(持续更新中…)
之前写了一系列关于.NET Core/ASP.NET Core的文章,但是大都是针对RC版本。到了正式的RTM,很多地方都发生了改变,所以我会将之前发布的文章针对正式版本的.NET Core 1.0进行改写。除此之外,我还会撰写一系列与此相关的文章,这些文章以ASP.NET Core为核心,我个人将它们分成三个主要的部分,即编程基础、支撑框架和管道详解。其中编程基础主要涉及与ASP.NET Core独特的编程模型和相关编程技巧。支撑框架则介绍支撑ASP.NET Core的多个独立的框架,比如依赖注入、配置模型、配置管理等等。至于最后一部分管道详解,我们会介绍ASP.NET Core最为核心的部分,即用以处理请求的管道,以及众多中间件。
“不要重复制造轮子”是我写文章甚至写书的一个基本原则,我不会撰写你可以从其它地方可以轻易获取的内容,更不会翻译微软的官方文档,所以本系列文章将打上Artech个人标签,好坏暂且不论,至少它们会是独特的,与众不同的。值得一提的是,这些文章将在个人公众帐号(Artech1984,大内老A)上发布,如果你希望采用这种阅读方式,或者希望得到及时的推送提醒,可以关注扫描左上方二微码关注。
第一部分 编程基础
如果没有Visual Studio 2015,我们如何创建.NET Core项目 ?
通过几个Hello World感受.NET Core全新的开发体验
难道.NET Core到R2连中文编码都不支持吗?
第二部分 基础框架
- 依赖注入
控制反转(IoC)
依赖注入(DI)
服务注册与提取
构造函数的选择与生命周期管理 - 文件系统
读取并监控文件的变化
FileProvider是个什么东西?
由PhysicalFileProvider构建的物理文件系统
由EmbeddedFileProvider构建的内嵌(资源)文件系统
扩展文件系统构建一个简易版“云盘” - 配置管理
读取配置数据
配置模型设计详解
Options模式
针对不同类型的配置绑定
多样性的配置源:内存变量,环境变量和命令行参数
三种针对文件(JSON、XML与INI)的配置源
将配置保存在数据库中
如何实现配置与源文件的同步
为什么针对XML的支持不够好?如何改进?
配置的同步机制是如何实现的? - 日志
采用统一的模式记录日志
将日志输出到控制台
将日志写入Debug窗口
利用EventLog写日志
利用TraceSource写日志
第三部分 管道详解
- 模拟管道
采用管道处理请求
管道如何处理请求
管道如何创建 - 真实管道
中间件究竟是个什么东西?
服务器在管道中的“龙头”地位
自定义一个服务器感受一下管道是如何监听、接收和响应请求的
应用的入口——Startup
中间件注册可以除了可以使用Startup之外,还可以选择StartupFilter
管道是如何随着WebHost的开启被构建出来的? - 补遗
如影随形的”依赖注入”[上]: 从两个不同的ServiceProvider说起
如影随形的”依赖注入”[下]: 历数依赖注入的N种玩法
ASP.NET Core应用中如何记录和查看日志
如何远程关闭一个ASP.NET Core应用?
如何设置和获取与执行环境相关的信息?
第四部分 中间件
- 静态文件
以Web的形式发布静态文件
条件请求与区间请求
StaticFileMiddleware中间件
DirectoryBrowserMiddleware中间件
DefaultFilesMiddleware中间件 - 路由
注册URL模式与HttpHandler的映射关系
路由系统的核心对象——Router
Router的创建者——RouteBuilder
来认识一下实现路由的RouterMiddleware中间件
内联路由约束的检验 - 错误处理
三种呈现错误页面的方式
DeveloperExceptionPageMiddleware中间件
ExceptionHandlerMiddleware中间件
StatusCodePagesMiddleware中间件
ASP.NET Core框架揭秘(持续更新中…)的更多相关文章
- [文章汇总]ASP.NET Core框架揭秘[最近更新:2018/10/31]
之前一段时间都在个人公众号账号“大内老A”发布关于ASP.NET Core的系列文章,很多人留言希望能够同步到这里,所以在这里 对这些文章做一个汇总,以便于PC端阅读.如果说微软官方文档主要关于ASP ...
- ASP.NET Core框架揭秘(持续更新中…)
之前写了一系列关于.NET Core/ASP.NET Core的文章,但是大都是针对RC版本.到了正式的RTM,很多地方都发生了改变,所以我会将之前发布的文章针对正式版本的.NET Core 1.0进 ...
- ASP.NET Core框架揭秘[博文汇总-持续更新]
第1部分 跨平台开发体验 1 跨平台开发体验 001 跨平台开发体验: Windows [上篇] 002 跨平台开发体验: Windows [中篇] 003 跨平台开发体 ...
- 一个Mini的ASP.NET Core框架的实现
一.ASP.NET Core Mini 在2019年1月的微软技术(苏州)俱乐部成立大会上,蒋金楠老师(大内老A)分享了一个名为“ASP.NET Core框架揭秘”的课程,他用不到200行的代码实现了 ...
- 200行代码,7个对象——让你了解ASP.NET Core框架的本质
2019年1月19日,微软技术(苏州)俱乐部成立,我受邀在成立大会上作了一个名为<ASP.NET Core框架揭秘>的分享.在此次分享中,我按照ASP.NET Core自身的运行原理和设计 ...
- 了解ASP.NET Core框架的本质
了解ASP.NET Core框架的本质 ASP.NET Core自身的运行原理和设计思想创建了一个 “迷你版” 的ASP.NET Core框架,并且利用这个 “极简” 的模拟框架阐述了ASP.NET ...
- 200行代码,7个对象——让你了解ASP.NET Core框架的本质
原文:200行代码,7个对象--让你了解ASP.NET Core框架的本质 2019年1月19日,微软技术(苏州)俱乐部成立,我受邀在成立大会上作了一个名为<ASP.NET Core框架揭秘&g ...
- ASP.NET Core框架深度学习(四)宿主对象
11.WebHost 第六个对象 到目前为止我们已经知道了由一个服务器和多个中间件构成的管道是如何完整针对请求的监听.接收.处理和最终响应的,接下来来讨论这样的管道是如何被构建出来的.管道是在作为应 ...
- 200行代码,7个对象——让你了解ASP.NET Core框架的本质[3.x版]
2019年1月19日,微软技术(苏州)俱乐部成立,我受邀在成立大会上作了一个名为<ASP.NET Core框架揭秘>的分享.在此次分享中,我按照ASP.NET Core自身的运行原理和设计 ...
随机推荐
- ios6和ios5横竖屏切换
记录于2013/8/5 在切换横竖屏的时候调用到的一些委托方法: #pragma mark - UIApplicationDelegate //写在Appdelegate中,在具体的某一视图控制器 ...
- [Linux] 使用Yum在CentOS上安装MySQL
跟随官网上的安装教程:https://dev.mysql.com/doc/refman/8.0/en/linux-installation-yum-repo.html官网上还有一个QuickGuide ...
- Spring保护方法
Spring保护方法 一.使用注解保护方法 1.@Secured 由Spring Security提供,首先需要启用基于注解的方法安全性: @EnableGlobalMethodSecurity(se ...
- 把ssl模块加入到已经编译好的apache中实现HTTPS
为了使Apache支持https访问,系统需要安有apache.openssl.mod_ssl.so 1.安装openssl: 基本上系统都已经安装了,在/usr/bin/openssl下,直接使用o ...
- 如何让pandas表格直接转换为markdown表格
https://stackoverflow.com/questions/33181846/programmatically-convert-pandas-dataframe-to-markdown-t ...
- angular.uppercase()
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Android进程间通信IPC
一.IPC的说明 IPC是Inter-Process Communication的缩写,含义为进程间通信或跨进程通信,是指两个进程之间进行数据交换的过程. IPC不是Android独有的,任何一个操作 ...
- css实用属性
background-size: 100% 100%; 背景通过拉伸实现填充 自适应 overflow: hidden; ...
- vuex学习(二)
参考:https://segmentfault.com/a/1190000015782272 vue 2.0+ 你的vue-cli项目中安装 vuex : npm install vuex --sav ...
- selenium python 设置窗口打开大小
1. 窗口最大化 1 driver.maximize_window() 2. 设置窗口大小 1 driver.set_window_size(1920,1080) #分辨率1920 x 1080