1. 程式人生 > >ASP.NET Core 概述

ASP.NET Core 概述

ASP.NET Core 是一個跨平臺的高效能開源框架,用於生成基於雲且連線 Internet 的新式應用程式。使用 ASP.NET Core,您可以:

  • 建置 Web 應用程式和服務、IoT應用和移動後端。
  • 在 Windows、macOS 和 Linux 上使用喜愛的開發工具。
  • 部署到雲或本地。
  • 在 .NET Core 或 .NET Framework 上執行。

ASP.NET Core 的優點:

  • 生成 Web UI 和 Web API 的統一場景。
  • 針對可測試性進行構建。
  • Razor Pages 可以使基於頁面的編碼方式更簡單高效。
  • 能夠在 Windows、macOS 和 Linux 上進行開發和執行。
  • 開放原始碼和以社群為中心。
  • 整合新式客戶端和開發工作流。
  • 基於環境的雲就緒配置系統。
  • 內建依賴項注入。
  • 輕型的高效能模組化 HTTP 請求管道。
  • 能夠在 IIS、Nginx、Apache、Dockers 上進行託管或在自己的程序中進行自託管。
  • 定目標到 .NET Core 時,可以使用並行應用版本控制。
  • 簡化新式 Web 開發工具。

使用 ASP.NET Core MVC 生成 Web API 和 Web UI:

  • Model-View-Controller (MVC) 模式使 Web API 和 Web 應用可測試。
  • ASP.NET Core 2.0中新增的 Razor 頁面是基於頁面的程式設計模型,可簡化 Web UI 生成並提高工作效率。
  • Razor 標記提供了適用於 Razor 頁面和 MVC 檢視的高效語法。
  • 標記幫助程式使伺服器端程式碼可以在 Razor 檔案中參與建立和呈現 HTML 元素。
  • 內建的多資料格式和內容協商支援使 Web API 可訪問多種客戶端,包括瀏覽器和移動裝置。
  • 模型繫結自動將 HTTP 請求中的資料對映到操作方法引數。
  • 模型驗證自動執行客戶端和伺服器端驗證。

ASP.NET Core 2.x 可以面向 .NET Core 或 .NET Framework。面向 .NET Framework 的 ASP.NET Core 應用無法跨平臺,只能在 Windows 執行。ASP.NET Core 3.0 以及更高版本只能在 .NET Core 中執行。

面向 .NET Core 有以下幾個優勢,並且這些優勢會隨著每次釋出增加。與  .NET Framework 相比,.NET Core 的部分優勢包括:

  • 跨平臺。在 macOS、Linux 和 Windows 上執行。
  • 提高的效能
  • 並行版本控制
  • 新 API
  • 開源

比較 ASP.NET Core 與 ASP.NET 4.x

ASP.NET Core ASP.NET 4.x
針對 Windows、macOS 或 Linux 進行生成 針對 Windows 進行生成
Razor 頁面 是在 ASP.NET Core 2.x 及更高版本中建立 Web UI 時建議使用的方法。 另請參閱 MVCWeb API 和 SignalR 使用 Web 窗體SignalRMVCWeb APIWebHooks 或網頁
每個計算機多個版本 每個計算機一個版本
使用 C# 或 F# 通過 Visual Studio、Visual Studio for Mac 或 Visual Studio Code 進行開發 使用 C#、VB 或 F# 通過 Visual Studio 進行開發
比 ASP.NET 4.x 效能更高 良好的效能
選擇 .NET Framework 或 .NET Core 執行時 使用 .NET Framework 執行時

比較 .NET Core 和 .NET Framework:

以下情況應對伺服器應用程式使用 .NET Core:

  • 使用者和跨平臺需求。
  • 使用者正在面向微服務。
  • 使用者正在使用 Docker 容器。
  • 需要高效能和可擴充套件的系統。
  • 需按應用程式提供並行的 .NET 版本。

以下情況應對伺服器應用程式使用 .NET Framework:

  • 應用當前使用 .NET Framework (建議擴充套件而不是遷移)。
  • 應用使用不可用於 .Net Core 的第三方 .NET 庫或 NuGet 包。
  • 應用使用不可用於 .Net Core 的 .Net 技術。
  • 應用使用不支援 .Net Core 的平臺。

在ASP.NET Core之前,ASP.NET Framework應用程式由IIS載入。Web應用程式的入口點由InetMgr.exe建立並呼叫託管。以初始化過程中觸發HttpApplication.Application_Start()事件。開發人員第一次執行程式碼的機會是處理Application_StartGlobal.asax中的事件。

在ASP.NET Core中,Global.asax檔案不再可用,已被新的初始化過程替代。
ASP.NET Core 應用程式是在.NET Core 控制檯程式下呼叫特定的庫,這是ASP.NET Core應用程式開發的根本變化。所有的ASP.NET託管庫都是從Program開始執行,而不是由IIS託管。也就是說.NET工具鏈可以同時用於.NET Core控制檯應用程式和ASP.NET Core應用程式。

using System;
using Microsoft.AspNetCore.Hosting;

namespace aspnetcoreapp{   

public class Program
{       
    public static void Main(string[] args)
    {            
        var host = new WebHostBuilder()
            .UseKestrel() //指定宿主程式為Kestrel
            .UseStartup<Startup>()// 呼叫Startup.cs類下的Configure 和 ConfigureServices
            .Build();
         host.Run();
    }
}

以上是Program類中Main方法的示例程式碼,Main方法負責初始化Web主機,呼叫Startup和執行應用程式。主機將呼叫Startup類下面的ConfigureConfigureServices方法。

參考連結:

https://docs.microsoft.com/zh-cn/aspnet/core/index?view=aspnetcore-2.1

https://blog.csdn.net/sD7O95O/article/details/78126384