ASP.NET Core 介绍
原文:Introduction to ASP.NET Core
作者:Daniel Roth、Rick Anderson、Shaun Luttin
翻譯:江振宇(Kerry Jiang)
校對:許登洋(Seay)、魏美娟(初見)、姚阿勇(Mr.Yao)
ASP.NET Core 是對 ASP.NET 的一次意義重大的重構。本文介紹了 ASP.NET Core 中的一些新概念,并且解釋了它們如何幫助你開發現代的 Web 應用程序。
章節:
什么是 ASP.NET Core?
為什么構建 ASP.NET Core?
應用程序剖析
Startup
服務(Services)
中間件 (Middleware)
服務器(Servers)
內容根目錄(Content root)
Web根目錄(Web root)
配置(Configuration)
環境(Environments)
使用 ASP.NET Core MVC 構建 web UI 和 web APIs
客戶端開發
后續步驟
什么是 ASP.NET Core?
ASP.NET Core 是一個新的開源和跨平臺的框架,用于構建如 Web 應用、物聯網(IoT)應用和移動后端應用等連接到互聯網的基于云的現代應用程序。ASP.NET Core 應用可運行于?.NET Core?和完整的 .NET Framework 之上。 構建它的目的是為那些部署在云端或者內部運行(on-premises)的應用提供一個優化的開發框架。它由最小開銷的模塊化的組件構成,因此在構建你的解決方案的同時可以保持靈活性。你可以在 Windows、Mac 和 Linux 上跨平臺的開發和運行你的 ASP.NET Core 應用。 ASP.NET Core 開源在?GitHub?上。
為什么構建 ASP.NET Core?
ASP.NET 的首個預覽版作為 .NET Framework 的一部分發布于15年前。自那以后數百萬的開發者用它開發和運行著眾多非常棒的 Web 應用,而且在這么多年之間我們也為它增加和改進了很多的功能。
ASP.NET Core 有一些架構上的改變,這些改變會使它成為一個更為精簡并且模塊化的框架。ASP.NET Core 不再基于?System.Web.dll?。當前它基于一系列顆粒化的,并且良好構建的?NuGet?包。這一特點能夠讓你通過僅僅包含需要的 NuGet 包的方法來優化你的應用。一個更小的應用程序接口通過“只為你需要的功能付出”(pay-for-what-you-use)的模型獲得的好處包括更可靠的安全性、簡化服務、改進性能和減少成本。
通過 ASP.NET Core,你可以獲得的改進:
一個統一的方式用于構建 web UI 和 web APIs
集成?現代的客戶端開發框架?和開發流程
一個適用于云的,基于環境的?配置系統
內置的?依賴注入
新型的輕量級的、模塊化 HTTP 請求管道
運行于 IIS 或者自宿主(self-host)于你自己的進程的能力
基于支持真正的 side-by-side 應用程序版本化的?.NET Core?構建
完全以?NuGet?包的形式發布
新的用于簡化現代 web 開發的工具
可以在 Windows 、Mac 和 Linux 上構建和運行跨平臺的 ASP.NET 應用
開源并且重視社區
應用程序剖析
一個 ASP.NET Core 應用其實就是一個在其?Main?方法中創建一個 web 服務器的簡單控制臺應用程序:
using System;using Microsoft.AspNetCore.Hosting;namespace aspnetcoreapp{ ? ?public class Program{ ? ? ? ?public static void Main(string[] args) ? ? ? ?{ ? ? ? ? ? ?var host = new WebHostBuilder().UseKestrel().UseStartup<Startup>().Build();host.Run();}} }Main?調用遵循 builder 模式的?WebHostBuilder?,用于創建一個 web 應用程序宿主。這個 builder 有些用于定義 web 服務器 (如?UseKestrel)和 startup 類型(?UseStartup)的方法。在上面的示例中,web 服務器 Kestrel 被啟用,但是你也可以指定其它 web 服務器。我們將會在下一節展示更多關于?UseStartup?的內容。WebHostBuilder?提供了一些可選方法,其中包括寄宿在 IIS 和 IIS Express 中的?UseIISIntegration?和用于指定根內容目錄的?UseContentRoot。Build?和?Run?方法構建了用于宿主應用程序的?IWebHost?然后啟動它來監聽傳入的 HTTP 請求。
Startup
WebHostBuilder?的?UseStartup?方法為你的應用指定了?Startup?類。
public class Program{ ? ?public static void Main(string[] args) ? ?{ ? ? ? ?var host = new WebHostBuilder().UseKestrel().UseStartup<Startup>()//手工高亮.Build();host.Run();} }Startup?類是用來定義請求處理管道和配置應用需要的服務。?Startup?類必須是公開的(public)并且包含如下方法:
public class Startup{ ? ?public void ConfigureServices(IServiceCollection services) ? ?{} ? ?public void Configure(IApplicationBuilder app) ? ?{} }ConfigureServices?定義你的應用所使用的服務(在下面查看?服務(Services)?)(例如 ASP.NET MVC Core framework、Entity Framework Core、Identity 等等)
Configure?定義你的請求管道中的?中間件(middleware)
更多內容請參考:?Application Startup
服務(Services)
服務是應用中用于通用調用的組件。服務通過依賴注入獲取并使用。 ASP.NET Core 內置了一個簡單的控制反轉(IoC) 容器,它默認支持構造器注入,并且可以方便的替換成你自己選用的 IoC 容器。由于它的松耦合特性,依賴注入(DI) 使服務在整個應用中都可以使用。例如,Logging?在你整個應用中都可用。查看?Dependency Injection?獲取更多信息。
中間件(Middleware)
在 ASP.NET Core 中,你可以使用?Middleware?構建你的請求處理管道。 ASP.NET Core 中間件為一個?HttpContext?執行異步邏輯,然后按順序調用下一個中間件或者直接終止請求。一般來說你要使用一個中間件,只需要在?Configure?方法里調用?IApplicationBuilder?上一個對應的?UseXYZ?擴展方法。
ASP.NET Core 帶來了豐富的內置中間件:
靜態文件(Static files)
路由(Routing)
身份驗證(Authentication)
你也可以創建你自己的?自定義中間件。
你也可以在 ASP.NET Core 中使用任何基于?OWIN?的中間件。查看?OWIN?獲取更多信息。
服務器(Servers)
ASP.NET Core 托管模式并不直接監聽請求;而是依賴于一個 HTTP?server?實現來轉發請求到應用程序。這個被轉發的請求會以一組 feature 接口的形式被包裝,然后被應用程序組合到一個?HttpContext中去。 ASP.NET Core 包含了一個托管的跨平臺 web 服務器,被稱為?Kestrel,它往往會被運行在一個如?IIS?或者?nginx?的生產 web 服務器之后。
內容根目錄(Content root)
內容根目錄是應用程序所用到的所有內容的根路徑,例如它的 views 和 web 內容。內容根目錄默認與宿主應用的可執行程序的應用根目錄相同;一個替代的地址可以通過?WebHostBuilder?來設置。
Web根目錄(Web root)
你的應用的Web根目錄(Web root)是你項目中所有公共的、靜態的資源,如 css、js 和 圖片文件的目錄。靜態文件中間件將默認只發布 Web 根目錄(Web root)和其子目錄中的文件。 Web 根目錄(Web root)默認為?/wwwroot,但是你也可以通過?WebHostBuilder?來指定另外一個地址。
配置(Configuration)
ASP.NET Core 使用了一個新的配置模型用于處理簡單的鍵值對。新的配置模型并非基于System.Configuration?或者?web.config?;而是從一個有序的配置提供者集合拉取數據。內置的配置提供者支持多種不同的文件格式如(XML,JSON, INI)和用于支持基于環境的配置環境變量。你也可以實現你自己自定義的配置提供者。查看?Configuration?獲取更多信息。
環境(Environments)
環境,如 “Development” 和 “Production”,是 ASP.NET Core 中的第一級概念而且它可以設置成使用環境變量。查看?Working with Multiple Environments?獲取更多信息。
使用 ASP.NET Core MVC 構建 web UI 和 web APIs
你可以使用 Model-View-Controller(MVC)模式創建優秀的并且可測試的 web 應用程序。查看MVC?和?測試。
你可以構建支持多種格式并且完全支持內容協商的 HTTP 服務。 查看?Formatting
Razor?提供了一種高效的語言用于創建?Views
Tag Helpers?啟用服務器端的代碼參與到 - Razor 文件的創建和 HTML 元素渲染
你可以使用自定義或者內置的 formatters (JSON, XML)來構建完全支持內容協商的 HTTP 服務
Model Binding 模型綁定?自動的映射 HTTP 請求中的數據到 action 方法參數
Model Validation 模型驗證?自動的執行客戶端和服務器端驗證
客戶端開發
ASP.NET Core 在設計時已考慮到和各種客戶端框架(AngularJS,KnockoutJS?和?Bootstrap)的無縫集成。查看?Client-Side Development?獲取更多信息。
相關文章:
ASP.NET Core 1.0 入門——了解一個空項目
ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1)
.NET Core 1.0、ASP.NET Core 1.0和EF Core 1.0簡介
云服務器下ASP.NET Core 1.0環境搭建(包含mono與coreclr)
使用VS Code開發ASP.NET Core 應用程序
dotnet run是如何啟動asp.net core站點的
ASP.NET Core提供模塊化Middleware組件
“dotnet restore"和"dotnet run"都做了些什么?
探秘 dotnet run 如何運行 .NET Core 應用程序
.NET Portability Analyzer 已開源
ASP.NET Core的配置(1):讀取配置信息
ASP.NET Core的配置(2):配置模型詳解
.NET Core 1.0 RC2 歷險之旅
使用VS Code開發 調試.NET Core 應用程序
讓我們Core在一起:ASP.NET Core & .NET Core
.NET Core VS Code 環境配置
官方博客明確了 .NET Core RC2/RTM 時間表
.NET Core全新的配置管理[共9篇]
利用記事本創建一個ASP.NET Core RC2 MVC應用
微軟.NET 正式劈腿成功,橫跨所有平臺
.NET Core 1.0 CentOS7 嘗試
解讀發布:.NET Core RC2 and .NET Core SDK Preview 1
[.NET Core].NET Core R2安裝及示例教程
ASP.NET Core 開發-中間件(Middleware)
結合Jexus + Kestrel 部署 asp.net core 生產環境
通過Jexus 部署 dotnetcore版本MusicStore 示例程序
ASP.NET Core 中文文檔 第一章 入門
用 Visual Studio Code 在 macOS 上創建首個 ASP.NET Core 應用程序
用 Visual Studio 和 ASP.NET Core MVC 創建首個 Web API
用 Visual Studio 發布一個 Azure 云 Web 應用程序
ASP.NET Core MVC 與 Visual Studio 入門
第二章指南(4.2)添加 Controller
DotNet Core 介紹
asp.net core 中間件詳解及項目實戰
教你實踐ASP.NET Core Authorization(免看文檔教程)
asp.net core 使用 Redis 和 Protobuf 進行 Session 緩存
asp.net core 中間件詳解及項目實戰
第二章 指南(4.3)添加 View
dotnet core開發體驗之開始MVC
dotnet core 開發體驗之Routing
聊聊ASP.NET Core默認提供的這個跨平臺的服務器——KestrelServer
簡析.NET Core 以及與 .NET Framework的關系
.NET Core 使用Dapper 操作MySQL
使用 CommandLineApplication 類創建專業的控制臺程序
簡析 .NET Core 構成體系
.NET Core也可以使用MongoDB了
.NET Core & ASP.NET Core 1.0在Redhat峰會上正式發布
.NET Core:面向未來的開源跨平臺開發技術
微軟說它深愛著Linux,現在它用行動證明了
原文地址:http://www.cnblogs.com/dotNETCoreSG/p/aspnetcore-0-intro.html
.NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注
贊賞
人贊賞
總結
以上是生活随笔為你收集整理的ASP.NET Core 介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 移植.NET Core计划,整合各平台变
- 下一篇: ASP.NET Core 运行原理剖析1