欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

.netCore+Vue 搭建的简捷开发框架 (4)--NetCore 基础 -2

程序员文章站 2023-11-25 23:54:28
上节中,我们初步的介绍了一下NetCore的一些基础知识,为了控制篇幅(其实也是因为偷懒),我将NetCore 基础分为两部分来写。 0.WebAPI 项目的建立 1..NetCore 项目执行(加载)过程 2.中间件的执行过程 3.WebAPI 的路由 4.依赖注入 5.异步编程 上一节中,我把0 ......

上节中,我们初步的介绍了一下netcore的一些基础知识,为了控制篇幅(其实也是因为偷懒),我将netcore 基础分为两部分来写。

0.webapi 项目的建立

1..netcore 项目执行(加载)过程

2.中间件的执行过程

3.webapi 的路由

4.依赖注入

5.异步编程

上一节中,我把0,1,2 这三部分说完了。

这一节中我们继续来讲剩下的部分。

3.webapi 的路由

路由有两种方式: convention-based (按约定), attribute-based(基于路由属性配置的). 

其中convention-based (基于约定的) 主要用于mvc (返回view或者razor page那种的).

web api 推荐使用attribute-based. 

                          --以上内容引用自老张的博客

我们现在的框架是基于webapi 的,所以就着重说一下attribute-based. 

.netCore+Vue 搭建的简捷开发框架 (4)--NetCore 基础 -2

   这种基于属性配置的路由可以配置controller或者action级别, uri会根据http method然后被匹配到一个controller里具体的action上.

4.依赖注入

di在.net core里面被提到了一个非常重要的位置。但到底依赖注入是什么? 为什么要用它? 控制反转ioc(iversion of control),di等概念到底该怎么理解?

下面的内容引用自:

首先是依赖,

.netCore+Vue 搭建的简捷开发框架 (4)--NetCore 基础 -2

 

 

其次是注入:

.netCore+Vue 搭建的简捷开发框架 (4)--NetCore 基础 -2

 

接下来是反转:

 .netCore+Vue 搭建的简捷开发框架 (4)--NetCore 基础 -2

 

最后是容器:

 .netCore+Vue 搭建的简捷开发框架 (4)--NetCore 基础 -2

 

 

我们接下来看看在控制台中对.net core di的应用。在.net core中di的核心分为两个组件:iservicecollection和 iserviceprovider。
  • iservicecollection 负责注册
  • iserviceprovider 负责提供实例
通过默认的 servicecollection(在microsoft.extensions.dependencyinjection命名空间下)有三个方法:
var servicecollection = new servicecollection()
  .addtransient<iloginservice, efloginservice>()
  .addsingleton<iloginservice, efloginservice>()
  .addscoped<iloginservice, efloginservice>();

这三个方法都是将我们的实例注册进去,只不过实例的生命周期不一样。

  • transient: 每一次getservice都会创建一个新的实例
  • scoped:  在同一个scope内只初始化一个实例 ,可以理解为( 每一个request级别只创建一个实例,同一个http request会在一个 scope内)
  • singleton :整个应用程序生命周期以内只创建一个实例 
如果在mvc中用过autofac的instanceperrequest的同学就知道,有一些对象在一个请求跨越多个action或者多个service、repository的时候,比如最常用的dbcontext它可以是一个实例。即能减少实例初始化的消耗,还能实现跨service事务的功能。(注:在asp.net core中所有用到ef的service 都需要注册成scoped )
 
而实现这种功能的方法就是在整个reqeust请求的生命周期以内共用了一个scope。
 
具体的应用,我会在框架搭建的时候,为大家举例说明。

5.异步编程

在这里我想着重介绍一下 async 和 await 关键字

一下内容引用自微软官网:

.netCore+Vue 搭建的简捷开发框架 (4)--NetCore 基础 -2

 

 .netCore+Vue 搭建的简捷开发框架 (4)--NetCore 基础 -2

 

 按照上面例子中的,当多个任务并行的时候,我们一般采用异步的方式来进行,但是如果个别任务是需要一定的先决条件的时候,我们就可以采用await 关键词来进行修饰,

await 关键字提供了一种非阻塞方式来启动任务,然后在此任务完成时继续执行。

在煎鸡蛋或培根时,此代码不会阻塞。 不过,此代码也不会启动任何其他任务。 你还是会将面包放进烤面包机里,然后盯着烤面包机直到面包弹出。 但至少,你会回应任何想引起你注意的人。 在接受了多份订单的一家餐馆里,厨师可能会在做第一份早餐的同时开始制作另一份早餐。

 

--以上,.netcore 的基础知识部分,就介绍 的差不多了。(虽然大部分内容都是在别的地方引用过来的。也算是给大家做一个整理吧)

接下来的,终于又可以继续搭建的我们的技术框架了!有了di,有了await ,async.看看我们的框架可以引入哪些新的内容吧?