國內文章
EF Core性能優化技巧
https://www.cnblogs.com/baibaomen-org/p/18338447
這篇文章介紹了在代碼層面上優化EF Core實例池和拆分查詢的方法。首先,文章建議使用DbContext實例池來重複利用實例,避免資源浪費,並提供相關使用示例。其次,文章討論了笛爾卡乘積對複雜查詢性能的影響,並推薦使用拆分查詢來優化SQL語句的執行。通過具體的代碼示例和生成的SQL對比,文章詳細説明了如何應用這些優化方法。
.NET 高性能緩衝隊列實現 BufferQueue
https://www.cnblogs.com/eventhorizon/p/18331018
BufferQueue 是一個用 .NET 編寫的高性能緩衝隊列,支持多線程併發操作。支持創建多個 Topic 和 Consumer Group,允許負載均衡和批量消費,支持 pull 和 push 模式。使用示例展示瞭如何通過 Nuget 安裝和配置服務。BufferQueue 能有效處理生產者和消費者速度不一致的問題。
.NET 權限工作流框架 TOP 榜
https://www.cnblogs.com/1312mn/p/18331216
這篇文章介紹了一款基於.NET權限管理及快速開發框架。該框架採用領域驅動設計,結合SqlSugar、EF等最新技術,支持多種ORM框架和數據庫,具有強大的權限控制功能和可視化設計工具。框架適用於中小企業,具有良好的擴展性。提供了多個預覽地址和開源鏈接,並且包含一些具體的功能模塊和技術架構的描述。
從C++看C#託管內存與非託管內存
https://www.cnblogs.com/ggtc/p/18333486
文章討論了進程內存管理,集中講述堆區內存分配。涉及C#、C++以及C語言中的內存分配方式及差異。C#通過new關鍵字申請的內存位於託管堆,GC負責管理垃圾回收;C++和C的內存分配在非託管堆,需手動釋放。文章詳細介紹了通過調用C++動態鏈接庫在C#中申請非託管堆內存的方法。
.NET8 Blazor 從入門到精通:(一)關鍵概念
https://www.cnblogs.com/timefiles/p/18338176
本文介紹Blazor的關鍵概念,包括項目模板、Razor語法、依賴注入、注入配置、HeadOutlet組件、@code分離、Blazor調試和CSS隔離。通過多個示例,解釋瞭如何在Blazor項目中實現這些功能。文章還提到了學習資料和課程推薦,詳細説明了每個知識點並附上參考資料。
基於EasyTcp4Net開發一個功能較為完善的去持久化聊天軟件
https://www.cnblogs.com/qwqwQAQ/p/18330325
作者介紹了自己開發的EasyTcp4Net工具庫,並基於此開發了一個聊天程序,包含文本發送、圖片發送、斷線重連等功能。本文詳細描述了數據包結構及其序列化方式,提供了示例代碼並解釋了消息傳遞的邏輯。同時,利用EasyTcp4Net的事件處理機制實現了斷線重連功能。
一文帶你瞭解CAP的全部特性,你學會了嗎?
https://www.cnblogs.com/savorboard/p/18333869/cap-features
這篇文章全面介紹了CAP的特性,包括消息發佈、事務消息、延遲消息、多線程處理、監控和與ASP.NET Core權限的集成等。文章旨在幫助新用户全面瞭解CAP的功能,以便在選型時提供參考。文中提到CAP不僅適用於分佈式事務,還在消息處理方面表現出色,且兼容性和穩定性良好。CAP誕生於2016年,目前在Github上有6500+ Star和110+貢獻者,NuGet下載量超800萬次。
.NET 開源快捷的數據庫文檔查詢和生成工具
https://www.cnblogs.com/1312mn/p/18333223
SmartSQL是一款專為.NET平台設計的開源數據庫文檔工具,簡化了數據庫文檔查詢、生成和管理的流程。它支持多種數據庫和文檔格式,能自動生成詳盡的數據庫文檔,確保信息的時效性和準確性。本文介紹了SmartSQL的功能特性及其實際應用案例,並展示瞭如何利用該工具優化數據庫文檔管理。
Net8將Serilog日誌推送ES,附視頻
https://www.cnblogs.com/OrcCoCo/p/18334274
文章展示了Serilog在.NET 8項目中的實踐,包括日誌區分存儲、AOP日誌記錄、EF日誌記錄,並推送至Elastic Search。作者從實際代碼出發,介紹了相關環境準備和實現步驟。文中詳細描述瞭如何配置Program.cs文件以實現上述功能,通過引用Autofac和Serilog,設置單例模式配置及日誌記錄器的實現。
.NET 結果與錯誤處理利器 FluentResults
https://www.cnblogs.com/1312mn/p/18336221
在項目開發中,處理方法返回結果非常重要。傳統方法如異常或返回布爾值雖然有效但缺乏直觀性。FluentResults庫優化了這一過程,使操作結果傳遞更加自然易懂,提高代碼可讀性與維護性。它不僅集中一致地處理錯誤,還提升了代碼結構和邏輯的流暢性。FluentResults是.NET環境中廣泛使用的庫,通過鏈式調用,可以優雅地處理結果和錯誤,並支持創建包含成功、錯誤、警告或信息的對象。
概述C#中各種類型集合的特點
https://www.cnblogs.com/ayic/p/18334908
在C#中,集合用於存儲和操作一組數據項,位於 System.Collections 和 System.Collections.Generic 命名空間中。System.Collections 包含非泛型集合,如 ArrayList、Hashtable、Stack 和 Queue 等,這些集合缺乏類型安全性。System.Collections.Generic 包含泛型集合,如 List、HashSet、Dictionary、SortedDictionary、Queue、Stack 和 LinkedList 等,這些集合確保類型安全性。
SourceGenerator 生成db to class代碼優化結果記錄 二
https://www.cnblogs.com/fs7744/p/18340422
文章探討了如何通過不使用迭代器、利用span、ArrayPool和預生成hashcode等方法優化Dapper AOT的性能。使用BenchmarkDotNet進行性能測試,結果考慮了jit優化和統計學處理。測試數據採用手動mock方式,避免外部因素影響。
一款基於Fluent設計風格、現代化的WPF UI控件庫
https://www.cnblogs.com/Can-daydayup/p/18333471
本文介紹了一款基於Fluent設計風格的WPF UI控件庫,包括其主要功能和使用方法。WPF提供靈活佈局、數據綁定等,適用於構建Windows應用。文中提到項目源碼、控件演示方法和開源地址,並鼓勵讀者關注和支持該項目。
C# 多線程環境下控制對共享資源訪問的辦法
https://www.cnblogs.com/INetIMVC/p/18330485
本文介紹了C#中幾種同步機制:Monitor、Mutex、ReaderWriterLockSlim、Semaphore和SemaphoreSlim。Monitor通過Enter和Exit方法提供排他鎖,適合粗粒度同步。Mutex是操作系統對象,支持跨進程同步,但性能開銷較大。ReaderWriterLockSlim實現讀寫分離鎖,適合讀多寫少場景,但比較複雜。Semaphore控制同時訪問資源的線程數量,使用靈活。SemaphoreSlim是輕量級信號量,開銷較小,更適合頻繁資源訪問。
支付寶退款和結果查詢接口簡單實現(.Net 7.0)
https://www.cnblogs.com/hnzhengfy/p/18330730/alipay_refunds
本文介紹如何在 .Net 平台上集成支付寶的退款和退款狀態查詢接口,包括引入必要的 SDK,提供公鑰和私鑰設置,配置請求參數,並通過示例代碼展示接口調用過程。文章重點在於詳細講解配置方法和注意事項,以便開發者能夠快速上手併成功實現對接。
使用 C# 和 ONNX 來玩轉Phi-3 SLM
https://www.cnblogs.com/shanyou/p/18342014
文章詳細介紹了微軟推出的小型語言模型Phi-3 SLM及其在不同設備上的應用,強調了Phi-3與ONNX Runtime的結合,提升了AI模型的互操作性和性能。文章還具體説明了如何在C# .NET應用中使用Phi-3模型,並提供了相關示例和代碼説明,如模型加載、Prompt設定、生成Token和響應解碼等。最後介紹了Phi-3的不同版本和從HuggingFace下載模型的方法。
SemanticKernel/C#:檢索增強生成(RAG)簡易實踐
https://www.cnblogs.com/mingupupu/p/18336055
檢索增強生成(RAG)結合檢索技術和生成模型,用於自然語言處理任務。它通過從外部知識庫中檢索信息並結合輸入文本生成更準確的輸出,適用於需要大量背景知識的任務。文中示例展示大語言模型如何使用私有文檔回答特定問題。實現步驟包括將文本轉化為向量,存入數據庫,並構建一個ISemanticTextMemory,使用硅基流動平台的Qwen模型進行實踐。
Blazor Web 應用如何實現Auto模式
https://www.cnblogs.com/known/p/18340707
本文介紹了Blazor Web應用Auto交互呈現模式的實現方案,基於Known框架,包含前後端共用項目、客户端項目及相應實現步驟。前後端共用項目Sample定義系統實體類及服務接口。客户端項目Sample.Client引用WebAssembly和Castle依賴實現Http動態代理,包括項目工程文件配置、HttpClientInterceptor類,實現Http請求的動態代理,及Program.cs文件中的客户端配置。
.NET 窗口/屏幕截圖
https://www.cnblogs.com/kybs0/p/18330803
文章介紹瞭如何通過GDI從窗口或屏幕獲取截圖,並提供了詳細的代碼示例,包括從桌面句柄獲取設備上下文,創建兼容的設備上下文和位圖句柄,並使用BitBlt進行像素複製。
雲原生 .NET Aspire 8.1 新增對 構建容器、編排 Python的支持
https://www.cnblogs.com/shanyou/p/18331445
.NET Aspire是用於雲原生應用開發的框架,支持構建、測試和部署微服務、容器和無服務器架構。2024年7月發佈的8.1版本是該平台的首次重大更新,新增了容器鏡像的構建和Python代碼的編排功能。AddDockerfile(...)方法自動構建和定製Docker文件,而AddPythonProject(...)方法支持多語言微服務架構,簡化Python服務的啓動。新版本還提供了容器化擴展的新資源類型和組件,改進了測試和指標示例,提升了實例ID名稱的可讀性。
架構演化思考總結(2)
https://www.cnblogs.com/TonyCode/p/18335588
本文討論命令模式在架構設計中的應用,強調其在簡化複雜邏輯管理、提升代碼複用性和便於協作開發方面的優勢。通過具體實例展示如何用命令模式封裝操作邏輯,並介紹了添加參數和撤銷功能的實現方法。文章內容豐富,示例詳細,適合開發者參考。
SemanticKernel/C#:使用Ollama中的對話模型與嵌入模型用於本地離線場景
https://www.cnblogs.com/mingupupu/p/18339290
文章介紹了在SemanticKernel/C#中如何使用Ollama的對話模型和嵌入模型用於本地離線場景,詳細講解了模型下載、初始化、設置及調用的方法,並提供了一些代碼示例。文章還提到,由於嵌入模型不兼容OpenAI格式,需要自己實現接口。作者推薦了一個GitHub項目,可以直接用已實現的包來減少開發工作。
使用Aspire優雅的進行全棧開發——WinUI使用Semantic Kernel調用智普清言LLM總結Asp.Net Core通過Playwright解析的網頁內容
https://www.cnblogs.com/GreenShade/p/18341903
這篇博客記錄了作者在學習語義內核和Aspire進行全棧開發的實踐。內容包括使用Asp.Net Core WebApi、Playwright庫獲取Bing搜索結果、WinUI編寫客户端結合語義內核、Blazor創建後台管理頁面等。作者選擇這些技術是因為.Net相關性和新技術實踐,並詳細説明了每種工具的使用理由。代碼示例展示瞭如何使用Playwright模擬用户操作來獲取搜索結果並解析成JSON數據。
一個基於 SourceGenerator 生成 從 dbReader轉換為 class 數據的性能測試實驗
https://www.cnblogs.com/fs7744/p/18332993
文章介紹了作者基於SourceGenerator生成從dbReader轉換為class數據的測試,對比了生成代碼與動態生成代碼的差距,尤其針對泛型類型和匿名類型處理進行了探討。作者通過示例代碼展示了生成代碼的實現和測試結果。
架構演化學習思考(3)
https://www.cnblogs.com/TonyCode/p/18337666
本文繼續探討命令模式,詳細介紹了經典命令模式的實現,包括Command、ConcreteCommand、Invoker、Receiver等角色,並通過代碼示例説明其應用。作者還用商品購買案例演示了這些角色的具體實現。最終,文章總結了命令模式在架構設計中的應用價值,例如解耦Invoker和Receiver,支持命令擴展等。通過具體例子對“架構”概念進行詮釋,並探討了命令模式與觀察者模式的區別。
.NET 8 通用權限框架 前後端分離,開箱即用
https://www.cnblogs.com/1312mn/p/18337641
Admin.NET是基於.NET 8開發的通用權限框架,前端使用Vue3/Element-plus。該平台整合最新技術,支持多租户、緩存、數據校驗等功能,簡潔易上手,適用於中小企業快速開發。它兼容國產操作系統和數據庫,滿足等級保護測評要求,具備豐富的功能模塊,如用户管理、日誌管理、任務調度等。推薦給需要提升開發效率的開發者。
SourceGenerator 生成db to class代碼優化結果記錄
https://www.cnblogs.com/fs7744/p/18338301
文章描述了優化代碼的方法,包括減少類型判斷和避免生成委託,但仍無法超越Dapper aot。作者提到提前做類型判斷並使用switch case減少判斷,且去除了委託生成使用,詳細列舉了優化前後的代碼片段。
使用 Alba 對 AspnetCore項目進行測試
https://www.cnblogs.com/vipwan/p/18340537
本文介紹了在AspnetCore生態系統中使用Alba進行集成測試的方法。詳細描述瞭如何安裝Alba包,並創建一個簡單的ASP.NET Core應用進行演示。接着,通過xUnit展示瞭如何使用AlbaHost配置測試場景並進行斷言。還包括了POST請求的鏈式語法風格、自動序列化和反序列化支持,以及處理鑑權認證的封裝。
英語.Net多語言開發中的問題
https://www.cnblogs.com/zhangchen-trunk/p/18342375
多語言開發成本高,解決方法常涉及文化差異,如浮點數與字符比較。本文通過代碼示例展示文化差異的影響,並建議修改系統賬户語言設置來解決問題。
主題
IdentityServer 安全補丁 (CVE-2024-39694) - Duende Software Blog
https://blog.duendesoftware.com/posts/20240731_security_patch
Duende.IdentityServer 的安全修復程序已發佈。
此版本修復了一個開放重定向漏洞。 除了漏洞的細節外,本文還談到了從這次應對中吸取的教訓。
發佈 發佈 v2.65.0 · grpc/grpc-dotnet
https://github.com/grpc/grpc-dotnet/releases/tag/v2.65.0
grpc-dotnet v2.65.0 發佈
此版本包括版本檢查和減少 Windows Server 上的線程池耗盡等改進。
使用數據保護的默認配置輕鬆將 .NET 應用部署到 Azure 容器應用
https://techcommunity.microsoft.com/t5/apps-on-azure-blog/eas...
Azure 容器應用在預覽版中支持 ASP.NET 數據保護。
現在,可以使用單個設置配置在多個副本上運行時所需的數據保護。 支持因 .NET 版本而異。
文章、幻燈片等
使用 .NET 和 ML.NET 檢測異常:實用指南
https://dev.to/alisson_podgurski/detecting-anomalies-with-net-and-mlnet-a-practical-guide-ng5
瞭解如何使用 ML.NET 實現異常情況檢測。
使用 C# Semantic Kernel 和 Ollama 在您自己的設備上運行 Phi-3
https://zenn.dev/microsoft/articles/semantickernel-dotnet-phi...
瞭解如何結合使用語義核 (.NET) 和 Ollama 在本地環境中運行 Phi-3 模型。
點洞察 | 2024 年 8 月 | .NET 工具博客
https://blog.jetbrains.com/dotnet/2024/08/01/dotinsights-augu...
JetBrains .NET 2024 年 8 月摘要。
.NET 8 和 .NET 9 中的 SearchValues
https://medium.com/codenx/searchvalues-in-net-8-and-net-9-42b...
描述並使用 .NET 8 中引入的 SearchValues 類。 本文還提到了 .NET 9 中的改進。
使用 EventPipe 跟蹤分配第 2 部分 — 在沒有 TraceLog 的情況下讀取調用堆棧
https://medium.com/@ocoanet/tracing-allocations-with-eventpip...
嘗試使用 EventPipe 進行跟蹤以讀取調用堆棧。
使用 Ollama 和 AutoGen.Net 的本地模型進行工具調用
https://dev.to/littlelittlecloud/tool-call-with-local-model-using-ollama-and-autogennet-3o64
瞭解如何使用 Ollama 和 AutoGen.Net 從本地模型調用工具。
增強 F# Interactive 中的 #help - .NET 博客
https://devblogs.microsoft.com/dotnet/enhancing-help-in-fsi/
介紹在 .NET 9 的 F# Interactive 中添加的 #help 指令。
.NET 8 Web API,使用 Elasticsearch 和 Kibana
https://medium.com/@faulycoelho/net-web-eb-api-with-elasticse...
使用 ASP.NET Core、Elasticsearch 和 Kibana 的簡單日誌可視化實現。
Microsoft.Extensions.Configuration 和 Microsoft.Extensions.Options 的使用介紹 - Qiita
https://qiita.com/sakatuba@github/items/3908409d48004b19c98f
簡要説明如何使用 Microsoft.Extensions.Configuration 和 Microsoft.Extensions.Options 以及它們的作用。
使用本機庫互操作為 .NET MAUI 創建綁定 - .NET Blog
https://devblogs.microsoft.com/dotnet/native-library-interop-...
Native Library Interop for .NET 介紹如何使用 MAUI 輕鬆實現本機綁定。 本文使用圖表庫實現了一個適用於 iOS/Android 的庫。
ASP.NET Core MVC 中的高級路由技術,用於大規模應用程序
https://medium.com/@bhavinmoradiya99/advanced-routing-techniq...
它簡要介紹了 ASP.NET Core 的路由控制的一些實現模式。
[Office] 使用 msi 分發 VSTO 加載項
https://zenn.dev/shimarisu_121/articles/09af3ff2930c99
提供有關以 msi 格式打包和分發 VSTO 外接程序的分步説明。
使用 Sign CLI 對 VSIX 包進行簽名 - Visual Studio Blog
https://devblogs.microsoft.com/visualstudio/sign-vsix-package...
瞭解如何使用 sign 命令行工具對 VSIX 包進行簽名。
創建一個 .NET PlantUML Markdown 渲染擴展
https://weblog.west-wind.com/posts/2024/Jul/29/Create-a-Plant...
在 Markdown 預覽中呈現 PlantUML 的擴展的實現。 本文介紹如何生成 URL 以在 PlantUML 服務器上呈現圖像。
我修復過的最糟糕的 .NET 錯誤
https://petabridge.com/blog/worst-dotnet-bug/
遇到的問題以及如何處理 Akka.NET 中困難的分佈式系統/分片問題。
今天的 C# 中的單例模式不是你爸爸的模式!
https://blog.postsharp.net/singleton
單例(包括 DI)的實現模式,以及如何驗證需要單例的類的構造函數調用位置。
.Net Aspire 中的自定義反向地理編碼資源和容器啓動依賴項
https://dev.to/syamaner/building-a-custom-reverse-geocoding-resource-for-net-aspire-2n9o
使用 .NET Aspire 的本地託管 Nominatim 進行地理編碼、反向地理編碼的説明。
ASP.NET Core 和 Entity Framework Core 的運行狀況檢查
https://khalidabuhakmeh.com/health-checks-for-aspnet-core-and...
瞭解 ASP.NET Core 的運行狀況檢查以及如何實施與 Entyty Framework Core 結合使用的運行狀況檢查。
Avalonia UI:使用 DataGrid 和轉換器增強您的應用程序
https://medium.com/@faruk.akyapak/avalonia-ui-enhance-your-ap...
瞭解如何使用 Avaloia 的 DataGrid。
創建僅限源的 NuGet 包
https://andrewlock.net/creating-source-only-nuget-packages/
Buri 用例:僅包含源代碼而不包含程序集的 NuGet 包,以及如何創建一個。
即將推出對 Azure.AI.OpenAI 和 OpenAI v2 的支持 | 語義核
https://devblogs.microsoft.com/semantic-kernel/support-for-az...
即將在語義內核中支持 Azure.AI.OpenAI 和 OpenAI v2。
本文介紹了更改後升級可能發生的情況以及如何處理。
誰寫了《藍屏死機》並不神秘,儘管有些人可能想讓你相信 - 舊事物
https://devblogs.microsoft.com/oldnewthing/20240730-00/?p=110062
網站、文檔等
推文
在 .NET 9 的 SignalR 中引入分佈式跟蹤。
https://x.com/jamesnk/status/1818928330810200330?s=12
std-uritemplate(.NET 版本)現已在 .NET Foundation 中提供。
https://x.com/dotnetfdn/status/1819368806000599405?s=12
談談即將推出的 Visual Studio 支持HTTP 請求文件中的請求變量的預覽版。
https://x.com/sayedihashimi/status/1819514959073603617?s=12
完整 CLR (.NET Framework) 需要一些時間來處理 Visual Studio 的 app.config(在讀取第一個 Buri 之前)。
https://x.com/davkean/status/1818207766642860259?s=12
版權聲明
- 國內板塊由 InCerry 進行整理 : https://github.com/InCerryGit/.NET-Weekly
- 其餘內容來自 Myuki WeekRef,由InCerry翻譯(已獲得授權) : https://github.com/mayuki/WeekRef.NET
由於筆者沒有那麼多時間對國內的一些文章進行整理,歡迎大家為《.NET週刊-國內文章》板塊進行貢獻,需要推廣自己的文章或者框架、開源項目可以下方的項目地址提交Issue或者在我的微信公眾號私信。
格式如下:
- 10~50字左右的標題
- 對應文章或項目網址訪問鏈接
- 200字以內的簡介,如果太長會影響閲讀體驗
https://github.com/InCerryGit/.NET-Weekly