原创 MQTT 控制報文格式--CONNECT 連接請求

客戶端與服務器建立雙向連接之後由客戶端首先使用此報文與服務器建立MQTT連接,該報文定義了創建MQTT連接的二進制內容。 一個網絡連接種,客戶端只能發送一次此報文給服務端。 CONNECT報文(數據包)包含3個部分 固定包頭 可變包頭

原创 使用 Expression (表達式樹)動態構造Lambda 表達式

簡介 有些時候,我們需要動態構建一個比較複雜的查詢條件,傳入數據庫中或者對集合進行查詢。而條件本身可能來自前端請求,或者配置文件。那麼使用C# 的表達式目錄樹動態構建Lambda 就可以派上用場。 一個案例 有這樣一個需求: 我們有這樣一個

原创 使用System.Diagnostic.DiagnosticListener 實現對應用程序的監聽

1. System.Diagnostics概述 System.Diagnostics 是一個偏底層的命名空間,有一系列API,由Runtime 層提供,應用層可以通過它與系統集成、事件日誌、以及性能計數器進行交互。 在.NetCore 源碼

原创 行爲型模式-觀察者模式的實現(C#)

1. 定義 Define a one-to-many dependency between objects so that when oneobject changes state, all its dependents are notif

原创 7. 使用IdentityServer4 授權碼模式爲SPA客戶端授權

1.概述 在之前的案例中實現了OAuth2 的三種模式,本例將基於上一個示例的SPA客戶端實現 授權碼模式 授權。 授權碼模式比隱式模式安全級別更高一點,因爲多了一次根據授權碼獲取access_token的交互。並且Identity

原创 IdentityServer 4 實戰

目錄 1. AspNetCore 實現JWT(使用Microsoft.AspNetCore.Authentication.JwtBearer) 2. 使用IdentityServer4 實現 OAuth2 ClientCrede

原创 5. 使用IdentityServer4 實現 基於OIDC 的內部MVC客戶端認證 - 實現Consent

1. 概述 本例在上一個示例的基礎上,爲客戶端登錄過程增加Consent 確認過程. Consent 頁面適合外部客戶端登錄時需要我們授權中心授權的場景。 本示例繼續使用上一個示例中隱式授權碼(Implicit)模式,當用戶訪問

原创 4. 使用IdentityServer4 實現 基於OIDC 的內部MVC客戶端認證

1. 概述 上一個實例 中實現了簡單的 ResourceOwnerPassword 授權. 本例將使用IdentityServer4 實現內部系統的單點登錄,讓組織內部的MVC 客戶端使用認證中心的登錄頁實現登錄,使用的是OAuth

原创 3. 使用IdentityServer4 實現ResourceOwnerPassword 授權模式

概述 上一個實例 中實現了最簡單的 ClientCredential 模式,這種授權模式通常適用於內部後臺API簡單授權。 本實例將實現基於IdentityServer4 實現基於用戶名密碼的授權模式,這一模式適用於與認證服務屬於

原创 2. 使用IdentityServer4 實現 OAuth2 ClientCredential 模式

概述 OAuth2 的幾種角色和4中授權模式此處不再贅述,可以查看大神的文章 http://www.ruanyifeng.com/blog/2019/04/oauth-grant-types.html 本例將實現最簡單的ClientCe

原创 AspNetCore 2.1 中的Controller 總結

概述 在AspNetCore 項目中,我們首先使用的類就是Controller,Controller表示MVC中的C,用於協調M(Model)和V(View)。 我們在使用VS創建Web Api或 Web Mvc模板項目時,微軟提供了幾個C

原创 瀏覽器內核歷史

瀏覽器內核也稱爲渲染引擎,是瀏覽器最重要的部分。內核負責對網頁語法的解釋。目前存在的主要的內核有Trident、Gecko、Webkit、blink四個。下表介紹了主流的瀏覽器內核及開發公司、目前使用這些內核的瀏覽器。 內核名稱 開發

原创 理解.Net中的時間

前言 如果在你的項目中只使用Datetime 足以滿足一切需求,那你可能不需要點亮關於時間的技能點; 一旦你需要參與到一些國際化項目或者與定時調度相關的項目,則有必要對.Net中的時間處理方式進行一些系統的瞭解。 背景知識 • 時區:由於世

原创 在AspNetCore 中執行長任務--一個簡易的後臺服務隊列

背景 在做離線數據處理時,需要處理的數據量比較大,邏輯很複雜,需要的資源比較多,所以無法立即得到結果,並且客戶端也不需要立即得到結果。這種處理任務可以稱爲 後臺任務 或者 “長任務”。 在 .NetCore 2.0 以前,我們是無法通過We

原创 1. AspNetCore 實現JWT(使用Microsoft.AspNetCore.Authentication.JwtBearer)

概述 在AspNetCore 中實現Jwt比較簡單,使用Microsoft.AspNetCore.Authentication.JwtBearer 庫,再加幾行代碼即可. 步驟(2.x/3.x通用) 1.新建一個AspNetCore Web