ASP.NET CORE 簡介
ASP.NET Core 是一個跨平臺的高性能開源框架,用于生成啟用云且連接 Internet 的新式應(yīng)用。 使用 ASP.NET Core,您可以:
- 生成 Web 應(yīng)用和服務(wù)、物聯(lián)網(wǎng) (IoT) 應(yīng)用和移動后端。
- 在 Windows、macOS 和 Linux 上使用喜愛的開發(fā)工具。
- 部署到云或本地。
- 在 .NET Core 上運行。
為何選擇 ASP.NET Core?
ASP.NET Core 具有如下優(yōu)點:
- 生成 Web UI 和 Web API 的統(tǒng)一場景。
- 針對可測試性進行構(gòu)建。
- Razor Pages 可以使基于頁面的編碼方式更簡單高效。
- Blazor 允許你在瀏覽器中使用 C# 和 JavaScript。 共享全部使用 .NET 編寫的服務(wù)器端和客戶端應(yīng)用邏輯。
- 能夠在 Windows、macOS 和 Linux 上進行開發(fā)和運行。
- 開放源代碼和以社區(qū)為中心。
- 集成新式客戶端框架和開發(fā)工作流。
- 支持使用 gRPC 托管遠程過程調(diào)用 (RPC)。
- 基于環(huán)境的云就緒配置系統(tǒng)。
- 內(nèi)置依賴項注入。
- 輕型的高性能模塊化 HTTP 請求管道。
- 能夠托管于以下各項:
- Kestrel
- IIS HTTP.sys
- Nginx
- Apache
- Docker
- 并行版本控制。
- 簡化新式 Web 開發(fā)的工具。
使用 ASP.NET Core MVC 生成 Web API 和 Web UI
- ASP.NET Core MVC 提供生成 Web API 和 Web 應(yīng)用所需的功能:
- Model-View-Controller (MVC) 模式 使 Web API 和 Web 應(yīng)用可測試。
- Razor Pages 是基于頁面的編程模型,它讓 Web UI 的生成更加簡單高效。
- Razor 標記提供了適用于 Razor Pages 和 MVC 視圖的高效語法。
- 標記幫助程序使服務(wù)器端代碼可以在 Razor 文件中參與創(chuàng)建和呈現(xiàn) HTML 元素。
- 內(nèi)置的多數(shù)據(jù)格式和內(nèi)容協(xié)商支持使 Web API 可訪問多種客戶端,包括瀏覽器和移動設(shè)備。
- 模型綁定自動將 HTTP 請求中的數(shù)據(jù)映射到操作方法參數(shù)。
- 模型驗證自動執(zhí)行客戶端和服務(wù)器端驗證。
客戶端開發(fā)
ASP.NET Core 與常用客戶端框架和庫(包括 Blazor、Angular、React 和 Bootstrap)無縫集成。 有關(guān)詳細信息,請參閱 ASP.NET Core Blazor 簡介 和“客戶端開發(fā)”下的相關(guān)主題。
ASP.NET Core 目標框架
與 .NET Framework 相比,.NET Core 的部分優(yōu)勢包括:
- 跨平臺。 在 Windows、macOS 和 Linux 上運行。
- 性能更強
- 并行版本控制
- 新 API
- 開源
ASP.NET CORE MVC
ASP.NET CORE 是一個使用 HTML、CSS、JavaScript 和服務(wù)器腳本創(chuàng)建網(wǎng)頁和網(wǎng)站的開發(fā)框架。
ASP.NET CORE 支持三種不同的開發(fā)模式: Web Pages(Web 頁面)、MVC(Model View Controller 模型-視圖-控制器)、Web Forms(Web 窗體)。
MVC 編程模式
MVC 是三種 ASP.NET CORE 編程模式中的一種。
MVC 是一種使用 MVC(Model View Controller 模型-視圖-控制器)設(shè)計創(chuàng)建 Web 應(yīng)用程序的模式:
Model(模型)表示應(yīng)用程序核心(比如數(shù)據(jù)庫記錄列表)。 View(視圖)顯示數(shù)據(jù)(數(shù)據(jù)庫記錄)。 Controller(控制器)處理輸入(寫入數(shù)據(jù)庫記錄)。 MVC 模式同時提供了對 HTML、CSS 和 JavaScript 的完全控制。
|
|
| MVC 模式定義 Web 應(yīng)用程序 |
| 帶有三個邏輯層: |
| 業(yè)務(wù)層(模型邏輯) |
| 顯示層(視圖邏輯) |
| 輸入控制(控制器邏輯) |
|
Model是應(yīng)用程序中用于處理應(yīng)用程序數(shù)據(jù)邏輯的部分。 通常模型對象負責(zé)在數(shù)據(jù)庫中存取數(shù)據(jù)。
View是應(yīng)用程序中處理數(shù)據(jù)顯示的部分。 通常視圖是依據(jù)模型數(shù)據(jù)創(chuàng)建的。
Controller是應(yīng)用程序中處理用戶交互的部分。 通??刂破髫撠?zé)從視圖讀取數(shù)據(jù),控制用戶輸入,并向模型發(fā)送數(shù)據(jù)。
MVC 分層有助于管理復(fù)雜的應(yīng)用程序,因為您可以在一個時間內(nèi)專門關(guān)注一個方面。例如,您可以在不依賴業(yè)務(wù)邏輯的情況下專注于視圖設(shè)計。同時也讓應(yīng)用程序的測試更加容易。
MVC 分層同時也簡化了分組開發(fā)。不同的開發(fā)人員可同時開發(fā)視圖、控制器邏輯和業(yè)務(wù)邏輯。
創(chuàng)建 Web 應(yīng)用程序
啟動 VS 并選擇 New Project 來新建項目,選擇ASP.NET CORE Web 模板,創(chuàng)建工程

按照項目實際需求定義項目名稱、源碼位置

創(chuàng)建完成的項目預(yù)覽如下

.Net Core 應(yīng)用程序文件夾
|
|
||
|
Properties——launchSettings.json
launchSettings.json文件為一個ASP.NET Core應(yīng)用保存特有的配置標準,用于應(yīng)用的啟動準備工作,包括環(huán)境變量,開發(fā)端口等。在launchSettings.json文件中進行配置修改,和開發(fā)者右鍵項目——屬性中所提交的更改的效果是一樣的(目前右鍵屬性中的Property真是少得可憐),并且支持同步更新。
{
"iisSettings": { #選擇以IIS Express啟動
"windowsAuthentication": false, #是否啟用windows身份驗證
"anonymousAuthentication": true, #是否啟用匿名身份驗證
"iisExpress": {
"applicationUrl": "http://localhost:64767", #IIS Express隨機端口
"sslPort": 44377
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"webpagetest": { #選擇本地自宿主啟動,詳見Program.cs文件。刪除該節(jié)點也將導(dǎo)致Visual Studio啟動選項缺失
"commandName": "Project",
"launchBrowser": true,
"applicationUrl": "https://localhost:5001;http://localhost:5000", #本地自宿主端口
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
Startup.cs
在之前的ASP.NET CORE 啟動和運行機制中有介紹Program.cs中會初始化Startup類.
Startup.cs文件是ASP.NET Core的啟動入口文件, 除了構(gòu)造函數(shù)外,它可以定義Configure和ConfigureServices方法, 其中ConfigureServices 方法需會在 Configure 之前被調(diào)用。
- Configure 方法是用來處理我們程序中的中間件操作
- ConfigureServices 配置我們應(yīng)用程序中的各種服務(wù)
bundleconfig.json
bundleconfig.json是一個壓縮包的集合文件,它可以自動壓縮關(guān)聯(lián)文件用于項目中,如生成 <script> 和 <link>符號.
wwwroot和bower.json
wwwroot是一個存放靜態(tài)內(nèi)容的文件夾,存放了諸如css,js,img等文件。
appsettings
同樣是顧名思義——應(yīng)用配置,類似于.NET Framework上的Web.Config文件,開發(fā)者可以將系統(tǒng)參數(shù)通過鍵值對的方式寫在appsettings文件中(如程序的連接字符串),而Startup類中也在構(gòu)造器中通過如下代碼使得程序能夠識別該文件
Controllers 文件夾
Controllers 文件夾包含負責(zé)處理用戶輸入和響應(yīng)的控制類。
MVC 要求所有控制器文件的名稱以 "Controller" 結(jié)尾。
在我們的實例中,VS 已經(jīng)創(chuàng)建好了以下文件: HomeController.cs(用于 Home 頁面和 About 頁面)和AccountController.
Models 文件夾
Models 文件夾包含表示應(yīng)用程序模型的類。
VS 自動創(chuàng)建一個 ErrorViewModel.cs 文件,該文件包含用于應(yīng)用程序報錯的模型。
Views 文件夾
Views 文件夾存儲的是與應(yīng)用程序顯示(用戶界面)相關(guān)的文件(HTML 文件)。根據(jù)所采用的語言內(nèi)容,這些文件可能擴展名可能是 html、asp、aspx、cshtml 和 vbhtml。
Views 文件夾中包含每個控制器對應(yīng)的一個文件夾。
在 Views 文件夾中,VS 已經(jīng)創(chuàng)建了一個 Home 文件夾、一個 Shared 文件夾。
Home 文件夾用于存儲諸如 home 頁和 about 頁之類的應(yīng)用程序頁面。
Shared 文件夾用于存儲控制器間分享的視圖(母版頁和布局頁)。
- _Layout.cshtml 是母版頁的意思
- 通過Razor import 文件模板添加_ViewImports.cshtml (Tag Helper)
Tag Helper 是一個很重要但容易忽略添加原理的地方貼下如下代碼示意
@using webpagetest
@using webpagetest.Models
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
調(diào)用代碼如下所示
<a class="navbar-brand" asp-area="" asp-controller="Home" asp-action="Index">webpagetest</a>
具備如上知識點,對ASP.NET CORE 創(chuàng)建項目就具備了基礎(chǔ)知識內(nèi)容