ASP.NET Core - 開篇

   由來

  ASP.NET Core 是一個跨平臺的高性能開源框架,ASP.NET Core第一次出如今咱們眼前是以 ASP.NET vNext 命名的,而後又從新命名爲ASP.NET 5,爲了代表它並非 ASP.NET 的簡單迭代升級,最終命名爲 ASP.NET Core。這是一個從新設計的Web開源框架,它最重要的特性是再也不依賴IIS(依然能夠部署在IIS上),支持跨平臺,能夠在任何平臺上部署,這要得益於KestrelServer。git

  ASP.NET Core的性能和ASP.NET有着本質上的區別,由於大部分的ASP.NET被傳統的System.Web庫所限制,從新設計後的ASP.NET Core具備出色的性能和內存低佔用,它的設計更符合現代化的開發思想(模塊化),這些設計思想可使ASP.NET Core整個應用程序更容易開發和維護。github

  ASP.NET Core本質上就是一個控制檯程序,可是又跟Framework的控制檯程序不一樣,由於它在啓動的過程當中註冊了一系列服務,並且構建了一系列的中間件和MVC的路由造成管道監聽Http請求和處理。windows

  

   優勢

  ASP.NET Core 具備以下優勢:api

  • 生成 Web UI 和 Web API 的統一場景。
  • 針對可測試性進行構建。
  • Razor Pages 可使基於頁面的編碼方式更簡單高效。
  • 可以在 Windows、macOS 和 Linux 上進行開發和運行。
  • 內置依賴項注入。
  • 輕型的高性能模塊化 HTTP 請求管道。
  • 可以在 IIS、Nginx、Apache、Docker 上進行託管或在本身的進程中進行自託管。

 

  .NET生態圈

  咱們能夠看到當前的.NET生態圈以下:服務器

  爲何會有.NET Standard 這個東西?從上面的圖來看,.NET主要分爲三個部分: .NET FrameWork, .NET Core, Xamarin,目前要掌握這三部分的.NET,就意味着須要掌握三種不一樣的各自的基礎類庫用來寫出在三種平臺上運行的代碼。這就是 .NET Standard 出現的原因,以及它要處在的位置,這意味着開發者們只須要掌握以 .NET Standard 做爲目標平臺的基礎類庫,就能夠在全部 .NET 平臺上寫出可運行的程序。框架

  咱們須要 .NET Standard 有兩個理由:ide

  1. 對一致性的動力。 咱們想達成一個共識,全部 .NET 平臺都必須實現一組必需的 API 才能夠得到進入 .NET 庫生態系統的權限。
  2. 優秀的跨平臺工具的基礎。 咱們但願一個簡化的工具體驗,你只須要選擇一個版本號來指定全部 .NET 平臺的通用部分。

  版本差別

  在通過了1.x的沉澱後,2.x版本趨向於風格上的穩定,有興趣知道各個版本的一些特性和變化,能夠參考ASPNET.Core各個版本差別以及新特性 ,有興趣的還能夠關注3.x的預覽版。模塊化

 

  環境

  相似於ASP.NET依賴於Framework,ASP.NET Core 同樣須要本身的Runtime和SDK,在Core2.x以後,須要下載VS2017纔可進行開發微服務

 

  WebAPI

  在ASP.NET Core體系中,再也不有獨立的WebAPI程序集,這個已經整合到MVC中工具

  

  咱們經過[ApiController]標籤以及[Route("api/xx")]路由標誌這是一個ApiController,這裏須要注意的是官方推薦自定義的API基類最好繼承ControllerBase,而不是直接繼承Controller,Controller主要是給MVC用的。

 

  MVC

  ASP.NET Core MVC 框架是輕量級、開源、高度可測試的框架,並針對 ASP.NET Core 進行了優化。它提供一種基於開發模式的實現方式,用於生成可完全分開管理事務的動態網站。 它提供對標記的徹底控制,支持 TDD 友好開發並使用最新的 Web 標準。

  MVC中加了些許新概念(如TagHelper,ViewComponents等),在實際開發過程當中也和ASP.NET MVC有了較大的區別,後面在實際開發過程當中講更多講解實際的應用。

 

  重要對象和概念

   在咱們開始進入ASP.NET Core體系以前,咱們先了解在ASP.NET Core體系中重要的幾個對象和概念,後面咱們會陸續碰到再仔細分解。

    HttpContext:請求上下文,對應Http請求的整個生命週期

  IHostingEnvironment:應用程序的運行的宿主環境配置信息

  ILogger:日誌接口

  IConfiguration: 用於應用程序的配置

  IServiceCollection:Aspnet Core原生的依賴注入容器,負責服務註冊

  IServiceProvider:負責解析註冊的實例

  IApplicationBuilder:用於構建請求管道

  Middleware:中間件,管道的組成者

  WebHost:應用宿主

 

  .NET Core 或 .NET Framework的選擇

  在如下狀況,對服務器應用程序使用 .NET Core:

  • 用戶有跨平臺需求。
  • 用戶正在面向微服務。
  • 用戶正在使用 Docker 容器。
  • 須要高性能和可擴展的系統。
  • 需按應用程序提供並行的 .NET 版本。

  在如下狀況,對服務器應用程序使用 .NET Framework :

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

 

  在觀望了1.x版本後,以及在2.x的一個實際應用經驗中,秉着學習交流的想法,將我的的一些經驗寫下來,後續的文章將會把ASP.NET Core 中一些核心模塊的源碼進行解讀(ASP.NET Core 的源代碼已經所有託管在 GitHub 上)以及分享一些實際設計和應用經驗,籍此機會和你們交流些許學習心得,但願你們一塊兒進步。

  本系列文章更多偏向於原理的解讀和實際的應用,若是須要入門的幫助,建議從微軟的入門教程 開始進行學習。

相關文章
相關標籤/搜索