什麼是Asp.net Core?和 .net core有什麼區別?

風靈使發表於2019-01-30

什麼是Asp.Net core

我相信很多C# Developer已經對於.net core不算陌生了,就算沒有正式使用相信也應該有所瞭解。微軟在推出來.net core的同時為了方便一些原有的專案可以方便遷移,同時推出了Asp.net core。那麼.net coreAsp.net core是不是同一個東西呢?如果不是又有什麼區別呢?

下面我們分別說明一下,首先Asp.net core.net core肯定不是同一個東西(廢話,如果是同一個東西還寫這麼多幹啥!)。

Asp.net core其實就是仍然基於.net Full Framework(最低要求Framework 4.6.2)的專案, 但同時保留了.net core一些新的設定理念,比如Asp.net core預設使用Kestrel作為Http請求的監聽器,而不是使用原來龐大的Https.sysKestrel不僅僅是微軟下一代的跨平臺Http請求監聽器,同時還提供了比Https.sys更輕量級以及更快速的Http請求處理。另除此之外,Asp.net core與原來的Web設計另一個最大的區別在於Asp.net core(及.net core)完全拋棄了原來的使用管道模式來接收以及處理HttpRequest。在Asp.net core中允許處理中介軟體(Middleware)來對所有的HttpRequest來進行請求,當請求被接收到時,Asp.net core會呼叫註冊的中介軟體(按照註冊的順序)對HttpRequest進行處理。這樣做相比與原來使用HttpApplication的管道方式而言,其優勢在於完全由開發人員決定HttpRequest需要執行怎麼樣的處理,沒有多餘的其他步驟。而原來的方式既使開發人員不希望對一個HttpRequest進行任何處理,但HttpApplication仍然會按照管道的設定依次建立HttpModel -> 啟用HttpHandler -> 處理Session等。據.net core團隊給出來的效能測試資料來看,Asp.net core(.net core)相比與原來的Web(.net framework 4.6)程式效能提升了2300%.

.net core其實就是保留了上面所說的優勢的同時支援跨平臺執行。.net core的系統是可以真正執行在除Windows以外的其他平臺的。輕量級、跨平臺、模組化是.net core整體的設計理念,同時也是微軟產品理念轉變的一個體現。.net core雖然有千般好,但是我們當前仍然沒有直接使用它,因為它現在有一個致使的“缺陷”那就是生態環境,由於.net core的API已經完全重寫,雖然當前已經提供了.net farework 90%以上的API,但是仍然會造成一些開發上的不便,當然這還不是最大的問題,最大的問題在於一些第三方Nuget包仍然不支援.net core。這樣就會造成一些專案無法直接遷移或是遷移成本太高的問題。

如何建立一個Asp.net core的專案

說了這麼多,我們來看一下在建立專案時Asp.net core.net core有什麼不同吧,我們以Vistual studio 2017上建立專案為例,首先開啟VS2017後點選建立專案-> Asp.net core web應用,這時會彈出模版選擇的視窗。
技術分享圖片
在這個選擇視窗中我們可以看到在左上角的那個下拉選單中可以選擇.net framework以及.net core。當我們選擇.net framewrok時建立出來的專案工程即為asp.net core。專案建立成功後可以在專案的屬性中看到使用的Framework版本是4.6.2。但是專案檔案的組織結構已經和.net core的專案結構一樣了。

Asp.net core專案的"坑"

近期在對新的專案進行效能測試時發現系統的記憶體佔用似乎只能使用到1.5G。經過多次測試以及程式碼檢查終於發現新建立出來的Asp.net core的專案預設的目標平臺是X86而不是AnyCPU。當嘗試在VS中新目標平臺改為AnyCPU時發現專案不能執行,丟擲異常"無法載入 DLL“libuv”: 找不到指定的模組。 (異常來自 HRESULT:0x8007007E)。",無奈只能將專案的目標平臺改為X64,然後發現在開發環境已經一切正常,但是當將程式碼部署到Azure App Service上時系統仍然不能訪問,異常和上面的相同。最後檢查了專案的工程檔案(*.proj)然後發現雖然PlatformTarget一項中已經改為X64,但是在PlatformTarget的屬性中Platform仍然是AnyCPU,手動修改工程檔案將AnyCPU改為X64後一切正常
技術分享圖片

相關文章