张文清 .Net西安社区 me@zhangwenqing.org ASP.NET Core应用生命周期指北 张文清 .Net西安社区 me@zhangwenqing.org.

Slides:



Advertisements
Similar presentations
7.1 内置对象概述及分类 JSP 视频教学课程. JSP2.2 目录 1. 内置对象简介 1. 内置对象简介 2. 内置对象分类 2. 内置对象分类 3. 内置对象按功能区分 3. 内置对象按功能区分 4. 内置对象作用范围 4. 内置对象作用范围.
Advertisements

面向对象与设计模式 RD 常见编程范式介绍  并行编程 - Process-orientedProcess-oriented  组件编程 - Component-basedComponent-based  事件驱动 - Service-oriented,Time-drivenService-orientedTime-driven.
環境游離輻射 ( 六 ) 輻射與核能發電. 媽!這是我上班的 地方-核電廠。 地方好寬闊喔! 聽說日本原子彈爆炸死好幾 萬人,阿榮啊!你在這裡上 班,安全嗎?
《小狗包弟 》之 从阅读到写作 学校:和风中学 年级:高一 参赛者:彭龙英. 预习检测一 思考:同学们读完作者与包弟 的故事后,说一说作者所表达的情 感是什么?
虹膜识别健康养老服务智能系统项目.
探究活动课:互联网+历史素材阅读与研讨 古代中国的选官制度 黄天庆  探究活动课:互联网+历史素材阅读与研讨 古代中国的选官制度 黄天庆 
職校、五專群科簡介.
“三生教育”专题 生命·生存·生活.
学生教育办介绍 2015年9月.
江苏省工程造价管理协会 工作报告 2015年4月21日 扬州.
说网络技术专业 江苏联合职业技术学院徐州财经分院 王 磊.
第十四周 (第4章第5、6、7節) 人事機關與考銓制度.
笃·行 进·取 创·新 规·范 『专业·科学·务实』 2012年软件学院迎新工作总结汇报 软件学院2012级新生辅导员 侯雪莹.
101年8月份 嘉義市道路交通安全聯席會報 酒駕行為與肇事現況分析 主講人:內政部警政署交通組科長張夢麟 1.
高校邦在线学习平台 学生学习手册 北京高校邦科技有限公司.
個人投資理財分析 財務狀況匯總表 銀行存款 共同基金 外幣基金 股票投資 保險價值 黃金投資 支出預算 房貸計算 不動產價值 資源變化資料庫
第九章日治時期的台灣(下).
寻觅节日诗情.
计算机学院计算机科学与技术系 中德联合软件技术研究所 李波
J2EE Struts 和Spring 的区别.
網頁技術簡介.
突然好想你们···· 11广告1班—黄丹丹.
设计模式可以帮助我们改善系统的设计,增强 系统的健壮性、可扩展性,为以后铺平道路。
Oracle数据库 Oracle 子程序.
103學年度第1階段 志願選填試探後輔導作為 成效檢討與精進建議
活动主题:佛山智造 中国骄傲 随着互联网、云计算、大数据以及移动互联网的快速发展,技术不仅仅是一种工具,正加速重构着品牌的新格局。
第六节 脑和脊髓的传导通路.
四川省卫生监督移动 执法终端介绍 发言人:陈成身 四川省卫生执法监督总队.
獎補助經預計支用報告 105年.
Ch03 VB.NET語法建立ASP.NET 網頁程式設計.
第ㄧ章 認識 VB 2008 與主控台應用程式 注意:本投影片僅供上課使用,非經同意,請勿散播或轉載。
.NET Framework 3.0 Windows WorkFlow Foundation 工作流设计
Microsoft .NET 第4組 十月15, 2002 B 陳東傑 B 蔣佳勳
软件设计模式与体系结构课程设计 周 宇 College of Information Science and Technology
Asp.net 基礎.
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
.NET 簡介.
.NET 簡介.
第16章 VB.NET物件導向與.NET Framework
SOA – Experiment 3: Web Services Composition Challenge
Ch01網際網路、HTML 、 Script 、 ASP.NET簡介
走进编程 程序的顺序结构(二).
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
電子簽核教育訓練.
課程名稱:_____________ 指導教授:_____________
华东理工大学 关于新校园卡功能启用的相关说明 2018年09月07日.
中国科学技术大学计算机系 陈香兰(0551- ) Spring 2009
Visual Basic.NET 程序设计语言课程内容
第11章 系统结构与包模型模型.
程序设计工具实习 Software Program Tool
SOA – Experiment 2: Query Classification Web Service
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
爱心志愿者服务系统 操作指引 设计:东莞市爱心志愿者协会 网络中心 胡连甲 技术支持电话与微信:
C语言程序设计 主讲教师:陆幼利.
$9 泛型基础.
实验四、TinyOS执行机制实验 一、实验目的 1、了解tinyos执行机制,实现程序异步处理的方法。
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
102學年度下學期 班親會 五年仁班 楊曉逸老師.
Chapter 18 使用GRASP的对象设计示例.
第二階段「校園徒步區建置」 執行成果報告.
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C++语言程序设计 C++语言程序设计 第九章 类的特殊成员 第十一组 C++语言程序设计.
Web前端开发 第17章:AngularJS 阮晓龙 /
----以《西北民族音乐学术资源数据库》为例 西安音乐学院 景 月 亲
PureMVC 孙晓申.
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
实验课程学习手册.
云控APP说明书 适用于云控平台配置.
云控APP说明书 适用于云控平台配置.
Presentation transcript:

张文清 .Net西安社区 me@zhangwenqing.org ASP.NET Core应用生命周期指北 张文清 .Net西安社区 me@zhangwenqing.org

道生一,一生二, 二生三,三生万物 《道德经》

我是谁,我在哪 一些预备知识,概念和划重点

概念和体系:.NET Framework, .NET Core, ASP.NET, ASP.NET Core 图片出自2016年.NET Standard介绍 https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introducing-net-standard/

Runtime, SDK, Package Runtime(运行时),.NET Core Runtime SDK,.NET Core SDK CoreCLR,包含JIT(Just In Time编译器),ILAsm(.NET IL中间语言编译程序),ILDasm( .NET IL中间语言反编译程序),TestHost(corehost.exe简单控制台执行器), mscorelib,一系 列原生类型和内部类型(包括.NET GC) CoreFX,System.Collections,System.IO,System.Xml等等其他组件 SDK,.NET Core SDK CLI,默认启动器,脚手架工具等 Roslyn,C#和VB.NET编译器和语言支持 SKD,MSBuild任务支持等其他VS必要组件 Fsc,F#语言支持 Package nuget (v3 json) ASP.NET Core所有的Assembly以nuget Package形式分发

1分钟Demo 创建并运行一个Hello .NET Group的 ASP.NET Core应用 观察结构和输出

启动 (Startup) 秩序建立开始

代码宏观角度看启动 Main()和IWebHostBuilder 固定的启动控制类Startup ConfigureServices() 应用程序的默认服务容器 依赖注入的入口 通常Helper方法命名为AddXXX Configure() 应用程序内容处理过程注册 通常Helper方法命名为UseXXX

依赖注入 (Dependency Injection) ASP.NET Core中的依赖称为Service 通过抽象接口来解耦实现 默认通过构造函数注入 提供内置Services https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency- injection?view=aspnetcore-2.1#framework-provided-services 提供三种Service生命周期:短暂(Transient,每次创建一个实例),作用域内( Scoped,每请求创建一个实例),单例(Singleton) 支持三方Service Container,例如Autofac 在ConfigureService中返回 IServiceProvider

5分钟Demo 在1分钟Demo上加入并调用一些Service, 调用部分内置Service,观察不同生命周期 的Service的使用情况

中间件 (Middleware) 过程管控

中间件(Middleware)的处理模型和设计理念

中间件(Middleware)的三种写法 app.Use( (context, next) => { next(); }); app.Map(“/endpoint”, (app) => { app.Run( (context) => { //TODO app.Run( (context)=> { /* TODO */ public class ConventionalMiddleware { private readonly RequestDelegate _next; public ConventionalMiddleware (RequestDelegate next) _next = next; } public async Task InvokeAsync (HttpContext context) //TODO: await _next(context); app.UseMiddleware<ConventionalMiddleware>(); public class FactoryActivatedMiddleware : IMiddleware { public async Task InvokeAsync (HttpContext context, RequestDelegate next) //TODO: await next(context); } // register service services.AddTransient<FactoryActivatedMiddle ware>(); // apply middleware app.UseMiddleware<FactoryActivatedMiddlewar e>();

5分钟Demo 实现不同方式的Middleware,观察顺序( Order)和管道工作方式

上下文(context) - 指引方向的北极星 Middleware中直接使用(参数传入) 通过注入依赖 IHttpContextAccessor 前提:services.AddHttpContextAccessor();

MVC生命周期

MVC全景图 Dependency Injection Model request Model binding Router Controller View (Razor) ViewComponent Format response response

5分钟Demo 实现一个简单的MVC应用,添加Model binding,输出view

退出 - 被忽略的落幕

安全退出(Graceful shutdown) Microsoft.AspNetCore.Hosting.IApplicationLifetime

免责声明 本篇所涉及均为个人观点 资料和数据均来自网络 感谢! 问题和讨论