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自身的运行原理和设计 ...
随机推荐
- 聊聊Unity项目管理的那些事:Git-flow和Unity
0x00 前言 目前所在的团队实行敏捷开发已经有了一段时间了.敏捷开发中重要的一个话题便是如何对项目进行恰当的版本管理.项目从最初使用svn到之后的Git One Track策略再到现在的GitFlo ...
- 【大型网站技术实践】初级篇:借助Nginx搭建反向代理服务器
一.反向代理:Web服务器的“经纪人” 1.1 反向代理初印象 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从 ...
- Spring之旅
Java使得以模块化构建复杂应用系统成为可能,它为Applet而来,但为组件化而留. Spring是一个开源的框架,最早由Rod Johnson创建.Spring是为了解决企业级应用开发的复杂性而创建 ...
- python+uwsgi导致redis无法长链接引起性能下降问题记录
今天在部署python代码到预生产环境时,web站老是出现redis链接未初始化,无法连接到服务的提示,比对了一下开发环境与测试环境代码,完全一致,然后就是查看各种日志,排查了半天也没有查明是什么原因 ...
- OpenGL超级宝典笔记----渲染管线
在OpenGL中任何事物都在3D空间中,但是屏幕和窗口是一个2D像素阵列,所以OpenGL的大部分工作都是关于如何把3D坐标转变为适应你屏幕的2D像素.3D坐标转为2D坐标的处理过程是由OpenGL的 ...
- 基于window7+caffe实现图像艺术风格转换style-transfer
这个是在去年微博里面非常流行的,在git_hub上的代码是https://github.com/fzliu/style-transfer 比如这是梵高的画 这是你自己的照片 然后你想生成这样 怎么实现 ...
- Spring获取ApplicationContext
在Spring+Struts+Hibernate中,有时需要使用到Spring上下文.项目启动时,会自动根据applicationContext配置文件初始化上下文,可以使用ApplicationCo ...
- Android中Fragment和ViewPager那点事儿(仿微信APP)
在之前的博文<Android中使用ViewPager实现屏幕页面切换和引导页效果实现>和<Android中Fragment的两种创建方式>以及<Android中Fragm ...
- Android 扫描条形码(Zxing插件)
使用Android Studio 一.在build.gradle(Module:app)添加代码 下载,调用插件 1 apply plugin: 'com.android.application' ...
- 编译器开发系列--Ocelot语言3.类型名称的消解
"类型名称的消解"即类型的消解.类型名称由TypeRef 对象表示,类型由Type 对象表示.类型名称的消解就是将TypeRef 对象转换为Type 对象. TypeResolve ...