上節中,我們初步的介紹了一下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.
這種基於屬性配置的路由可以配置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
首先是依賴,
其次是註入:
接下來是反轉:
最後是容器:
var serviceCollection = new ServiceCollection() .AddTransient<ILoginService, EFLoginService>() .AddSingleton<ILoginService, EFLoginService>() .AddScoped<ILoginService, EFLoginService>();
這三個方法都是將我們的實例註冊進去,只不過實例的生命周期不一樣。
在這裡我想著重介紹一下 async
和 await
關鍵字
一下內容引用自微軟官網:https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/async/index
按照上面例子中的,當多個任務並行的時候,我們一般採用非同步的方式來進行,但是如果個別任務是需要一定的先決條件的時候,我們就可以採用await 關鍵詞來進行修飾,
await
關鍵字提供了一種非阻塞方式來啟動任務,然後在此任務完成時繼續執行。
在煎雞蛋或培根時,此代碼不會阻塞。 不過,此代碼也不會啟動任何其他任務。 你還是會將麵包放進烤麵包機里,然後盯著烤麵包機直到麵包彈出。 但至少,你會回應任何想引起你註意的人。 在接受了多份訂單的一家餐館里,廚師可能會在做第一份早餐的同時開始製作另一份早餐。
--以上,.netCore 的基礎知識部分,就介紹 的差不多了。(雖然大部分內容都是在別的地方引用過來的。也算是給大家做一個整理吧)
接下來的,終於又可以繼續搭建的我們的技術框架了!有了DI,有了await ,async.看看我們的框架可以引入哪些新的內容吧?