iT邦幫忙

2024 iThome 鐵人賽

DAY 2
0
佛心分享-IT 人自學之術

靠近 ASP .NET Core 一點點系列 第 2

Day 2 .NET 的進化之旅:從框架到跨平台的華麗轉身

  • 分享至 

  • xImage
  •  

分享主軸
今天進入主題,先從 ASP .NET 與 ASP .NET Core 差異 與部署介紹開始分享。

1. ASP .NET 與 ASP .NET Core 的演進 :

  • .NET Framework 最後版本為 4.8.1,於2022年8月9日發布,之後微軟宣布不再推出新的 .NET Framework的版本
  • . Net Framework本身是windows的核心元件,只要Windows繼續存在,.NET Framework作為其專用的開發框架之一,將會長期存在下去
  • .NET Core 1.0 於2016年6月27日發布,故兩者是並行發展的,.NET Core 從 5 開始都變成 .NET 5、.NET 6、.NET 7、.NET 8…等等,Core字眼就拿掉了
  • 從 .NET 5 開始,不再更新 .NET Standard 的版本,但仍然支援 .NET Standard 2.1 及之前的版本
  • .NET 5 開始,不再支援 .NET Framework,只支援新的 .NET 平台 ( .NET Core 的延續 )
  • .NET Framework 支援的最高 C# 版本是 C# 7.3,而 .NET Core 3.0 開始支援 C# 8.0,.NET 8 支援 C# 12
  • . Net 6 開始,只要是雙數版本,就是長期支援,長期支援指的是 support 36 個月,單數版本為標準支援,標準支援是 18 個月 ⇒ 所謂微軟支援就是安全性更新,針對 .NET 底層若有漏洞,就會進行修補

2. .NET Framework 與 .NET Core 差異 :

.NET Framework

  • 僅能運行在 Windows作業系統上
  • 安裝方式與佈署是一次性安裝必要的組件和工具,沒有區分 SDK 與 Runtime ,.NET Framework 的安裝通常是一次性安裝所有必要的組件和工具,包括運行時和類庫。雖然 .NET Framework 的安裝包通常不明確區分 SDK 和 Runtime,但開發者仍然可以通過 Visual Studio 等工具單獨安裝開發工具。佈署類似 .NET Core 的 FDD 方式。

.NET Core

  • 可以跨平台,macOS、Windows、Linux
  • 安裝方式可以選擇安裝 SDK 或是 Runtime,其中一種
  • 可以下 命令 ( CLI ) 去操作,使用 dotnet ( app host )
  • 佈署分三種 : FDD、FDE、SCD
  • 開源程式碼
  • ASP .NET Core 的 CLR 稱為 CoreCLR
  • 本質上,算是一個主控台應用程式 (Console)

3. .NET Core 佈署介紹 :

  • FDD : .NET Core 2.2以前是預設,Framework 相依部署 ( 框架相依部署 ),必須先在目標電腦先安裝 .NET Runtime 才能執行應用程式,而此種部署方式實際上又分兩種 : FDD 與 FDE

  • FDE : Framework 相依可執行檔,此種部署,其結果會有 .exe 檔,.NET Core 2.2 後才開始支援,.NET 3.0 開始都是預設

  • SCD : 自封式部署,此種部署,其結果會有 .exe 檔,可以使用命令或是直接到專案檔修改 ( .csproj ),且必須搭配 RID 設定去進行發布

  • 補充 1 : SCD 發布出來的檔案大小是很大一包,所以此種發布方式不需要在目標環境上下載 .NET Core 所需的 Runtime 版本,因為發布出來都已經包含了

  • 補充 2 : SCD 發佈方式,若要在專案檔修改,直接在專案檔內多加如下設定
    <RuntimeIdentifier>win-x64 (這邊寫RID)</RuntimeIdentifier> </PropertyGroup>

4. 這邊舉例部署指令與結果 :

  • FDD :
    https://ithelp.ithome.com.tw/upload/images/20240916/20133954pR9dwhEFOS.png

結果為 :
https://ithelp.ithome.com.tw/upload/images/20240916/20133954yNuFRO2RQw.png

這時候要 run 起網站透過 app host 去執行,也就是 dotnet => dotnet xxx.dll

  • FDE :
    https://ithelp.ithome.com.tw/upload/images/20240916/20133954XHKFGIHNOv.png

結果為 :
https://ithelp.ithome.com.tw/upload/images/20240916/20133954bAT8W55XMG.png

這時候可以發現多一個.exe檔案,若要 run起網站可以 dotnet .exe 檔案或是 dotnet dll檔案,就可以執行起網站。

  • SCD :
    https://ithelp.ithome.com.tw/upload/images/20240916/201339549ryvxgykwy.png

結果為 :
https://ithelp.ithome.com.tw/upload/images/20240916/20133954qNGOYHwG85.png

簡單統整今日重點

  1. FDE 比 FDD 多一個執行檔案 ( .exe )
  2. FDD、FDE 方式,目標電腦上一定都要先裝好 .NET Core Runtime 的版本
  3. SCD 方式,其結果就是一大包,所以目標電腦上並不需要再下載 .NET Core Runtime 了
  4. dotnet publish -c Release 在 .NET Core 3.0 開始,是 FDE 發行方式,因為預設發佈出來會有個 .exe 檔案,但可以透過指令或是專案檔內修改 (這兩種都可以),使其變成 FDD,如下兩種方式可以設定
  • (1)透過指令 : dotnet publish -c Release -p:UseAppHost=false 。
  • (2)專案檔修改,如下程式碼所示
<PropertyGroup>
    <UseAppHost>false</UseAppHost>
</PropertyGroup>

今日結語

  1. 先了解 .NET 演進故事,可能會讓人覺得更有趣,至少我是這樣,會更加吸引我XDD
  2. 了解部署方式種類,對於在使用 ASP .NET Core 的部屬時會更知道什麼情境下需要使用哪種方式
  3. 了解 .NET Framework、.NET Core 差異,可以更讓自己對於兩者差異與為何專案選擇使用它的優缺點
    以上希望可以幫助到有疑惑的人 ~~ 大家一起加油!

上一篇
Day 1 為何參加鐵人賽?
下一篇
Day 3 愛恨糾葛:.NET Core SDK 與 Runtime 的複雜關係
系列文
靠近 ASP .NET Core 一點點27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言