原创 全新升級的AOP框架Dora.Interception[4]: 基於Lambda表達式的攔截器註冊方式

如果攔截器應用的目標類型是由自己定義的,Dora.Interception(github地址,覺得不錯不妨給一顆星)可以在其類型或成員上標註InterceptorAttribute特性來應用對應的攔截器。如果對那個的程序集是由第三方提供的呢

原创 全新升級的AOP框架Dora.Interception[3]: 基於特性標註的攔截器註冊方式

在Dora.Interception(github地址,覺得不錯不妨給一顆星)中按照約定方式定義的攔截器可以採用多種方式註冊到目標方法上。本篇文章介紹最常用的基於“特性標註”的攔截器註冊方式,下一篇會介紹另一種基於(Lambda)表達式的註

原创 全新升級的AOP框架Dora.Interception[2]: 基於約定的攔截器定義方式

Dora.Interception(github地址,覺得不錯不妨給一顆星)有別於其他AOP框架的最大的一個特點就是採用針對“約定”的攔截器定義方式。如果我們爲攔截器定義了一個接口或者基類,那麼攔截方法將失去任意註冊依賴服務的靈活性。除此之

原创 全新升級的AOP框架Dora.Interception[1]: 編程體驗

多年之前利用IL Emit寫了一個名爲Dora.Interception(github地址,覺得不錯不妨給一顆星)的AOP框架。前幾天利用Roslyn的Source Generator對自己爲公司寫的一個GraphQL框架進行改造,性能得到

原创 ASP.NET Core的幾種服務器類型[共6篇]

作爲ASP.NET CORE請求處理管道的“龍頭”的服務器負責監聽和接收請求並最終完成對請求的響應。它將原始的請求上下文描述爲相應的特性(Feature),並以此將HttpContext上下文創建出來,中間件針對HttpContext上下文

原创 ASP.NET Core高性能服務器HTTP.SYS

如果我們只需要將ASP.NET CORE應用部署到Windows環境下,並且希望獲得更好的性能,那麼我們選擇的服務器類型應該是HTTP.SYS。Windows環境下任何針對HTTP的網絡監聽器/服務器在性能上都無法與HTTP.SYS比肩。一

原创 ASP.NET Core 在 IIS 下的兩種部署模式

KestrelServer最大的優勢體現在它的跨平臺的能力,如果ASP.NET CORE應用只需要部署在Windows環境下,IIS也是不錯的選擇。ASP.NET CORE應用針對IIS具有兩種部署模式,它們都依賴於一個IIS針對ASP.N

原创 KestrelServer詳解[3]: 自定義一個迷你版的KestrelServer

和所有的服務器一樣,KestrelServer最終需要解決的是網絡傳輸的問題。在《網絡連接的創建》,我們介紹了KestrelServer如何利用連接接聽器的建立網絡連接,並再次基礎上演示瞭如何直接利用建立的連接接收請求和回覆響應。本篇更進一

原创 KestrelServer詳解[2]: 網絡連接的創建

《註冊監聽終結點(Endpoint)》已經詳細講述瞭如何使用KestrelServer,現在我們來簡單聊聊這種處理器的總體設計和實現原理。當KestrelServer啓動的時候,註冊的每個終結點將轉換成對應的“連接監聽器”,後者在監聽到初始

原创 KestrelServer詳解[1]:註冊監聽終結點(Endpoint)

具有跨平臺能力的KestrelServer是最重要的服務器類型。針對KestrelServer的設置均體現在KestrelServerOptions配置選項上,註冊的終結點是它承載的最重要的配置選項。這裏所謂的終結點(Endpoint)與“

原创 一個簡單的模擬實例說明Task及其調度問題

Task對於.NET的重要性毋庸置疑。通過最近的一些面試經歷,發現很多人對與Task及其調度機制,以及線程和線程池之間的關係並沒有清晰的認識。本文采用最簡單的方式模擬了Task的實現,旨在說明Task是什麼?它是如何被調度執行的?源代碼從這

原创 ASP.NET Core 6框架揭祕實例演示[28]:自定義一個服務器

作爲ASP.NET Core請求處理管道的“龍頭”的服務器負責監聽和接收請求並最終完成對請求的響應。它將原始的請求上下文描述爲相應的特性(Feature),並以此將HttpContext上下文創建出來,中間件針對HttpContext上下文

原创 ASP.NET Core 6 Minimal API的模擬實現

Minimal API僅僅是在基於IHost/IHostBuilder的服務承載系統上作了小小的封裝而已,它利用WebApplication和WebApplicationBuilder這兩個類型提供了更加簡潔的API,同時提供了與現有API

原创 ASP.NET Core 6框架揭祕實例演示[26]:跟蹤應用接收的每一次請求

很多人可能對ASP.NET Core框架自身記錄的診斷日誌並不關心,其實這些日誌對糾錯排錯和性能監控提供了很有用的信息。如果需要創建一個APM(Application Performance Management)系統來監控ASP.NET

原创 ASP.NET Core 6框架揭祕實例演示[25]:配置與承載環境的應用

與服務註冊一樣,針對配置的設置同樣可以採用三種不同的編程模式。第一種是利用WebApplicationBuilder的Host屬性返回的IHostBuilder對象,它可以幫助我們設置面向宿主和應用的配置。IWebHostBuilder接口