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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...