開源Web建置強大標準: ASP.NET Core全端開發立即上手
作者 | 周家安 |
---|---|
出版社 | 聯合發行股份有限公司 |
商品描述 | 開源Web建置強大標準: ASP.NET Core全端開發立即上手:開源Web建置強大標準-ASP.NETCore全端開發立即上手.NETCore是由微軟開發的一個跨平台、開源的軟體框架。它是.NETFram |
作者 | 周家安 |
---|---|
出版社 | 聯合發行股份有限公司 |
商品描述 | 開源Web建置強大標準: ASP.NET Core全端開發立即上手:開源Web建置強大標準-ASP.NETCore全端開發立即上手.NETCore是由微軟開發的一個跨平台、開源的軟體框架。它是.NETFram |
內容簡介 開源Web建置強大標準 - ASP.NET Core全端開發立即上手 .NET Core是由微軟開發的一個跨平台、開源的軟體框架。它是.NET Framework的新版本,提供了更好的效能、模組化和跨平台支援。與.NET Framework不同的是,.NET Core是從頭重新設計的,可以在Windows、macOS和Linux上運行。ASP.NET Core以服務容器為核心,可模組化擴充,並且搭配了常用的元件,它經過重新設計和最佳化,在效能和安全性上都有顯著提升。ASP.NET Core提供Razor Pages、MVC、Web API和Blazor等功能,可靈活組合應用於常規Web、微服務、行動後端和物聯網等場景。如果你已經熟悉.NET架構,再轉為開發Web程式,本書再適合不了。 本書適合有.NET或C#基礎的讀者,透過實例快速掌握ASP.NET Core關鍵技術。本書旨在提供一個全面的學習路徑,幫助讀者從初學者進階到能夠應對現代複雜軟體開發挑戰的專家。無論您是正在尋找開始使用.NET Core 技術堆疊的新手,還是希望深入了解其高級功能和最佳實踐的經驗開發者,本書都將為您提供所需的知識和技能。
作者介紹 周家安 微軟最有價值專家(MVP),擅長.NET及其相關開發技術,專注於探索簡單實用的程式設計學習方法。長期在博客園等技術社區分享程式設計經驗。出版《Go語言入門經典》《精通C#5.0》《C#碼農筆記:從第一行代碼到項目實戰》《Python實戰指南——手把手教你掌握300個精彩案例》等優秀原創科技圖書。
產品目錄 第 1 章 初始化ASP.NET Core 應用程式1.1 應用程式的啟動過程1.2 WebApplicationBuilder類別1.3 啟動應用程式1.4 使用Host初始化應用程式1.4.1 通用主機1.4.2 範例:簡單的通用主機1.4.3 Web主機1.5 設定應用程式的URL1.5.1 呼叫UseUrls()方法1.5.2 使用WebApplication類別的Urls屬性1.5.3 呼叫Run()方法時傳遞URL1.5.4 透過ServerAddressesFeature物件設定URL1.5.5 使用命令列參數1.5.6 使用設定檔1.5.7 使用環境變數1.5.8 使用launchSettings.json檔案1.5.9 Kestrel伺服器的偵聽位址1.5.10 透過HTTP.sys設定URL1.5.11 PreferHostingUrls() 方法的作用1.6 應用程式生命週期事件第 2 章 執行環境2.1 定義執行環境2.2 Is{EnvironmentName}擴充方法2.3 多執行環境下的設定檔2.4 用於環境篩選的Razor標記2.5 執行環境與相依注入第 3 章 相依注入3.1 相依注入與服務容器3.1.1 ServiceCollection類別3.1.2 ServiceProvider類別3.2 .NET專案中的相依注入3.3 ASP.NET Core專案中的相依注入3.4 建構存在相依關係的服務3.5 服務的生存期3.6 GetService()方法與GetRequiredService()方法的區別3.7 注入多個服務實例3.8 容易被忽略的問題第 4 章 設定應用程式4.1 設定的基本結構4.2 在.NET應用程式中使用設定4.3 在ASP.NET Core應用程式中使用設定4.3.1 設定的資料來源4.3.2 查看所有設定資訊4.4 IConfigurationBuilder介面4.5 ConfigurationManager類別4.6 IConfigurationSource介面與IConfigurationProvider介面4.6.1 自訂擴充點4.6.2 範例:來自CSV檔案的設定4.7 JSON設定4.7.1 範例:存取JSON陣列物件4.7.2 範例:自動重新載入設定4.8 XML設定4.9 環境變數4.9.1 設定環境變數首碼4.9.2 替換預設的ASPNETCORE_首碼4.9.3 範例:替換環境變數首碼4.9.4 分層設定結構4.10 命令列參數4.11 ini設定4.12 設定與相依注入4.12.1 範例:將IConfiguration注入MVC控制器4.12.2 範例:透過設定選擇雜湊演算法4.13 連結多棵設定樹第 5 章 選項模式5.1 選項模式概述5.2 服務容器的擴充方法5.3 各介面之間的關係5.3.1 IConfigureOptions介面與IConfigureNamedOptions介面5.3.2 IPostConfigureOptions介面5.3.3 IValidateOptions介面5.3.4 IOptionsFactory介面5.3.5 完整的流程圖5.4 選項類別的封裝介面5.4.1 範例:在MVC 控制器中存取選項類別5.4.2 範例:自動更新選項類別5.5 附帶名稱的選項群組5.6 後期設定5.7 選項類別的驗證5.7.1 內建的驗證方式5.7.2 使用資料批註5.8 處理帶有參數的建構函式5.9 直接實現IOptions介面第 6 章 HTTP管道6.1 HTTP管道與中介軟體6.2 中介軟體的實現方法6.3 透過委託實現中介軟體6.3.1 範例:Use()方法的簡單用法6.3.2 HTTP管道的「短路」6.3.3 Run()方法6.4 透過類別實現中介軟體6.4.1 帶有參數的中介軟體6.4.2 中介軟體類別與相依注入6.5 透過IMiddleware介面實現中介軟體6.6 終結點6.6.1 範例:常見的HTTP請求方式6.6.2 範例:同時使用Razor Pages和MVC6.6.3 為終結點分配名稱6.6.4 中繼資料6.7 有條件地執行中介軟體6.7.1 範例:呼叫包含user_id欄位的中介軟體6.7.2 範例:只允許以POST方式呼叫Web API第 7 章 HTTP狀態儲存7.1 HTTP上下文7.1.1 範例:在中介軟體中設定回應表頭7.1.2 範例:在Map*()方法中存取HTTP上下文7.1.3 範例:使用Razor標記呈現HTTP請求表頭7.1.4 範例:在MVC中存取HTTP上下文7.2 HTTP訊息表頭7.2.1 HeaderNames類別7.2.2 訊息表頭的分類7.2.3 分析複雜訊息表頭7.3 查詢字串7.3.1 讀取查詢參數7.3.2 多值參數7.4 表單資料7.4.1 讀取簡單的表單資料7.4.2 檔案上傳7.5 Cookie7.6 HttpContext類別的Items屬性7.7 階段7.7.1 ISession介面7.7.2 設定階段Cookie的名稱7.7.3 範例:將階段資料儲存到JSON檔案中第 8 章 Razor頁面8.1 Razor頁面的特點8.2 Razor語法8.2.1 兩種運算式8.2.2 程式區塊8.2.3 註釋8.2.4 流程控制8.3 開啟Razor頁面功能8.4 Razor分頁檔8.5 分頁檔的搜索路徑8.5.1 設定RazorPagesOptions選項類別8.5.2 便捷的擴充方法8.6 頁面路由8.6.1 透過@page指令設定路由規則8.6.2 透過約定模型定義路由規則8.7 頁面模型類別8.7.1 頁面自身作為模型類別8.7.2 從PageModel衍生類別8.7.3 透過特性類別實現頁面模型類別8.8 頁面處理常式8.8.1 通用的處理常式8.8.2 解決POST請求時出現的錯誤8.8.3 使用多個處理常式8.8.4 透過路由參數選擇處理常式8.8.5 自訂的處理常式模型第 9 章 MVC框架9.1 MVC基本概念9.2 啟用MVC功能9.3 控制器9.3.1 範例:從ControllerBase類別衍生9.3.2 範例:從Controller類別衍生9.3.3 範例:使用ControllerAttribute9.3.4 範例:使用Controller尾碼9.3.5 自訂控制器的名稱9.3.6 範例:ControllerNameAttribute類別9.3.7 自訂操作方法的名稱9.3.8 範例:CustActionNameAttribute類別9.3.9 範例:ActionNameAttribute類別9.4 MVC路由規則9.4.1 全域路由規則9.4.2 範例:註冊兩筆全域路由規則9.4.3 局部路由規則9.4.4 IRouteTemplateProvider介面9.4.5 透過實現約定介面定義路由規則9.4.6 範例:CustPrefixRouteConvention類別9.5 限制操作方法所支援的HTTP請求9.5.1 範例:只支援HTTP-PUT請求的操作方法9.5.2 內建特性類別9.6 區域9.7 視圖9.7.1 視圖檔案的預設存放路徑9.7.2 自訂視圖的路徑格式9.7.3 版面配置視圖9.7.4 範例:版面配置視圖的查詢順序9.7.5 範例:設定Razor Pages版面配置視圖的查詢路徑9.7.6 _ViewImports與_ViewStart檔案9.7.7 範例:_ViewStart檔案的替換行為9.8 IViewLocationExpander介面9.8.1 範例:多版本視圖9.8.2 範例:根據URL查詢參數擴充視圖路徑9.8.3 LanguageViewLocationExpander類別9.9 局部視圖9.9.1 範例:成績單9.9.2 範例:導覽列9.10 視圖元件9.10.1 範例:一個簡單的視圖元件9.10.2 視圖檔案的查詢路徑9.10.3 範例:帶有參數的視圖元件9.10.4 透過標記幫助器呼叫視圖元件9.10.5 範例:Greeting視圖元件9.10.6 範例:在MVC控制器中呼叫視圖元件9.10.7 兩個特性類別9.11 辨識其他程式集中的控制器9.11.1 範例:使用ApplicationPartAttribute類別9.11.2 範例:使用AddApplicationPart()擴充方法9.11.2 範例:使用ApplicationPartManager類別第 10 章 模型綁定10.1 概述10.2 自動綁定10.2.1 範例:計算機10.2.2 範例:綁定陣列類型的資料10.2.3 範例:綁定複雜類型10.2.4 多個參數的模型綁定10.2.5 範例:綁定3個參數10.2.6 字典類型的模型綁定10.2.7 範例:綁定字典資料10.2.8 範例:綁定IFormCollection類型10.2.9 範例:MD5計算機10.2.10 綁定IFormFile和IFormFileCollection類型10.2.11 範例:上傳一個文字檔10.2.12 範例:上傳多個檔案10.3 設定模型綁定的來源10.3.1 範例:綁定HTTP訊息表頭10.3.2 範例:從HTTP訊息文字提取資料10.3.3 範例:與路由參數綁定10.3.4 範例:FromServices特性的使用10.3.5 範例:混合使用From*特性類別10.3.6 範例:將From*特性類別應用於屬性成員10.4 自訂IValueProvider介面10.4.1 範例:由自訂字串提供的值10.4.2 範例:CookieValueProvider10.5 IModelBinder介面10.5.1 內建綁定器10.5.2 範例:AddressInfoModelBinder類別10.6 BindRequiredAttribute類別與BindNeverAttribute類別10.7 綁定到屬性成員10.7.1 範例:控制器的屬性綁定10.7.2 範例:PageModel中的屬性綁定10.7.3 範例:CancellationToken類型的屬性綁定第 11 章 Web API11.1 Web API基礎11.1.1 ControllerBase類別與Controller類別11.1.2 ApiController特性11.1.3 範例:一個簡單的Web API11.1.4 範例:以POST方式提交資料11.2 XML格式11.2.1 範例:常規的XML序列化方案11.2.2 範例:使用XmlDataContractSerializer方案11.3 選擇回應格式11.3.1 範例:透過Accept訊息表頭選擇回應格式11.3.2 範例:使用格式篩檢程式11.4 自訂格式11.4.1 範例:CustDataInputFormatter類別11.4.2 範例:BytesToHexOutputFormatter類別11.5 極小API11.5.1 範例:一些簡單的極小API例子11.5.2 範例:在極小API上使用資料來源特性11.5.3 上傳檔案.11.5.4 範例:直接讀取檔案串流11.5.5 範例:上傳多個檔案11.5.6 IResult介面11.5.7 範例:Results類別的使用11.6 API瀏覽功能11.6.1 IApiDescriptionGroupCollectionProvider介面11.6.2 範例:列出已定義的Web API11.6.3 API約定11.6.4 Swagger框架11.6.5 範例:使用Swagger生成API文件第 12 章 篩檢程式12.1 篩檢程式的執行過程12.1.1 範例:觀察篩檢程式的執行順序12.2.2 範例:同時實現多個介面12.2 篩檢程式的作用域12.1.1 範例:全域篩檢程式12.2.2 範例:特性化的篩檢程式12.3 在Razor Pages中使用篩檢程式12.1.1 範例:在Razor標記頁和頁面模型類別上應用篩檢程式12.2.2 範例:在Razor Pages中應用全域篩檢程式12.2.3 頁面處理常式的篩檢程式12.2.4 範例:實現IPageFilter介面12.4 非同步篩檢程式介面12.4.1 範例:實現非同步授權篩檢程式12.4.2 範例:實現非同步資源篩檢程式12.5 IAlwaysRunResultFilter介面12.6 IFilterFactory介面12.6.1 範例:存取服務容器中的篩檢程式12.6.2 範例:使用TypeFilterAttribute類別建立篩檢程式實例12.6.2 範例:使用ServiceFilterAttribute 類別存取服務容器中的篩檢程式12.7 篩檢程式的執行順序12.7.1 範例:篩檢程式的作用域與執行順序12.7.2 範例:自訂篩檢程式的執行順序12.8 抽象的篩檢程式特性類別12.8.1 範例:重寫ActionFilterAttribute類別12.8.2 範例:重寫ExceptionFilterAttribute類別第 13 章 標記幫助器13.1 標記幫助器簡介13.1.1 範例:為標記增加「加粗」功能13.1.2 範例:標記幫助器13.1.3 範例:使用標記幫助器設定HTML元素的文字樣式13.2 將標記幫助器註冊到服務容器13.3 內建的標記幫助器13.3.1 範例:快取當前時間13.3.2 範例:用< button >元素提交表單13.3.3 範例:asp-for屬性的使用13.3.4 範例:呈現驗證資訊13.4 標記幫助器元件13.4.1 範例:在元素內插入CSS樣式13.4.2 範例:使用ITagHelperComponentManager 物件註冊標記幫助器元件第 14 章 靜態檔案14.1 靜態檔案簡介14.2 使用靜態檔案14.2.1 範例:存取影像檔14.2.2 範例:修改WEBROOT路徑14.2.3 範例:統計輸入的字元數量14.2.4 範例:合併多個目錄14.3 目錄瀏覽14.3.1 範例:瀏覽外部目錄14.3.2 範例:自訂檔案類型映射14.4 檔案服務第 15 章 路由約束15.1 路由約束的作用15.2 IRouteConstraint介面15.3 內建的路由約束15.3.1 範例:雙精度數值約束15.3.2 範例:限制字串長度15.3.3 範例:特定格式的訂單號15.3.4 範例:限制整數值的範圍15.4 自訂路由約束第 16 章 SignalR16.1 WebSocket16.1.1 範例:用JavaScript實現使用者端16.1.2 範例:用.NET 主控台實現WebSocket使用者端16.1.3 子協定16.2 SignalR基礎16.2.1 SignalR中心16.2.2 範例:簡易計算機16.2.3 範例:使用.NET導向的SignalR函式庫16.3 呼叫使用者端16.3.1 範例:聊天室16.3.2 將使用者端定義為介面16.3.3 範例:即時更新進度指示器16.3.4 範例:記錄連接狀態第 17 章 Blazor17.1 Blazor概述17.2 伺服器託管17.2.1 範例:使用Razor Pages承載Blazor應用17.2.2 範例:在MVC視圖中承載Blazor應用17.2.3 範例:初始化指令稿17.2.4 範例:使用初始化指令稿17.2.5 範例:手動增加modules.json檔案17.3 WebAssembly託管17.3.1 範例:手動建立Blazor WebAssembly專案17.3.2 範例:用node.js開發Blazor WebAssembly伺服器17.3.3 範例:初始化指令稿17.3.4 DevServer17.4 路由元件17.4.1 範例:路由元件的簡單應用17.4.2 範例:使用路由參數17.4.3 範例:使用[Route]特性17.5 版面配置元件17.5.1 範例:導覽列17.5.2 範例:將普通元件用於版面配置17.6 元件參數17.6.1 範例:巢狀結構元件的參數傳遞17.6.2 範例:頂層元件的參數傳遞(Blazor Server)17.6.3 範例:頂層元件的參數傳遞(Blazor WebAssembly)17.7 串聯參數17.7.1 範例:根據類型接收串聯參數17.7.2 範例:根據命名接收串聯參數17.8 事件17.8.1 範例:計數器17.8.2 範例:記錄滑鼠指標的位置17.8.3 EventCallback結構17.8.4 範例:進度指示器元件17.9 CSS隔離17.10 資料綁定17.10.1 範例:綁定日期輸入元素17.10.2 範例:使用oninput事件17.10.3 元件之間的綁定17.10.4 範例:Slider元件17.11 用.NET程式撰寫元件17.11.1 著色樹17.11.2 範例:用.NET程式實現App和Index元件17.11.3 範例:使用相依注入17.12 .NET與JavaScript交互操作17.12.1 範例:呼叫JavaScript中的alert()方法17.12.2 範例:呼叫QRCode.js生成二維碼17.12.3 範例:階乘計算機17.12.4 範例:JavaScript呼叫.NET物件的實例方法第 18 章 驗證與授權18.1 驗證與授權的關係18.2 與驗證有關的核心服務18.3 驗證處理常式18.3.1 範例:驗證HTTP訊息表頭18.3.2 範例:多個驗證方案共用一個IAuthenticationHandler介面18.4 IAuthenticationSignInHandler介面18.5 驗證中介軟體18.6 授權處理常式與必要條件18.6.1 範例:允許指定的部門存取18.6.2 PassThroughAuthorizationHandler 類別18.7 授權策略18.7.1 範例:按使用者星級授權18.7.2 範例:整合內建的Cookie驗證18.7.3 範例:在終結點上應用授權策略
書名 / | 開源Web建置強大標準: ASP.NET Core全端開發立即上手 |
---|---|
作者 / | 周家安 |
簡介 / | 開源Web建置強大標準: ASP.NET Core全端開發立即上手:開源Web建置強大標準-ASP.NETCore全端開發立即上手.NETCore是由微軟開發的一個跨平台、開源的軟體框架。它是.NETFram |
出版社 / | 聯合發行股份有限公司 |
ISBN13 / | 9786267569238 |
ISBN10 / | |
EAN / | 9786267569238 |
誠品26碼 / | 2682762616002 |
頁數 / | 656 |
裝訂 / | P:平裝 |
語言 / | 1:中文 繁體 |
尺寸 / | 17X23X2.9CM |
級別 / | N:無 |
自序 : 序言
ASP.NET Core 由微軟官方推出,開放原始程式碼並以社區為主,可以生成執行於Windows、macOS、Linux 等作業系統的新型Web 應用程式。ASP.NET Core並不是ASP.NET 的延續版本,而是經過重新設計和最佳化的框架。由於它是編譯執行的,因此在性能上的優勢明顯。而且,其內部對非同步任務和安全性做了大量整合工作,有些安全功能是預設啟用的,如對跨站漏洞攻擊的防範。經過六七個版本的迭代,ASP.NET Core 已趨向完善,對Web 前端與其他資料存取技術的相容性也得到極大提升。對於常規Web 功能、微服務、行動後端以及物聯網後端等應用場景,ASP.NET Core 都是不錯的選擇。
本書所涉及的內容針對性強,只要讀者具備.NET 或C# 程式設計相關基礎,即可透過本書快速掌握ASP.NET Core 的關鍵技術。本書在每個基礎知識的講解後都會附上專門的範例,方便讀者將學到的知識馬上付諸實踐,加深印象。
ASP.NET Core 配有官方開發工具,並共用.NET SDK 工具。無論讀者使用的是Windows 還是Linux 作業系統,都可以執行dotnet new 命令建立ASP.NET Core 應用專案,或執行dotnet run 命令執行應用程式。
本書推薦使用官方提供的工具撰寫程式。
Visual Studio:Windows、macOS 使用者均可以使用,簡稱VS。VS 是著名的整合式開發環境,提供從開發、驗證、生成到偵錯和執行的完整支援。除了程式提示功能,還有聯想功能,可以根據程式上下文以及巨量資料整理推斷各種程式部分,極大地提高編碼效率。
Visual Studio Code: 簡稱VS Code 或VSC。VS Code 是VS 的分支版本,著重程式編輯功能。VS Code 透過安裝擴充支援各種程式語言。理論上,只要擁有足夠的擴充,VS Code 就能撰寫任何程式語言的程式(如C、C++、Python、C#、Java 等)。VS Code 能執行在Windows、Linux 及macOS 等作業系統上,同時也支援ARM 架構,如Raspberry Pi OS。使用時先執行dotnetnew命令建立ASP.NET Core 專案,然後在VS Code 中開啟專案所在目錄即可。
雖然ASP.NET Core 可以細分出Razor Pages、MVC、Web API、Blazor 等專案,但實際上這些功能是可以在同一個專案中實現的。ASP.NET Core 以服務容器為核心,可以元件化擴充。只要向容器註冊服務類型,就能開啟相關的功能,如MVC 與Blazor 功能可以同時啟用(URL 路由不能有衝突)。
本書適合有一定.NET 或C# 基礎的讀者閱讀,也可以作為高等學校或培訓機構的輔助教材。也歡迎想了解ASP.NET Core 的開發人員閱讀本書。
由於編者水準有限,書中難免出現不妥之處,望讀者們不吝批評指正。
本書主要內容
本書深入探討如何利用最新的.NET Core 技術堆疊,從基礎到進階應用全面涵蓋的書籍。旨在幫助讀者掌握現代軟體開發中所需的核心技能和最佳實踐。首先,書籍將從.NET Core 的基本架構入手。讀者將學習到.NET Core 跨平台開發的優勢,以及如何利用.NET Core 的基本工具進行開發。我們將深入探討.NET Core 的核心概念,包括如何建立和組織專案結構,以及如何使用依賴注入和配置服務來管理應用程序的組件。
其次,本書將詳細介紹如何建立高效率的Web應用程式。我們將從設計和實作Web API開始,涵蓋API的路由設計、參數綁定、請求和回應格式化等方面。讀者將學習到如何使用.NET Core 框架提供的工具和技術來開發RESTful API,並探索如何處理身份驗證和授權、輸入驗證、日誌記錄等關鍵問題。除了基本的Web應用程式開發,本書還將深入探討微服務架構下的開發模式。讀者將學習到如何將大型應用程序拆分為多個微服務,並通過API或服務發現來實現這些服務的管理和溝通。
最佳賣點 : 開源Web建置強大標準 - ASP.NET Core全端開發立即上手