在dot net core中,我們不需要關心如何釋放這些服務, 因為系統會幫我們釋放掉。有三種服務的生命周期。
單實例服務, 通過add singleton方法來添加。在注冊時即創建服務, 在隨后的請求中都使用這一個服務。
短暫服務, 通過add transient方法來添加。是一種輕量級的服務,用於無狀態服務的操作。
作用域服務,一個新的請求會創建一個服務實例。使用add scoped方法來添加。
今天 陝西優就業小編給大家分享一篇相關面試題,希望對大家有用。
第1題:什么是ASP net core?
首先ASP net core不是 asp net的升級版本。它遵循了dot net的標准架構, 可以運行於多個操作系統上。它更快,更容易配置,更加模塊化,可擴展性更強。
第2題:asp dot core有哪些好的功能?
第一是依賴注入。
第二是日志系統架構。
第三是引入了一個跨平台的網絡服務器,kestrel。可以沒有iis, apache和nginx就可以單獨運行。
第四是可以使用命令行創建應用。
第五是使用APP settings json file來配置工程。
第六是使用start up來注冊服務。
第七是更好的支持異步編程。
第八是支持web socket和signal IR。
第九是對於跨網站的請求的預防和保護機制。
第3題:dot net core跟dot net比較有哪些更好的地方?
第一是跨平台,它可以運行在三大操作系統上面,windows, Linux和MAC。
第二是對架構本身安裝沒有依賴,因為所有的依賴都跟程序本身在一起。
第三是dot net core處理請求的效率更高,能夠處理更多的請求。
第四是dot net core有更多的安裝配置方法。
第4題:什么是meta packages?
Meta packages是指包含所有ASP dot net code依賴的一個包。叫做Microsoft.AspNetCore
第5題:don net core應用能夠跟dot net 4.x架構一起工作嗎?
可以。Dot net core應用可以跟標准的dot net 庫一起工作。
第6題:什么是dot net core的startup class?
Startup class是dot net core應用的入口。所有的dot net core應用必須有這個class 這個類用來配置應用。
這個類的調用是在program main函數里面進行配置的。類的名字可以自己定義。
第7題:Startup class的config service方法有什么作用?
在這個方法里我們可以添加一些service進入依賴注入容器。
第8題:startup class的configure方法有什么作用?
這個方法來定義整個應用如何響應HTTP請求。它有幾個比較重要的參數,application builder,Hosting environment, logo factory,在這里我們可以配置一些中間件用來處理路徑,驗證和session等等。
第9題:什么是中間件?
中間件在這里是指注入到應用中處理請求和響應的組件。
第10題:application builder的use和run方法有什么區別?
這兩個方法都在start up class的configure方法里面調用。都是用來向應用請求管道里面添加中間件的。Use方法可以調用下一個中間件的添加,而run不會。
第11題:dot net core 管道里面的map拓展有什么作用?
可以針對不同的路徑添加不同的中間件。
第12題:dot net core里面的路徑是如何處理的?
路徑處理是用來為進入的請求尋找處理函數的機制。所有的路徑在函數運行開始時進行注冊。
主要有兩種路徑處理方式,常規路徑處理和屬性路徑處理。常規路徑處理就是用MapRoute的方式設定調用路徑,屬性路徑處理是指在調用函數的上方設定一個路徑屬性。
第13題:如何在dot net core中激活session功能?
首先要添加session包. 其次要在config service方法里面添加session。然后又在configure方法里面調用usesession。
第14題:dot net core工程里面有多少個工程文件?
global, launch setting,app settings,bundle config,bower, package。
第15題:什么是dot net core里面的tag helper?
Tag helper用來在服務器端使用Razor視圖引擎創建html元素的。
第16題:如何使tag helper在元素這一層上失效?
使用嘆號。
第17題:什么是Razor頁面?
是dot net core中支持ASP網頁表格的一種開發模型。@page 作為頁面的起始標志。
第18題:如何在Razor頁面中實現數據模型綁定?
使用bindproperty屬性。
第19題:如何在controller中注入service?
在config services方法中配置這個service。
在controller的構造函數中,添加這個依賴注入。
---------------------------------------------------------------------------------------------------
第20題:描述一下依賴注入后的服務生命周期?
asp.net core主要提供了三種依賴注入的方式
其中AddTransient與AddSingleton比較好區別
AddTransient瞬時模式:每次都獲取一個新的實例
AddSingleton單例模式:每次都獲取同一個實例
而AddTransient與AddScoped的區別更不容易區別一點
首先這兩種方式每次請求得到的都不是同一個對象,從這點看會發現這兩個都一樣。
但是我們可以繼續分細一點,雖然不同的請求得到的結果不同,但是我們可以在同一次請求中去獲取多次實例測試。
- AddTransient注入方式獲取兩次實例
services.AddTransient<IUserBLL, UserBll>();
可以看到瞬時模式即使同一次請求中也是不同的對象
- AddScoped注入方式獲取兩次實例
services.AddScoped<IUserBLL, UserBll>();
可以發現AddScoped在同一次請求中,獲取多次對象得到的是同一個對象
小總結:
AddTransient瞬時模式:每次請求,都獲取一個新的實例。即使同一個請求獲取多次也會是不同的實例
AddScoped:每次請求,都獲取一個新的實例。同一個請求獲取多次會得到相同的實例
AddSingleton單例模式:每次都獲取同一個實例