上節中,我們初步的介紹了一下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.

這種基于屬性配置的路由可以配置Controller或者Action級別, uri會根據Http method然后被匹配到一個controller里具體的action上.
4.依賴注入
DI在.NET Core里面被提到了一個非常重要的位置,但到底依賴注入是什么? 為什么要用它? 控制反轉IOC(Iversion of Control),DI等概念到底該怎么理解?
下面的內容參考自:https://www.cnblogs.com/jesse2013/p/di-in-aspnetcore.html
首先是依賴,

其次是注入:

接下來是反轉:

最后是容器:

我們接下來看看在控制臺中對.NET Core DI的應用,在.NET Core中DI的核心分為兩個組件:IServiceCollection和 IServiceProvider,
- IServiceCollection 負責注冊
- IServiceProvider 負責提供實體
var serviceCollection = new ServiceCollection() .AddTransient<ILoginService, EFLoginService>() .AddSingleton<ILoginService, EFLoginService>() .AddScoped<ILoginService, EFLoginService>();
這三個方法都是將我們的實體注冊進去,只不過實體的生命周期不一樣,
- Transient: 每一次GetService都會創建一個新的實體
- Scoped: 在同一個Scope內只初始化一個實體 ,可以理解為( 每一個request級別只創建一個實體,同一個http request會在一個 scope內)
- Singleton :整個應用程式生命周期以內只創建一個實體
5.異步編程
在這里我想著重介紹一下 async 和 await 關鍵字
一下內容參考自微軟官網:https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/async/index


按照上面例子中的,當多個任務并行的時候,我們一般采用異步的方式來進行,但是如果個別任務是需要一定的先決條件的時候,我們就可以采用await 關鍵詞來進行修飾,
await 關鍵字提供了一種非阻塞方式來啟動任務,然后在此任務完成時繼續執行,
在煎雞蛋或培根時,此代碼不會阻塞, 不過,此代碼也不會啟動任何其他任務, 你還是會將面包放進烤面包機里,然后盯著烤面包機直到面包彈出, 但至少,你會回應任何想引起你注意的人, 在接受了多份訂單的一家餐館里,廚師可能會在做第一份早餐的同時開始制作另一份早餐,
--以上,.netCore 的基礎知識部分,就介紹 的差不多了,(雖然大部分內容都是在別的地方參考過來的,也算是給大家做一個整理吧)
接下來的,終于又可以繼續搭建的我們的技術框架了!有了DI,有了await ,async.看看我們的框架可以引入哪些新的內容吧?
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/12359.html
標籤:ASP.NET
