簡明 ASP.NET Core 手冊

2021-02-19 dotNET跨平臺
編者:

在4月份推送過這篇文章 簡明 ASP.NET Core 手冊 ,今天再次推薦這篇文章,是因為原作者更新到了新版本1.1.0,改動很大,幾乎所有章節都有很大程度的調整,這些調整都是根據讀者的建議而做,而且對於很多.NET Core的初學者來說,這是一個非常好的教程。

前言

感謝你捧起這本 簡明 ASP.NET Core 手冊!我寫這本小書的目的,是幫助開發者和愛好者了解 ASP.NET Core 2.0,一個嶄新的,用於創建 Web應用 和 API 的框架。

這本 簡明 ASP.NET Core 手冊 內容組織成了一篇教程。你將從零開始,完整地構建一個 待辦事項(to-do) 應用,同時了解以下內容:

MVC (Model-View-Controller) 模式的基本內容

前端代碼(HTML, CSS, JavaScript)怎樣與後端代碼交互

什麼是依賴注入以及它的實用之處

如何進行資料庫的讀寫操作

如何添加 登錄、註冊功能,以及如何提升安全性

如何部署該應用到網絡上

別擔心,你可以在 對 ASP.NET Core (以及上面列表的內容)一無所知的狀態下開始學習。

開始之前

你將要構建的這個應用,其完整源碼位於 GitHub(https://www.github.com/nbarbettini/little-aspnetcore-todo) 。如果需要與你自己的代碼做對比,可任意下載。

這本書本身也會由於修訂和內容的增加而頻繁更新。如果你閱讀的是 PDF、電子書,或者列印版,請查閱官網(littleasp.net/book)的版本更新。有關版本信息和更新內容,請查閱本書的最後一頁。

選擇你的語言閱讀

感謝那些多語言的讀者,簡明 ASP.NET Core 手冊 已經被翻譯成其它語言:

The Little ASP.NET Core Book (English -- original version)

https://www.recaffeinate.co/book/

ASP.NET Core El Kitabı (Turkish)

https://sahinyanlik.gitbooks.io/kisa-asp-net-core-kitabi/

本書的目標讀者

如果你剛開始編程,本書將使你了解構建最新web應用的模式和概念。通過從頭開始創建一些東西,你將學習構建一個 web 應用的方法(以及合理組織各模塊的方法)。儘管這個手冊不能事無巨細地講解你對編程所需的全部內容,但它將成為你的一個起點,通向更多高級的主題。

如果你已經在使用諸如 Node、Python、Ruby、Go 或者 Java 之類的後端語言寫代碼,你會注意到很多熟悉的概念,比如 MVC、視圖模板和依賴注入。你將使用 C# 進行進行編程,但跟你先前熟知的內容不會差異太大。

如果你是一個 ASP.NET MVC 開發者,你將如魚得水。 ASP.NET Core 增添了一些新工具並復用(及簡化)了你用過的那些東西。我會在後面指出其中的部分差異。

不論你此前在 web 編程方面經驗如何,本書都會傾囊相授,足以使你用 ASP.NET Core 創建一個簡單但實用的 web 應用。你將學習如何用前後端代碼實現設計目標,如何與資料庫交互,如何測試並部署應用到真實環境。

什麼是 ASP.NET Core?

ASP.NET Core 是一個由微軟創建的,用於構建 web 應用、API、微服務 的 web 框架。它使用常見的模式,諸如 MVC(Model-View-Controller)、依賴注入,和一個由中間件構成的請求處理管線。它基於 Apache 2.0 許可證開放源碼,就是說,原始碼可以自由獲取,並且歡迎社區成員以 缺陷修復 和 新功能提交 的方式進行貢獻。

ASP.NET Core 運行在微軟的 .NET 運行時庫上,類似於 Java 的 虛擬機(JVM)或者 Ruby 的解釋器。有幾種語言(C#,Visual Basic,F#)可以用來編寫 ASP.NET Core 程序。C# 是最常見的選擇,我在本書中也會採用它。你可以在 Windows、Mac,和 Linux 上構建並運行 ASP.NET Core 應用。

又一個 web 框架,需求何在?

現存的 web 框架選項已經很多了:Node/Express、Spring、Ruby on Rails、Django、Laravel 等等,數不勝數。ASP.NET Core 又有什麼可取之處呢?

速度 ASP.NET Core 很快。因為 .NET Core 是編譯運行的,執行速度遠高於解釋執行的語言,比如 JavaScript 或者 Ruby、ASP.NET Core 也已經為多線程和異步任務作了專門的優化。與使用 Node.js 寫的代碼相比,執行速度高出 5-10 倍是很正常的。

生態 ASP.NET Core 可能初出茅廬,但 .NET 卻已久經考驗。在 NuGet(.NET 的包管理系統,類似 npm、Ruby gems,或者 Maven)上有成千上萬的軟體包。有現成的包可用來完成 JSON 反序列化、資料庫連接、PDF生成,或者幾乎你能想到的任何需求。

安全性 微軟的開團隊很注重安全性,ASP.NET Core 從創建基礎就是安全的。它已經自動處理了 淨化輸入數據 和 跨域偽造請求(XSRF),你就不用操心這些了。你同時還享有 .NET 編譯器的靜態類型檢測的福利,它像個時刻警惕著,還有些強迫症的審校者。這樣,在使用一個變量或者某些數據時,那些無意識的錯誤就插翅難逃。

.NET Core 和 .NET 標準

貫穿本書,你將學習有關 ASP.NET Core (web 框架)的知識。我會偶爾提及 .NET 運行時(用於運行 .NET 代碼的支持庫)。

你可能還會聽說 .NET Core 和 .NET標準,這些命名有些混亂,所以在此做一簡短的釋疑:

.NET 標準 是一個平臺無關的接口,它定義了 .NET 中具有哪些特性和 API。 .NET 標準並不等同於任何實際的代碼或者功能,僅僅是 API 的定義。.NET 標準現存多個不同的「版本」或者說級別,反映出提供 API 的數量(或者說 API 所覆蓋的廣度)。比如 .NET標準2.0 的 API 數量比 .NET標準1.5 多,後者的 API 又比 .NET標準1.0 多。

.NET Core 是可安裝在 Windows、Mac或者Linux上的 .NET 運行時庫。它在各個作業系統上,使用對應的平臺相關代碼實現了定義於 .NET 標準中的 API。你將要把它安裝到機器上,用來構建和運行 ASP.NET Core 應用程式。

作為對比,這裡要指出, .NET Framework 是另一個 .NET標準 的實現,它只能運行在 Windows 上。在 .NET Core 出現並把 .NET 推向 Mac 和 Linux 之前,它是唯一的 .NET 運行時庫。 ASP.NET Core 也可以跑在 Windows 專用的 .NET Framework 上,但我不會過多涉及這個主題。

如果你已經被這些命名搞糊塗了,別發愁!咱們馬上就要寫代碼進行實踐了。

ASP.NET 4 開發者注意

如果你從沒用過 ASP.NET 以前的版本,直接看下一章去吧!

ASP.NET Core 是對 ASP.NET 徹底的重寫,重點關注於讓該框架應用新的開發方法,並最終使其與 System.Web、IIS、和 Windows 解耦。你要是還記得 ASP.NET 4 的 OWIN/Katana 那些內容,你就已經學會一半了: Katana 項目成了 ASP.NET 5,而後者的名字最終被改成了 ASP.NET Core。

作為 Katana 的傳承, Startup 類成了起始和中心,Application_Start 和 Global.asax 則不復存在了。整個處理管線由中間件驅動,MVC 和 Web API 不再有區別:控制器可以方便的返回視圖、狀態碼,或者數據。依賴注入功能已經內置了,所以,如果你不想費勁的話,完全可以不用再安裝並配置一個服務容器了,比如 StructureMap 或者 Ninject。整個框架已經針對速度和運行時效率進行了優化。

好了,前言就到這兒。開始學習 ASP.NET Core 吧。

原文地址:https://windsting.github.io/little-aspnetcore-book/book/ 

.NET社區新聞,深度好文,歡迎訪問公眾號文章匯總 http://www.csharpkit.com

相關焦點

  • ASP.Net安裝簡明手冊
    MDAC2.6Beta22、軟體下載=====================·MDAC2.7(5.03MB)https://www.microsoft.com/data/download_270RTM.htm·FullSDKDownload(131MB)https://download.microsoft.com/download/.netframesdk
  • asp.net core 5.0 中的 JsonConsole
    asp.net core 5.0 中的 JsonConsoleIntroasp.net core 5.0 中日誌新增了 JsonConsole,還是輸出日誌到 Console,但是會應用 Json 格式的一個 Formatter 把日誌格式化成 json 再輸出到控制臺
  • asp.net core 使用 TestServer 來做集成測試
    asp.net core 使用 TestServer 來做集成測試Intro之前我的項目裡的集成測試是隨機一個埠,每次都真實的啟動一個 WebServer,之前也有看到過微軟文檔上 TestServer 的介紹,當時沒仔細看過以為差不多就沒用,一直是啟動了一個真正的
  • ASP.NET Core MVC四種枚舉綁定方式
    所以到此我們研究結束,此方法應該是被.net core mvc團隊已經棄用,我們繼續往下看。雖然上述是.net core提供給我們最好的方案,確實很好,但是我們實際要的效果不是這樣,我們來舉一個實際場景,比如如下枚舉類。
  • ASP.Net Core Razor 頁面路由
    原文:《Routing in Razor Pages》https://www.mikesdotnetting.com/article/310/routing-in-razor-pages翻譯:Sweet Tang本文地址:http://www.cnblogs.com/tdfblog/p/razor-pages-route-in-asp-net-core.html
  • ASP.NET Core Identity Hands On(2)——註冊、登錄、Claim
    如果你熟悉 asp.net core ,那我猜你可能已經想到了沒錯 Options 就是 Di中的 Options在起作用。claim 的基本組成是 type和value,上面票據中左側的就是type右面就是value在 .net core 基礎類庫中是含有Claim的實現類的,它的位置是System.Security.Claims.Claim我們看一個真實的claim的例子{  "sub": "1234567890",  "name": "John Doe
  • ASP.NET Core 3.1中HTTPS的配置
    HTTPS重定向中間件在asp.net中,默認情況下啟用https。其中HttpsRedirection中間件類提供強制執行從http到https重定向。啟動時會使用UseHttpsRedirection擴展方法來強制執行此操作。默認情況下,該擴展方法發出307臨時重定向響應。然後,使用配置的https埠指定重定向端點。
  • 優化 .net core 應用的 dockerfile
    優化 .net
  • ASP.NET Core 和 Blazor 更新 - OSCHINA - 中文開源技術交流社區
    calls-deadline-exceededmessages-sentmessages-receivedcalls-unimplemented詳情請見發布說明:https://devblogs.microsoft.com/aspnet/asp-net-core-and-blazor-updates-in-net-core
  • 【Python】建立gRPC服務端與.Net Core 客戶端
    由於需要接入其他平臺的OAuth 2.0,還要提供RESTful API獲取VMware vSphere的數據,這塊內容,.net core我更熟悉,所以鎖定ASP.NET Core,通過上兩篇,我們知道這裡只能通過python去獲取數據了,那麼我面臨的問題就是python與.net core的數據通信:方法一:使用Python的web
  • 如何實現Asp與Asp.Net共享Session
    > 語言 > 關鍵詞 > 最新資訊 > 正文 如何實現Asp與Asp.Net共享Session 在.net
  • ASP.NET Core Web API 最佳實踐
    public void ConfigureServices(IServiceCollection services) { services.ConfigureCors();}了解更多關於 .NET Core 的項目配置,請查看:https://code-maze.com/net-core-web-development-part2
  • [譯]ASP.NET Core Web API 中使用Oracle資料庫和Dapper看這篇就夠了
    原文地址:https://www.c-sharpcorner.com/article/asp-net-core-web-api-with-oracle-database-and-dapper/翻譯人:依樂祝總結今天主要是翻譯了一篇國外的使用Dapper以及Oracle的組合來開發asp.net core web api的教程!
  • 在ASP.NET Core中使用Angular2,以及與Angular2的Token base身份認證
    注意:本文章屬於Step by step + Code Sample教程,且篇幅較長,建議下載本Sample並跟著本文進度自己重做一遍本例,下載完整代碼並分析代碼結構才有意義,下載地址:How to authorization Angular 2 app with asp.net core web api
  • 在離線環境中發布.NET Core至Windows Server 2008
    看了下官方給出的發布教程感覺挺詳細的了(https://docs.asp.net/en/latest/publishing/iis.html),不過畢竟離線環境還是挺麻煩的,直覺告訴我發布過程中會遇到么蛾子。果然就遇到問題了,不過解決起來都很簡單。這裡做個記錄順便分享下,希望對有類似需求的同學有所幫助。
  • .net core+Spring Cloud學習之路 一
    言歸正傳,在今早發現張隊在元旦前的博客「年末展望:Oracle 對 JDK收費和.NET Core 給我們的機遇」,說明了以後.net core會越來越好,而我本人在2017年的時候開始接觸過.net core的時候,就沒有放棄過對.net core的學習,現在覺得微服務是個不錯的方向,而自己也在學習這塊的東西,所以寫個博客記錄一下自己的學習的筆記。
  • ASP.NET與MySQL資料庫簡明圖示入門教程
    安裝非常簡單,按照安裝步驟不會導致任何問題,如下圖:MySQLServer安裝MySQLServer安裝MySQLServer安裝ASP.NET與MySQL資料庫簡明圖示入門教程src="img2005/104888491.gif"align=centervspace=1border
  • ASP Application 對象用戶手冊
    首頁 > 語言 > 關鍵詞 > asp最新資訊 > 正文 ASP Application 對象用戶手冊
  • 目前中國網站服務端開發主要有PHP、asp.net、Java三種語言
    通過各招聘網站招聘程式設計師的類型統計得出結果是目前中國網站服務端開發主要有PHP、asp.net、Java三種語言,其他佔少數有潛力有C#,C++等,而Python也開始被開發者使用在服務端開發。從招聘的數據信息顯示,PHP編程開發主要集中在中小網站,個人站點,個人博客等開發,而政府網站更喜歡asp.net開發,Java則主要在電商,支付系統,安全數據的等方面有優勢。
  • NET開發-ASP.NET WebForm應用程式中,使用C#操作TextBox的屬性
    ID屬性ID屬性是每個asp.net每個伺服器控制項必須具備的屬性,用來指定控制項的唯一ID值。TextBox控制項的ID值最好以「txt+有意義的單詞」組成,便於後臺C#代碼中識別並賦值和獲取值。1.2.2. Text屬性TextBox控制項的Text屬性用於給文本框賦值或取值,以及獲取用戶輸入的值。