為什麼在 Windows Server 上通過 .NET 在 .NET Core 上執行 ASP.NET Core
自從我聽說
ASP.NET Core並且我一直想知道如果您正在執行 Windows 伺服器,.NET Core為什麼要開發一個ASP.NET Core web application執行在上面.NET Core,比如?我可以理解,如果您正在為其他類似的東西開發跨平台,但如果您正在執行 Windows 伺服器,為什麼要開發該路線?.NET``Windows Server 2012``Ubuntu``.NET Core有什麼好處(如果有的話)?我覺得我在這裡錯過了什麼?
ASP.NET它是未來進行Web 開發和部署的理想方式嗎?您什麼時候想使用完整的框架而不是.NET框架來進行Web 開發?ASP.NET``.NET Core不是每個人都在為跨平台開發嗎?我一生都在為 Windows 伺服器開發,從來不需要跨平台做任何事情。我不認為我會使用 .NET 開發任何跨平台的東西——我可能會使用 .NET 以外的東西(如果我走這條路的話)。
我希望有人可以幫助澄清我的困惑?
如果您在 Windows 上執行,則在完整框架上執行 ASP.NET Core 效果很好,事實上,這是我為移植舊的 Web 窗體應用程序而選擇的方法。如果您不需要跨平台支持,我認為完整框架上的 ASP.NET Core 是一個不錯的選擇。
.NET Core Framework 的功能幾乎沒有完整框架那麼全,將遺留應用程序移植到它可能要困難得多。例如,它目前不支持圖像處理。
但是,以 .NET Core Framework 為目標的一大好處是,除了它是跨平台的這一事實之外,它的佔用空間比完整框架小得多,並且可以通過應用程序的文件副本進行部署。這意味著目標伺服器不需要在部署之前安裝 .Net 框架即可執行您的程式碼。這在您無法控制伺服器級別安裝的某些雲託管情況下會很有幫助,並且在部署到 IoT 設備等受限環境時會很有幫助。
也就是說,我懷疑會有很多 ASP.NET Core 應用程序被編寫來支持完整框架。在某些方面,這是一個美麗的配對。一方面,您獲得了超輕量級和快速的 ASP.NET Core Web 平台以及 Tag Helpers 和所有這些優點,另一方面,您仍然可以在 Windows 上訪問許多 .Net 開發人員都知道和喜愛的全功能框架.
ASP.NET 可以在 .NET Core或完整的 .NET Framework 上執行。.NET Framework僅在 Windows 上執行並使用 .NET Framework 的全部資源。
如果您不需要以下內容,您仍然可以使用完整的 .NET 框架:
.NET Core 與主機/作業系統無關
您可以在不同的作業系統和主機上執行您的應用程序:
- Linux、Windows、MAC
- IIS 控制台應用程序
可用於設備、雲和嵌入式/物聯網場景。
模組化
.NET Core 是一個模組化執行時和庫實現,其中包括 .NET Framework 的子集。
意味著,您可以通過 nuget 僅安裝所需的軟體包。
可移植性:
您可以將CoreCLR 與您的應用程序一起打包和部署,從而消除您的應用程序對已安裝的.NET 版本(例如Windows 上的.NET Framework)的依賴。您可以使用不同版本的 CoreCLR 並排託管多個應用程序,並單獨升級它們,而不是被迫同時升級所有應用程序。
減少佔地面積
通過分解 CoreFX 庫並允許單個應用程序僅提取他們需要的那些 CoreFX 部分(所謂的“付費播放”模型),使用 ASP.NET 建構的基於伺服器的應用程序可以最大限度地減少它們的依賴關係。
應用模型
.NET Core 不支持所有 .NET Framework 應用程序模型,部分原因是它們中的許多都是基於 Windows 技術建構的,例如 WPF(建構在 DirectX 之上)。.NET Core 和 .NET Framework 都支持控制台和 ASP.NET Core 應用模型。
蜜蜂
.NET Core 包含許多與 .NET Framework 相同但更少的 API,並且具有不同的因式分解(程序集名稱不同;關鍵情況下的類型形狀不同)。這些差異目前通常需要將源埠更改為 .NET Core。.NET Core 實現了 .NET 標準庫 API,隨著時間的推移,它將包含更多的 .NET Framework BCL API。
子系統
.NET Core 實現了 .NET Framework 中的子系統子集,目標是更簡單的實現和程式模型。例如,不支持程式碼訪問安全 (CAS),但支持反射。
更新檔/更新:
這反過來又降低了框架更新檔和更新影響這些應用程序的頻率,因為只有對應用程序利用的單個 CoreFX 部分所做的更改才會影響應用程序。
部署:
應用程序的較小部署規模是一個附帶好處,如果在給定伺服器上並排部署許多應用程序,則會產生更大的不同。可以包含在您的應用程序中,也可以在使用者或機器範圍內並行安裝。
開源:
.NET Core 平台是開源的,使用 MIT 和 Apache 2 許可證。文件在 CC-BY 下獲得許可。.NET Core 是一個 .NET Foundation 項目。.NET Core 是開源的,而 .NET Framework 的只讀子集是開源的。
