D-18 生命周期 ? request pipeline ? di lifecycle

网页程序的基础知识

昨天小光从K大那边学到了如何生成一个网页程序专案,并且了解了网页程序的类型,还有网页程序初始的资料夹结构和初始的两个档案的内容,然而在进入开发之前今天要先了解一些网页程序的基本知识。

本文同步放置於此

网页程序的基本知识

「既然是学习网页程序开发,还是要先从基础开始。」
一大早老K就跟小光这麽说,这时小光正坐到位子上面连电脑都还没打开,而大头依旧在需求文件後面埋头苦干,不同的是需求文件少了一半。
「前辈那有些甚麽基础知识需要知道的吗。」
小光听到老K的话之後用很认真的表情对老K这麽说。
「表情很好,通常的年轻人都只是学一学怎麽写程序,都不会想学这个基本功...」
这时大头抬起头来偷笑,因为他看到老K对着小光开始一连串的说教,不过没过多久他还是赶着回去处理自己的需求开发。
「好的,那我们来先学学两个东西,请求的流水线跟相依注入的生命周期。」
在说完一长串的说教後终於要开始进入正题。

request pipeline

首先要先介绍dotnetcore请求的流水线走的方式,关於这方面请大家先看一下下图。

MSDN的.Net Core Request Pipeline MSDN的.Net Core Request Pipeline

这是一个请求的流水线,由请求发动後经过RoutingMiddleware等等的处理後再进入到Endpoint处理後会开始回到response的部分。至於Endpoint请看下图。

MSDN的.Net Core Mvc Endpoint MSDN的.Net Core Mvc Endpoint

上图则是请求的流水线中Endpoint的部分,其中MVC以例子为例可以再分成Filter的处理以及Model ValiadtionModel Binding的过程後会进到Controler的Action的部分,其处理细节部分可以参考MVC的生命周期
因此在程序开发的部分可以依据需求把部分的逻辑放到Filter内,然後验证的处理後在到Action内处理商业逻辑。
所以关於请求的流水线到此先告一段落,至於内部细节到时会在後续章节在更进一步说明该阶段处理的过程。

di lifecycle

刚刚介绍到Controler的Action的部分,所以这里也先说明一下之後要介绍的相依性插入的重要观念di lifecycle,不过这边介绍的是dotnetcore原生的相依注入的工具的名词,之後介绍autofac时会介绍之间的对应。
这边相依注入的生命周期类别如下:

生命周期类别 说明
Transient 每一个元件的实体都是不同的,例如在不同的物件中注入的元件都是不同的
Scoped 同一个请求中的元件会是相同的,但是不同的请求则会是不同的元件
Singleton 整个网页站台中的实例只会有一个,就算是不同的请求所注入的实例也是一样的

会提到这个部分是要注意通常的类型都是使用Scoped的这个类型,但如果要注入的元件例如会需要维持一条连线的状况下会使用Singleton的类型,至於在是用Transient时要注意该元件上是否有状态的存在,但是使用Transient上会造成资源的浪费,所以设计上会使用Scoped并且注意不要有跟请求状态有关的变数存在上面来取代Transient

後记

今天老K跟小光介绍dotnet core的基本功,请求的流水线跟相依住注入的生命周期,希望能够让读者们对於网页程序开发的知识有一些认识。


<<:  DAY 15 『 Realm 新增、修改、删除 』Part3

>>:  Day 12 - 物品借用纪录系统 (3) 系统完成

强型闯入DenoLand[31] - MongoDB 安装教学

强型闯入DenoLand[31] - MongoDB 安装教学 本章会分为两个部分: MongoD...

课堂笔记 - 深度学习 Deep Learning (1)

前导介绍 说到深度学习, 首先需要了解什麽是类神经网路和它的操作方法。 类神经网路,顾名思义就是仿...

【D1】前言与规划

上次《Pyhon X 金融分析 X Azure》系列使用Azure去做简单的金融体验,这次就继续拓展...

Base64 转 ArrayBuffer 效率小记

主题描述 以下三个函数功能相同,都是把 base64 转换为 ArrayBuffer 测试看看哪个效...

[Day13] swift & kotlin 实作篇!(4) 图片资源

swift 首先我们来看看图片资源设定 撰写app的过程中 图片档案要非常小心 不要侵犯到别人的智慧...