.Net vs .Net Core,我改如何選擇?看這一篇文章就夠了

来源:https://www.cnblogs.com/dalianmaodada/archive/2020/03/10/12454323.html
-Advertisement-
Play Games

前言 .Net目前支持構建伺服器端應用程式的兩種實現主要有兩種,.NET Framework和.NET Core。兩者共用許多相同的組件,並且您可以在兩者之間共用代碼。但是,兩者之間存在根本差異,在我們選擇使用哪種框架構建應用時,您的選擇取決於您要完成的工作,以下說明兩種框架的應用場景,希望能夠幫助 ...


前言

file

.Net目前支持構建伺服器端應用程式的兩種實現主要有兩種,.NET Framework和.NET Core。兩者共用許多相同的組件,並且您可以在兩者之間共用代碼。但是,兩者之間存在根本差異,在我們選擇使用哪種框架構建應用時,您的選擇取決於您要完成的工作,以下說明兩種框架的應用場景,希望能夠幫助您做出最正確的選擇。

在以下情況下,將.NET Core用於伺服器應用程式:

  • 您有跨平臺的需求。
  • 您正在針對微服務。
  • 您正在使用Docker容器。
  • 您需要高性能和可擴展的系統。
  • 每個應用程式需要並行的.NET版本。
  • 在以下情況下,將.NET Framework用於伺服器應用程式:

您的應用當前使用.NET Framework(建議擴展而不是遷移)。

  • 您的應用程式使用了.NET Core不可用的第三方.NET庫或NuGet軟體包。
  • 您的應用使用了.NET Core無法使用的.NET技術。
  • 您的應用使用的平臺不支持.NET Core。 Windows,macOS和Linux支持.NET Core。

何時選擇.NET Core

file

以下各節對前面所述選擇.NET Core的原因進行了更詳細的說明。

跨平臺需求

如果您的應用程式(Web /服務)需要在多個平臺(Windows,Linux和macOS)上運行,請使用.NET Core。

.NET Core支持將前面提到的操作系統作為您的開發工作站。 Visual Studio為Windows和macOS提供了集成開發環境(IDE)。您還可以使用Visual Studio Code,該代碼可在macOS,Linux和Windows上運行。 Visual Studio Code支持.NET Core,包括IntelliSense和調試。大多數第三方編輯器(例如Sublime,Emacs和VI)都可以使用.NET Core。這些第三方編輯器使用Omnisharp獲得編輯器IntelliSense。您也可以避免使用任何代碼編輯器,而直接使用適用於所有受支持平臺的.NET Core CLI。

微服務架構

微服務架構允許跨服務邊界混合使用多種技術。這種技術組合使.NET Core可以逐漸與可與其他微服務或服務一起使用的新微服務相容。例如,您可以混合使用.NET Framework,Java,Ruby或其他單片技術開發的微服務或服務。

有許多可用的基礎架構平臺。 Azure Service Fabric專為大型和複雜的微服務系統而設計。 Azure應用服務是無狀態微服務的理想選擇。如``容器''部分所述,基於Docker的微服務替代品適合任何類型的微服務方法。所有這些平臺都支持.NET Core,使其成為托管微服務的理想選擇。

有關微服務體繫結構的更多信息,請參見.NET微服務。容器化.NET應用程式的體繫結構。

容器

容器通常與微服務架構結合使用。容器還可以用於容器化遵循任何體繫結構模式的Web應用程式或服務。 .NET Framework可以在Windows容器上使用,但是.NET Core的模塊化和輕量級的特性使其成為容器的更好選擇。創建和部署容器時,.NET Core的映像大小比.NET Framework小得多。因為它是跨平臺的,所以您可以將伺服器應用程式部署到Linux Docker容器。

Docker容器可以托管在您自己的Linux或Windows基礎結構中,也可以托管在諸如Azure Kubernetes Service之類的雲服務中。 Azure Kubernetes Service可以在雲中管理,協調和擴展基於容器的應用程式。

對高性能和可擴展系統的需求

當您的系統需要最佳的性能和可伸縮性時,.NET Core和ASP.NET Core是您的最佳選擇。 Windows Server和Linux的高性能伺服器運行時使.NET成為TechEmpower基準測試中性能最高的Web框架。

性能和可伸縮性與可能正在運行數百個微服務的微服務體繫結構特別相關。使用ASP.NET Core,系統運行的伺服器/虛擬機(VM)數量少得多。減少的伺服器/虛擬機節省了基礎架構和托管成本。

每個應用程式級別併排的.NET版本的需求

要安裝依賴於不同版本.NET的應用程式,建議使用.NET Core。 .NET Core可在同一臺電腦上並行安裝不同版本的.NET Core運行時。這種並行安裝允許在同一伺服器上提供多個服務,每個服務都在其自己的.NET Core版本上。它還降低了風險,並節省了應用程式升級和IT運營的費用。

何時選擇.NET Framework

file

.NET Core為新的應用程式和應用程式模式提供了明顯的好處。但是,對於許多現有方案而言,.NET Framework仍然是自然的選擇,因此對於所有伺服器應用程式,.NET Core都不會取代.NET Framework。

當前.NET Framework應用程式

在大多數情況下,您不需要將現有應用程式遷移到.NET Core。相反,建議的方法是在擴展現有應用程式時使用.NET Core,例如在ASP.NET Core中編寫新的Web服務。

需要使用不適用於.NET Core的第三方.NET庫或NuGet軟體包

圖書館正在迅速擁抱.NET標準。 .NET Standard支持跨所有.NET實現(包括.NET Core)共用代碼。使用.NET Standard 2.0,這甚至更加容易:

API的錶面變得更大。

引入了.NET Framework相容模式。此相容模式允許.NET Standard / .NET Core項目引用.NET Framework庫。要瞭解有關相容模式的更多信息,請參見宣佈.NET Standard 2.0。
因此,僅在庫或NuGet軟體包使用.NET Standard / .NET Core中不可用的技術的情況下,才需要使用.NET Framework。

需要使用.NET Core不可用的.NET技術

.NET Core中不提供某些.NET Framework技術。其中一些可能在更高的.NET Core版本中可用。其他則不適用於.NET Core定位的新應用程式模式,並且可能永遠不可用。以下列表顯示了.NET Core中找不到的最常見技術:

ASP.NET Web窗體應用程式:

ASP.NET Web窗體僅在.NET Framework中可用。 ASP.NET Core不能用於ASP.NET Web窗體。沒有計劃將ASP.NET Web窗體引入.NET Core。

ASP.NET Web Pages應用程式:

ASP.NET Core中不包含ASP.NET Web Pages。

WCF服務實施。

即使有WCF-Client庫可以使用.NET Core中的WCF服務,WCF伺服器實現當前也僅在.NET Framework中可用。該方案不是當前.NET Core計劃的一部分,但正在考慮將來使用。

與工作流相關的服務:

Windows Workflow Foundation(WF),工作流服務(單個服務中的WCF + WF)和WCF數據服務(以前稱為“ ADO.NET數據服務”)僅在.NET Framework中可用。沒有計劃將WF / WCF + WF / WCF數據服務引入.NET Core。

需要使用不支持.NET Core的平臺

某些Microsoft或第三方平臺不支持.NET Core。某些Azure服務提供了尚無法在.NET Core上使用的SDK。這是一個過渡情況,因為所有Azure服務都使用.NET Core。同時,您始終可以使用等效的REST API代替客戶端SDK。

結語

以上總結了.Net與.Net Framework之間的差異和每項的最佳使用場景,希望能夠為剛上手.Net的朋友們答疑解惑。接下來我會陸續製作.Net與.Net Core相關基礎教程,並分享到個人博客,希望大家能夠關註支持,原創,喜歡的話記得幫忙點個贊。

file

本文由博客群發一文多發等運營工具平臺 OpenWrite 發佈


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 下麵講解常見 Navicat Premium中創建用戶與資料庫的命令。 #用root登錄資料庫 #創建庫 create database XXX;#創建用戶 create user 'XXX' identified by 'XXX';#給用戶賦許可權 grant all on XXX.* to 'XX ...
  • mysql5.X和mysql8.X的驅動類、jdbc連接地址、引用Jar包等都是不一樣的。 下麵對照表以mysql5.7/8.0.11為例: 類型 驅動程式(JAR) maven配置 驅動類(jdbc.driver) jbdc連接地址(jdbc.url) 備註 mysql5.7 mysql-conn ...
  • 配置僅限於跨不同網情況,網路互通情況方案和配置會更簡單一點 內網A:MySql數據轉換成Csv { "job": { "setting": { "speed": { "channel":1 } }, "content": [ { "reader": { "name": "mysqlreader", ...
  • 場景 打開Navicat-文件-新建連接-Oracle 註: 博客: https://blog.csdn.net/badao_liumang_qizhi 關註公眾號 霸道的程式猿 獲取編程相關電子書、教程推送與免費下載。 實現 輸入對應的連接名、主機名,埠預設1521,服務名預設ORCL,輸入用戶 ...
  • 視圖的概念 視圖是一張虛表,將查詢結果集保存起來,作為視圖使用。實際存在的表叫作基本表。 視圖的作用 安全性。grant授權用戶只操作視圖、只讀,可以保護基本表中的數據。 提高查詢性能。視圖只是基本表的一部分,查視圖比查全表快。尤其是多表查詢的時候,查視圖一張表比連接多張表查詢要快。 視圖的常用操作 ...
  • 場景 在伺服器上的SqlServer數據導出的.sql文件,需要在本地新建一個資料庫並將資料庫導入。 首先打開電腦上的SqlServerManagementStudio 註: 博客: https://blog.csdn.net/badao_liumang_qizhi 關註公眾號 霸道的程式猿 獲取編 ...
  • 1.分析所有表 select 'analyze table '||table_name||' compute statistics;' from user_tables; copy出來執行。。。。更新user_tables的num_rows 2. select * FROM user_tables ...
  • 事務的4個特性(ACID) 原子性 Atomicity。每個事務中的操作,要麼都成功,要麼都失敗 一致性 Consistency。事務執行前後,資料庫中的數據應該保持一致 隔離性 Isolation。事務之間應該是隔離的,事務之間互不影響、干擾 持久性 Durability。事務一旦提交,便會將修改 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...