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自身的运行原理和设计 ...
随机推荐
- url.cn短网址批量缩短开发接口
https://www.showapi.com/api/view/1728 //md5签名方式--非简单签名 <?php header("Content-Type:text/html; ...
- ABC113 AK失败记
众所周知, ABC是一场水题盛宴, 也是一场AK盛宴. 但是我却没能AK. 原因也十分可笑: 我在一开始觉得题目太简单, 颓废了.直到我看了第4题之后才找到状态并A了此题...最后时间来不及第三题最后 ...
- 结队第一次 plus
作业描述 作业所属课程:软件工程1916|W(福州大学) 作业要求:结对第一次-原型设计 结对学号:221600328 221600106 作业目标:尝试结对合作,使用NABCD模型,会分析用户需求, ...
- 【转】Zookeeper 安装和配置
转自:http://coolxing.iteye.com/blog/1871009 Zookeeper的安装和配置十分简单, 既可以配置成单机模式, 也可以配置成集群模式. 下面将分别进行介绍. 单机 ...
- MQTT之Mosquitto
https://mosquitto.org/ Eclipse Mosquitto是一个开源(EPL / EDL许可)消息代理,它实现了MQTT协议版本3.1和3.1.1.Mosquitto重量轻,适用 ...
- sqlalchemy 使用
创建连接 # 参数: '数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名' from sqlalchemy import create_engine engine = crea ...
- Hive参数的临时设置和永久性设置
Hive中有一些参数是系统给提供给用户的,我们可以通过这些参数的设置可以让Hive在不同的模式下工作,或者改变显示的效果. 1.通过set对参数值进行设定,这种设置只能是在本次会话有效,退出Hive就 ...
- Kubernetes1.7—DNS安装
虽然通过了Service解决了Pod重建后IP动态变化(服务发现).负载均衡问题,但使用Service还是要需要知道CLUSTER-IP,而通过NDS可以解决该问题:在Kubernetes集群中可通过 ...
- 2分钟读懂大数据框架Hadoop和Spark的异同
转自:https://www.cnblogs.com/reed/p/7730313.html 谈到大数据,相信大家对Hadoop和Apache Spark这两个名字并不陌生.但我们往往对它们的理解只是 ...
- python获取多线程的返回值
import threading class MyThread(threading.Thread): def __init__(self,func,args=()): super(MyThread,s ...