從淺入深瞭解.NET Core MVC 2.x全面教程【第二章】

来源:https://www.cnblogs.com/kimiliucn/archive/2023/08/09/17616708.html
-Advertisement-
Play Games

通過深入理解和掌握NET Core MVC2.x從中學習到實用的技術和解決方案,提升自己在NET Core MVC2.x開發中的技能 ...


二、Logging

1.診斷中間件

  • 命名空間:Microsoft.AspNetCore.Diagnostics
  • 報告信息並處理異常

2.診斷中間件

  • UseDeveloperExceptionPage:開發時使用的異常頁面,異常信息
  • UseStatusCodePages:返回狀態碼:400-600
  • UserExceptionHandler:指定異常處理器
  • UseWelcome:當網站還在建設中

3.ASP.NET Core里的Log系統

  • EventSource
  • ILogger
  • DiagnosticSource

4.ILogger

  • 基於Providers
    • 內置
    • 可擴展使用其他的,或自己構件

5.內置的Log Providers

  • Console:控制台
  • Debug:VSDebug視窗
  • EventSource
  • EventLog:寫到Windows事件中
  • TraceSource:只能應用於完整的.NET Frameword
  • Azure App Service

6.Log等級(低級——>高級)

  • Trace
  • Debug
  • Information
  • Warning
  • Error
  • Cirtical

7.添加日誌信息

第一個參數是EventID,寫一個常量就行;
image.png
第二個參數是要記錄的日誌信息;如果有2個參數就繼續往後寫就行了;
image.png
不建議這麼寫,寫在一起就提出不來了;
image.png


8.第三方 Log Provider

  • Serilog
  • Nlog
  • Elmah

9.怎麼在ASP.NET Core中使用Serilog?

  • 在NuGet中安裝【Servilog.AspNetCore】

image.png
//如果需要輸出到控制台
image.png
//輸出到文件
image.png

  • 在【Program.cs】文件中Main方法中進行配置。

image.png

  • 在【Program.cs】文件中CreateWebHostBuilder方法中進行使用。

image.png


三、Filter

1.Filter

  • 用於MVC
  • 可以在MVC的請求管道里添加邏輯
    • 之前、之後
  • Cross-cutting concerns:灌穿特性
    • 避免代碼重覆
  • 常用場景
    • 授權
    • 需要Https

2.MVC管道

image.png


3.Filter種類

  • AuthorizationFilter:鑒權授權
  • ResourceFilter:資源過濾器
  • ActionFilter:行為方法過濾器
  • ExceptionFilter:異常過濾器
  • ResultFilter:結果過濾器

4.實現Filter

  • IFilterMetadata
    • IAtuorizationFilter,IAsyncAuthorizationFilter
    • IResourceFilter
    • IActionFilter
    • IExceptionFilter
    • IRestleFilter

5.應用Filter

  • Action
  • Controller
  • 全局

image.png


四、緩存

1.緩存的優點?

  • 提高網站的訪問速度
  • 適用於不易改變的數據

2.緩存的缺點?

  • 仔細規劃
  • 奇怪的副作用

3.緩存的地點?

  • 伺服器
  • 緩存伺服器
  • 客戶端

4.In-Memory緩存

  • 記憶體緩存
  • IMemoryCache
  • 適用於Sticky Seesion(使用單機服務)
  • 適用於任何類型的對象

5.MemoryCacheEntryOptions

  • Absolute expiration time:絕對過期時間
  • Sliding expiration time:可調的過期時間
  • 緩存優先順序
  • PostEvictionDelegate

6.怎麼使用緩存?

  • 現在【Sartup.cs】的【ConfigureServices】方法中註冊緩存:

image.png

  • 定義一個常量,用來做Key

image.png

  • 構造函數依賴註入緩存

image.png

  • 使用緩存

image.png


7.Cache Tag Helper

  • @await Component.IncokeAsync("xxx")
  • 伺服器端
  • 使用IMemoryCache
    • Sticky Session

8.Cache Tag Helper屬性

  • Enabled:是否啟用
  • expires-on:絕對的過期時間
  • expires-after:時間長度
  • expires-sliding:可調的過期時間
  • vary-by-header:請求
  • vary-by-query
  • vary-by-cookie
  • vary-by-user
  • vary-by
  • priority:優先順序設置

9.分散式緩存_1

image.png


10.分散式緩存_2

  • 無需Sticky Seesion
  • 可擴展
  • 伺服器重啟不會緩存
  • 性能更好

11.分散式緩存的介面名、方法?

  • IDistributedCache
  • Get,GetAsync
  • Set,SetAsync
  • Refresh,RefreshAsync
  • Remove,RemoveAsync

12.分散式緩存有哪幾種?

  • 分散式Memory Cache:只適合開發時應用
  • 分散式 Sql Server Cache
  • 分散式 Redis Cache:實際中使用這個最多

13.怎麼使用Readis分散式緩存?

  • 安裝Redis(使用Docker安裝)

image.png
image.png
連接、運行Redis
image.png

  • 在VS項目中安裝Redis

image.png

  • 在【Startup.cs】的【ConfigureService】方法中進行註入。

image.png

  • 在Controller中構造函數依賴註入

image.png

  • 使用分散式緩存

image.png


14.Response緩存(響應緩存、客戶端緩存)

  • 基於Header
  • 客戶端緩存
  • 使用ResponseCache這個Attribute

15.Reponse緩存參數?

  • Location:設置緩存在哪
  • Duration:設置緩存時間的長短
  • NoStore:不應該設為緩存
  • VaryByHeader:設置通過檢查哪個Header的值決定緩存

16.如何使用Reponse緩存?

  • 在【Startup.cs】註冊Reponse緩存

image.png

  • 在控制器中寫代碼;

image.png
也可以使用之前註冊的
image.png


17.壓縮

  • 壓縮傳輸的數據:1k以上的數據,如CSS、JS等可以進行壓縮;

如何使用呢?
(1)在【Program.cs】中【ConfigureServices】方法中註冊服務
image.png
(2)在【Program.cs】中【Configure】使用服務
image.png
沒介紹完,看文檔...


五、VSTS(後改名:Azure DevOps)

1.Azure DevOps

  • Saas
  • 完整的DevOps的解決方案
  • 與技術無關
  • 基於Azure
  • 集成開發團隊的環境

2.Azure DevOps組件

  • 源碼控制
  • 計劃
  • CI
  • 發佈管理
  • 測試
  • ...

3.CI-Continuouts Integeration(持續集成)


4.Azure Devops -CI

  • Build連接到測試,工作項...
  • 宿主代理
  • 針對報告
  • 支持多種語言憑他

上一章節:https://www.cnblogs.com/kimiliucn/p/17611047.html
原文鏈接:https://www.cnblogs.com/kimiliucn/p/17616708.html

版權聲明:本文為原創文章,版權歸 [西瓜程式猿] 所有,轉載請註明出處,有任何疑問請私信咨詢。
原文鏈接:https://www.cnblogs.com/kimiliucn/p/17616708.html

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

-Advertisement-
Play Games
更多相關文章
  • AbstractRoutingDataSource是Spring框架中的一個抽象類,可以實現多數據源的動態切換和路由,以滿足複雜的業務需求和提高系統的性能、可擴展性、靈活性。 ...
  • 源碼請到:自然語言處理練習: 學習自然語言處理時候寫的一些代碼 (gitee.com) 數據來源:norvig.com/big.txt 貝葉斯原理可看這裡:機器學習演算法學習筆記 - 過客匆匆,沉沉浮浮 - 博客園 (cnblogs.com) 一、數據預處理 將輸入的數據全部變為小寫方便後續處理 de ...
  • 隨著互聯網的發展項目中的業務功能越來越複雜,有一些基礎服務我們不可避免的會去調用一些第三方的介面或者公司內其他項目中提供的服務,但是遠程服務的健壯性和網路穩定性都是不可控因素。 在測試階段可能沒有什麼異常情況,但上線後可能會出現調用的介面因為內部錯誤或者網路波動而出錯或返回系統異常,因此我們必須考慮 ...
  • 在mybatis中,我們在insert操作之後,可以獲取到自增主鍵的值,這個需要我們用到 INSERT INTO lawyer_id_offset (kgid) VALUES (#{kgid}) ``` # java中調用它 > 註意,這裡有個坑,獲取自增主鍵,不是獲取mapper的返回值,而是從當 ...
  • 字元串轉數字的用途和場景很多,其中主要包括以下幾個方面: 1. 數據清洗:在進行數據處理時,經常會遇到一些數據類型不匹配的問題,比如某些列中的字元串類型被誤認為是數字類型,此時需要將這些字元串類型轉換為數字類型,才能進行後續的數值計算或統計分析。 2. 數據整理:有時候輸入的原始數據可能存在格式問題 ...
  • [toc] # 簡介 - 高性能、開源的通用 RPC 框架 - 實現不同語言相互調用 - [官網](https://grpc.io/) - [Protobuf 消息參考](https://learn.microsoft.com/zh-cn/aspnet/core/grpc/protobuf?view ...
  • ## 前言: 上一篇分分享了[基於阿裡雲實現的簡訊驗證碼](https://www.cnblogs.com/wml-it/p/17613232.html)文章,考慮到為了防止登錄時,非人工操作,頻繁獲取驗證碼,趁熱打鐵,現在添加了圖片驗證碼服務功能。借鑒網上傳統的做法,把實現這兩個驗證的功能做成有個 ...
  • 公司有一個控制台應用程式,在關閉控制台應用程式視窗前,想處理一下業務邏輯。還有比如誤操作關閉了,或者像消息隊列啟動了發送消息提醒,那關閉了視窗代表控制台應用銷毀了,也需要發送消息通知。那這個時候添加關閉視窗事件就派上用場了。 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...