ASP.NET Core (一):簡介

来源:http://www.cnblogs.com/ideck/archive/2016/07/08/asp_net_core_1.html
-Advertisement-
Play Games

下一篇:ASP.NET Core(二):入門 英文原版:Introduction to ASP.NET Core 關於ASP.NET Core ASP.NET Core 是一個全新的開源、跨平臺框架,可以用它來構建基於網路連接的現代雲應用程式,比如:Web 應用,IoT(Internet Of Th ...


下一篇:ASP.NET Core(二):入門 

 

英文原版:Introduction to ASP.NET Core

關於ASP.NET Core

ASP.NET Core 是一個全新的開源、跨平臺框架,可以用它來構建基於網路連接的現代雲應用程式,比如:Web 應用,IoT(Internet Of Things,物聯網)應用和移動後端等。ASP.NET Core可以運行在 .NET Core 或完整的 .NET Framework 之上,其架構為發佈到雲端或本地運行的應用提供了一個最佳的開發框架,由開銷很小的模塊化組件構成,這就保持了你構造解決方案的靈活性。你可以跨平臺地在Windows、Mac和Linux等設備上開發和運行你的 ASP.NET Core 應用。ASP.NET Core 的源代碼已經在 GitHub 上托管。

為什麼構建ASP.NET Core

第一個 ASP.NET 預覽版在15年前(2000年)就已經作為.NET Framework的一部分發佈。從那時起,有過成千上萬的開發者使用它來構建和運行強大的Web應用。這些年來,我們也對它添加和改進了很多功能。

ASP.NET Core具有大量的架構變動,這使得它顯得更加精細和模塊化。ASP.NET Core 不再依賴於 System.Web.dll 類型庫,取而代之的是一組細粒度、高度分解的 NuGet程式包。這使得你可以按需安裝NuGet程式包來優化你的應用。更小的錶面積可以讓你的應用具有嚴密的安全性,能夠降低維護成本,提高性能,同時在“按使用量付費”的模式中減少開銷。

使用 ASP.NET Core,你將獲得以下基礎改進:

a)     在統一的方案中構建Web UI 和 Web API

b)    集成現代客戶端開發框架和工作流

c)     以雲就緒環境為基礎的配置系統

d)    內置依賴註入

e)     全新、輕量級、模塊化的HTTP請求管道

f)      在IIS或在自托管進程中托管應用程式的能力。

g)    以.NET Core為基礎,支持並行應用版本控制。

h)    完全以 NuGet 程式包方式分發

i)      一組全新的工具,簡化現代Web 開發

j)      在Windows、Mac和Linux等設備上開發和運行 ASP.NET應用

k)     開放源代碼和社區聚焦

應用程式解剖

一個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伺服器(UseKestrel)和指定啟動類(UseStartup<Startup>())的方法。 上述示例使用的是 Kestrel Web 伺服器,但你可以指定其他類型的Web 伺服器。在下一節中將展示更多 UseStartup 相關的信息。WebHostBuilder 提供了大量的選項方法,包括指定宿主為 IIS 和 IIS Express 伺服器的 UseIISIntegration,指定內容根目錄的 UseContentRoot等。其中Build 和Run方法用於構建 IWebHost的實例,它將被用來掛載應用並開始監聽到來的HTTP請求。

啟動Startup

WebHostBuilder上的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)
    {
    }
}

 

a)     ConfigureServices  定義應用程式中用到的服務(請查看服務)(比如:ASP.NET MVC Core 框架,Entity Framework Core,Identity等等)

b)     Configure     定義請求處理管道中的中間件

c)      查看 應用程式啟動 以瞭解更多信息

服務 Service

服務是應用程式中可共用的組件,通過依賴註入可獲得服務實例。ASP.NET Core 內置了簡單的控制反轉容器(Ioc,Inversion Of Control),預設是支持構造器註入的,但是可以輕鬆地將它替換為你習慣的IoC容器。除了其鬆散偶爾的好處,DI(Dependency Injection,依賴註入)還能讓服務在整個應用程式中可用。例如,日誌記錄(Logging)就可以在你應用程式的任何地方可用。查看 依賴註入 以瞭解更多信息。

中間件 Middleware

在 ASP.NET Core中你將使用中間件來組織你的請求管道。ASP.NET Core 中間件在HttpContext中執行同步邏輯,然後按順序調用下一個中間件或者直接終止請求。常規情況下,通過Configure方法的IApplicationBuilder調用相應擴展方法UseXYZ就可以“Use”(使用)中間件。

ASP.NET Core 本身預製了一組中間件:

a)     靜態文件 Static Files

b)    路由 Routing

c)     認證 Authentication

你還可以創作自己的中間件

你可以在ASP.NET Core 環境中使用任何基於 OWIN的中間件。查看 .NET開放Web 介面(Open Web Interface for .NET,OWIN) 以瞭解更多信息

伺服器 Server

ASP.NET Core宿主模型不會直接監聽請求,它依靠HTTP 伺服器的實現來轉發請求到應用程式。轉發的請求被包裝成一組功能介面,然後組合成一個應用程式 HttpContext。ASP.NET Core 包含一個名為 Kestrel的托管跨平臺Web伺服器,通過它你可以在典型的web 伺服器產品(比如 IIS或nginx等)上運行應用程式。

內容根目錄 Content Root

內容根目錄指的是應用程式使用的所有文件的基礎路徑,比方說它的視圖和web內容。預設情況下內容根目錄與掛載應用程式的可執行文件的基礎目錄是相同的。通過 WebHostBuilder可以指定其替代目錄。

Web目錄 Web Root

應用程式的Web目錄就是你項目中存放css、js、圖像文件等等公共、靜態資源的目錄。靜態文件中間件預設情況下只對Web目錄及其子目錄下的文件起作用。預設的Web目錄是 <內容根目錄>/wwwroot,但是你可以通過 WebHostBuilder 將其指定為其他目錄。

配置 Configuration

ASP.NET Core使用一個新的配置模型來處理簡單的名/值對。新的配置模型並不依賴於 System.Configuration 和 Web.config,取而代之的是,它從已排序的配置提供器(Configuration Provider)集合拉取配置。內置的配置提供器支持多種文件格式(XML,JSON,INI),還支持環境變數,這樣就可以使用基於環境的配置了。你還可以編寫自定義配置提供器。

查看 配置 以瞭解更多信息。

環境 Environment

比如“開發環境”和“生產環境”,這些在 ASP.NET Core 中都是一流概念,並且可以通過環境變數設置。查看 在多重環境中工作(Working with Multiple Environments) 以瞭解更多信息。

使用ASP.NET Core MVC構建Web UI和Web API

a)     你可以創建遵循MVC模式的高度分解、可測試的Web應用程式。查看 MVC 和 測試 以瞭解更多信息

b)    你可以構建支持多種格式、完全支持內容協商的 HTTP 服務。查看 格式化響應數據 以瞭解更多信息

c)     Razor 提供了產出性語言來創建視圖

d)    Tag 幫助器(Tag Helpers)允許服務端代碼在Razor文件中參與創建和呈現 HTML元素

e)     通過自定義或內置的格式化器(JSON,XML),你可以創建完全支持內容協商的HTTP服務。

f)      模型綁定能夠自動將HTTP請求參數映射為操作方法參數

g)    模型驗證能夠自動執行客戶端和服務端驗證

客戶端開發 Client-side development

ASP.NET Core被設計來無縫集成大量客戶端框架,包括 AngularJS,KnockoutJS和Bootstrap。查看 客戶端開發 以瞭解更多信息。

 

 

下一篇:ASP.NET Core(二):入門


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

-Advertisement-
Play Games
更多相關文章
  • 原文: "Developing ASP.NET Core applications using dotnet watch" 作者: "Victor Hurdugaci" 翻譯: "謝煬(Kiler)" 校對: "劉怡(AlexLEWIS)" 、 "許登洋(Seay)" 介紹 是一個開發階段在源文件發 ...
  • 看大牛們的源碼,對於水平一般的人,還是略微有點難度的。我從我自身讀碼的親身體驗,寫下雜散片語,希望能和大家一同進步,也為了日後記憶上的備查。 先看的是brnMall的源碼結構,從哪看起呢? 首先推薦看的肯定是官方的剖析:BrnShop開源網上商城第二講:ASP.NET MVC框架 官方的這篇文章主要 ...
  • 一、前言 SqlSugar從去年到現在已經一年了,版本從1.0升到了現在的2.3 ,這是一個穩定版本 ,有數家公司已經項目上線,在這裡我將SqlSugar的功能重新整理成一篇新的貼子,希望大家喜歡。 公司團隊項目、產品已經完全拋棄EF,SqlSugar定位不是ORM,而是為了方便的讓你去寫Sql。 ...
  • 本文記錄了在Windows環境下安裝Visual Studio Code開發工具、.Net Core 1.0 SDK和開發一個簡單的Web-Demo網站的全過程。 一、安裝Visual Studio Code 安裝文件下載地址:VS Code,當前最新版本是1.3。 推薦安裝最新版,因為附帶Debu ...
  • 上一篇:ASP.NET Core(一):簡介 下一篇:(待續) 英文原版:Getting Started 1、 安裝 .NET Core 2、 創建 .NET Core 項目 在命令提示符視窗輸入命令: 3、 更新 project.json 文件,將 Kestrel HTTP 伺服器程式包作為依賴添 ...
  • 註意要點。 1.jsonhelp編寫時候添加的引用。System.Runtime.Serialization.Json; 2.實體類需聲明為public jsonhelp代碼: 實體類代碼 控制台應用程式測試代碼 在查找資料過程中參考了一下同學的博文 http://www.cnblogs.com/j ...
  • 網站的頁面大致分為兩類: 一、靜態頁面 二、動態頁面 所謂的靜態頁面與動態頁面,並不是依據頁面內容的動與靜來加以區分的,而是看伺服器對頁面的處理方式來判斷的。 通過瀏覽器訪問伺服器上的一個html頁面,IIS伺服器接收到來自瀏覽器的http請求,判斷請求的頁面類型,發現是html文件,IIS直接讀取 ...
  • 0. 目錄 C#6 新增特性目錄 1. 老版本的代碼 通常情況下,有些簡單的只讀屬性和方法只有一行代碼,但是我們也不得不按照繁瑣的語法去實現它。C#6帶了了一種和lambda語法高度一致的精簡語法來幫助我們簡化這些語法。先看看老版本的IL代碼(這裡我就不展開IL了,看下結構即可,都是普通的屬性和方法 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...