ASP.NET Core 介紹

原文 https://docs.asp.net/en/latest/intro.htmlhtml

by Daniel Roth, Rick Anderson and Shaun Luttin前端

章節nginx

  • 什麼是 ASP.NET Core?
  • 爲何從新設計出一個 AsP.NET Core?
  • 應用解析
  • 啓動
  • 服務
  • 中間件

 

ASP.NET Core 是對 ASP.NET 的一次重大修改,基本是從新設計了。本篇向你介紹了ASP.NET Core 的一些新概念以及這些新的特性能對咱們編寫如今流行的WEB應用提供哪些幫助。git

什麼是 ASP.NET Core

ASP.NET Core 是一個開源、跨平臺用於開發如今流行的基於雲的網頁應用的 .NET 框架。爲了提供一個既能在雲端部署又能在本地運行的這樣牛逼的開發框架,咱們幾乎是從頭構建了這個框架。ASP.NET 5 是由模塊組件構成,可讓應用的資源開銷很小,而且讓咱們的解決方案保持靈活性。ASP.NET 5 能夠在 Windows、Mac和Linux這三個操做系統進行跨平臺開發和運行。ASP.NET 5 是徹底開源的,全部的源碼都在 GitHub上。github

爲何從新設計 ASP.NETCore

做爲 .NET Framework 的一部分,ASP.NET從發佈 的第一個預覽版到如今已經差很少15年了,在這期間,成千上萬的開發者用ASP.NET開發出了不少很是好的網頁應用,同時,咱們也改進和添加了不少功能到ASP.NET。web

ASP.NET Core在架構上有很是大的改變,這樣就能使框架變得很是簡潔和模塊化。ASP.NET Core 再也不依賴於 System.Web.dll 這個程序集,而是基於一系列更細粒度、更細分的 NuGet 包,這樣可讓你根據須要去優化你的應用,只包含一些你須要用到的 NuGet 包。The benefits of a smaller app surface area include tighter security, reduced servicing, improved performance, and decreased costs in a pay-for-what-you-use model.api

使用 ASP.NET Core 你將得到一下基本的改進:瀏覽器

  • 使用統一的模式構建 web UI 和 web APIs,
  • 一個集成的現代瀏覽器端框架和開發工做流,
  • 基於雲服務的配置系統
  • 自帶有依賴注入
  • 新的輕量型和比較現代的HTTP請求管線,
  • 能夠部署到IIS,也能夠把本身看成服務器來使用,
  • 基於 .NET Core 構建,支持真正的 side-by-side 應用版本控制,
  • Ship entiely as NuGet packages,
  • 簡化現代網頁開發的工具,
  • 跨平臺,能夠在 Windows,Mac,Linux 這三個平臺編譯和運行,
  • 公開源代碼而且的到社區關注。

 

應用解析

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方法使用遵循建造者模式的 WebHostBuilder 類來構建  web 應用宿主。Web宿主構造器有方法能夠用來指明使用哪一種WEB服務(好比 UserKestrel 方法),和從哪一個類啓動(經過UserStart方法)。在上面的例子中,咱們使用了Kestrel Web服務器,咱們也能夠指定使用其餘的Web服務器。在下面的章節中,咱們再談談 UserStartup 方法。WebHostBuilder 類提供了不少可選的方法,好比,UseIISIntegration 方法可讓咱們把咱們的web應用放到IIS 和 IIS Express 運行,UserContentRoot 方法能夠用來指定內容的根目錄。Build方法將構造一個 IWebHost類型的WEB應用服務器,Run方法開始啓動應用並偵聽HTTP請求。服務器

啓動

使用 WebHostBuilder類中的UserStartup方法來指定Web應用的啓動類。

public class Program
{
    public static void Main(string[] args)
    {
        var host = new WebHostBuilder()
            .UseKestrel()
            .UseStartup<Startup>()
            .Build();

        host.Run();
    }
}

尖括號中的 Startup 類就是咱們用來處理請求管線和用來配置程序中須要用到的服務。Startup 類必須是公共類,還要包含下邊的兩個方法:

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
    }

    public void Configure(IApplicationBuilder app)
    {
    }
}
  • ConfigureServices 方法定義了Web應用中須要用到的服務(詳情看下邊的「服務」章節)(好比說,ASP.NET MVC Core Framework,Entity Framework Core,Identify等等,都是咱們所說的服務)。
  • Configure 方法指明瞭在請求管線中須要用到的中間件
  • 更詳細的信心請看 啓動應用程序

服務

在應用中,服務就是一個組件,用來實現資源共享。服務經過依賴注入的方式加入到系統中。ASP.NET 5 包含了一個簡單的內置「控制反轉容器(IoC)」,默認支持夠構造注入。想要把這個默認的IoC容器替換成你喜歡的IoC容器也很是簡單。除了鬆散耦合的好處,DI(依賴注入)還能使服務貫穿你的應用,好比:日誌(Logging)在你整個Web應用的任何地方均可以使用,具體看「依賴注入」。

 

中間件

在ASP.NET Core 中,請求管道是由一個個中間件構成。在HTTP上下文中, 從邏輯的角度看,ASP.NET Core 中間件在Http上下文中是異步執行,而後在中間件序列中有選擇地調用下一個中間件或者直接終止HTTP請求返回瀏覽器。一般,咱們使用的中間件都依賴於NuGet包,統一在Startup類中的Configure方法中,經過IApplicationBuilder類的擴展方法來調用,擴展方法名一般寫成 UseXXX。

ASP.NET 5 已經內置了一大波中間件:

你也可建立屬於你本身的自定義中間件

你也能夠在 ASP.NET Core 中使用任何基於 OWIN 的中間件。詳情請看 Open Web Interface for .NET (OWIN) 介紹

服務器

ASP.NET Core 應用程序託管模型並無直接偵聽網絡請求,而是依靠HTTP服務器將HTTP請求專遞給他。專遞過來的HTTP請求被包裝成一個接口集合,在ASP.NET Core中,被封裝到 HtppContext這個類中。在ASP.NET Core 中,已經包含了一個用託管代碼寫的跨平臺的Web服務器叫Kestrel,固然,你也能夠將你的ASP.NET Core程序運行在IIS和nginx中。

內容根目錄

內容跟目錄就是咱們程序中用到的任何資源(好比,視圖和網頁內容)的根路徑。默認狀況下,內容根目錄就是咱們程序運行的根目錄,固然,你也能夠經過 WebHostBuilder 類指定另外的目錄做爲內容的根目錄。

網頁跟目錄

網頁根目錄就是在咱們的項目中,用來存放公共的靜態文件的一個文件夾,靜態文件就是咱們寫網頁常常要用到的CSS、JS和圖片等文件。默然狀況下,靜態文件中間件只處理網頁根目錄下的文件及子目錄下的文件,網頁根目錄在項目中的 wwwroot 文件,固然,一樣,你也可經過 WebHostBuilder 類指定另一個文件夾做爲網頁根目錄。

配置

ASP.NET Core 使用了新的配置模型來處理簡單的「名稱-值」數據。新的配置模型不在基於「System.Configuration」和 「web.config」文件,而是依賴於一組有序的配置提供器。ASP.NET Core內置的配置提供器支持多種格式的配置文件(XML,JSON,INI)和使用環境變量,使用環境變量,能夠使基於環境的配置得以實現。你也能夠根據須要,寫出自定義的配置提供器。

詳情請看 配置章節

環境

環境,好比說是生產環境仍是產品環境,在ASP.NET Core中,能夠經過環境變量來設置。詳情請看 在多種環境下工做

使用 ASP.NET Core MVC 來建立 Web UI 和 Web APIs

你能夠使用MVC模式來建立一個能夠分離和可測試的網頁應用,詳情請看 MVC測試

你能夠寫一個HTTP服務來支持多種返回格式和支持徹底的內容協商。詳情請看 格式化相應數據

Razor提供了一個產品級的語言來建立視圖

Tag Helpers 能夠用來在 Razor 文件中用服務器端端代碼來生成HTML元素。

You can creat HTTP Services with full suport for content negotiation using custom or built-in formatters (JSON,XML)。

模型綁定自動將HTTP請求中的數據映射到Action方法的參數。

模型驗證自動執行客戶端驗證和服務端驗證。

前端開發

ASP.NET Core 在設計上,無縫集成了多種前端框架,好比 AngularJS,KnockoutJS 和 Bootstrap,詳情請看 前端開發

下一步

相關文章
相關標籤/搜索