.NET週刊【3月第2期 2024-03-17】

國內文章

開源.NET8.0小項目僞微服務框架(分佈式、EFCore、Redis、RabbitMQ、Mysql等)

https://www.cnblogs.com/aehyok/p/18058032

作者介紹了一個簡化版微服務框架,爲了簡單化省略了一些複雜功能。項目旨在建立一個可複用的基礎服務庫,減少重複工作。作者承認架構和思考上有不足,項目還在開發初期,歡迎建議。文章涵蓋了框架結構、實現的業務功能、依賴注入和控制反轉的方法與建議,並介紹了項目中雙token登錄及其代碼實現。

在winform中如何嵌入第三方軟件窗體✨

https://www.cnblogs.com/mingupupu/p/18058334

文章圍繞Win32 API的SetParent、FindWindow和ShowWindow函數的用法進行講解,分別介紹了函數的定義、參數意義與使用場景。文章還討論了Windows系統中句柄的概念,以及如何通過句柄管理資源。最後,示範瞭如何創建一個靜態類WindowManager來封裝相關的API調用,提升操作的便利性。

AI應用開發之路-準備:發起一個開源小項目 DashScope SDK for .NET

https://www.cnblogs.com/cmt/p/18052469

今年計劃基於Semantic Kernel + DashScope + Qwen開發面向開發者的AI應用。目前正在準備階段,並分享了開始遇到的問題。由於缺乏官方的DashScope的.NET SDK,決定自己開發併發起了一個開源小項目。已完成初步版本的DashScope SDK for .NET,併發佈於GitHub,期待社區貢獻。

.NET開源快速、強大、免費的電子表格組件

https://www.cnblogs.com/Can-daydayup/p/18074298

今天介紹的是ReoGrid,這是一個基於.NET的開源、快速、強大且免費的電子表格組件,可用於開發WinForm、WPF和Android平臺的應用程序。具有數據格式、凍結模式、大綱、公式計算功能,並支持圖表以及腳本執行等功能。它兼容Excel 2007 (.xlsx) 格式,提供了靈活的API和事件模型供開發者進行功能定製和擴展,遵循MIT許可證。ReoGrid的源碼和更多功能特性可以在其GitHub頁面查看,同時還被包含在C#/.NET/.NET Core優秀項目和框架精選列表中。

AI應用開發之路-準備:發起第2個開源小項目 SemanticKernel.DashScope

https://www.cnblogs.com/cmt/p/18069360

上週發佈的DashScope SDK for .NET的衍生項目SemanticKernel.DashScope已經開源,專注於Semantic Kernel大型模型應用開發,支持.NET等多個平臺。該項目已經支持function calling功能,同時,阿里雲DashScope開始收費。項目倉庫包含了兩個子項目:Cnblogs.SemanticKernel.Connectors.DashScope和Cnblogs.KernelMemory.AI.DashScope。前者實現了三個接口,後者提供了內存數據庫功能,都可以通過nuget安裝。示例代碼演示瞭如何與阿里雲大模型進行對話和內容抓取、數據處理等。

C# 操作國產數據庫【 人大金倉 】之四大模式

https://www.cnblogs.com/sunkaixuan/p/18055087

人大金倉是國產領先的數據庫之一,兼容多種數據庫模式如Oracle、PgSql、MySql和SqlServer,方便遷移。SqlSugar和人大金倉合作深入,不僅支持CRUD操作,還涵蓋存儲過程、Schema等特性。人大金倉R3與R6版本在安裝和配置上各有側重,並且通過SqlSugar可實現數據表操作。但存在一些問題,比如不支持Date類型只支持DateTime,以及兩種表模式(規茨表與駝峯表)的使用上有所不同。

C#版開源免費的Bouncy Castle密碼庫

https://www.cnblogs.com/Can-daydayup/p/18069116

BouncyCastle是一個由澳大利亞慈善組織開發的C#版開源、免費密碼學庫,可用於加強數據安全性和保護隱私信息。它提供多種密碼算法和協議的實現,如對稱加密、非對稱加密、哈希函數、數字簽名等。本文介紹瞭如何創建控制檯應用,安裝BouncyCastle包,並提供了AES、DES、RC4加密解密及哈希算法的使用示例。

使用ScottPlot庫在.NET WinForms中快速實現大型數據集的交互式顯示

https://www.cnblogs.com/Can-daydayup/p/18067442

本文教學瞭如何在.NET WinForms環境下利用ScottPlot類庫快速實現大型數據集的交互式展示,包括折線圖、柱狀圖、餅圖和散點圖等圖表。ScottPlot是一個免費開源的.NET繪圖庫,支持跨平臺使用。文中詳細展示了創建WinForms項目、安裝ScottPlot.WinForms包,以及各類型圖表的實現過程和最終效果。

從0開始入門智能知識庫和星火大模型,打造AI客服。

https://www.cnblogs.com/hejiale010426/p/18054498

FastWiki是一個開源的高性能知識庫系統,使用了Semantic Kernel、MasaFramework和MasaBlazor技術,支持智能搜索和大規模信息檢索。FastWiki提供容易部署的docker-compose文件,內置了PostgreSQL和向量插件。One-Api是一個將國內AI接口轉換爲openai接口格式的服務,用戶通過簡單的docker-compose配置和環境變量設置就能部署。同時需要向訊飛開放平臺申請Token進行測試。

C#實現圖片對比-支持圖片旋轉

https://www.cnblogs.com/kiba/p/18053616

儘管作者已經轉爲使用JAVA,但他推薦了一個叫做masuit的優秀開源項目,該項目不僅簡便,還提供了圖像特殊操作功能。通過masuit可以簡單地實現圖片之間的對比,例如翻轉和旋轉圖片。文章展示了添加masuit引用和使用C#代碼實現圖像對比的過程,其中涉及到的圖像處理是通過Masuit.Tools.Media和SixLabors.ImageSharp庫進行的。作者還測試了圖片比較的效率,發現速度可以在1秒以內。文章是原創內容,未經授權禁止轉載。

WPF開源的一款免費、開箱即用的翻譯、OCR工具

https://www.cnblogs.com/Can-daydayup/p/18062151

大姚分享了一款基於WPF的開源且免費使用的翻譯和OCR工具STranslate,該工具支持自定義全局快捷鍵和內置的快捷鍵操作,能夠進行文本翻譯和離線文字識別。STranslate的項目源碼可在GitHub或Gitee上下載,該項目也被收錄在C#/.NET/.NET Core優秀項目和框架精選中。此外,還介紹了DotNetGuide技術社區,這是一個面向.NET開發者提供資源和交流的開源社區。

排查 dotNET Core 程序內存暴漲的問題

https://www.cnblogs.com/myzony/p/18061108/troubleshooting-memory-surge-issues-in-dotnet-core-applications

新版本上線後出現內存和流量激增,通過在 Pod 容器內安裝 SDK 和 Dump 工具後,因權限問題無法獲取 Dump 文件。修改 Rollouts/Deployment 的 YAML 文件,增加 securityContext 後成功獲取 Dump 文件。分析 Dump 文件可使用多種工具,包括 dotnet-dump、Visual Studio 等。EEHeap -gc 命令用於查看 GC 堆的狀態,顯示了各代開始地址、分配和提交的大小等詳細信息。

.NET開源的兩款第三方登錄整合庫

https://www.cnblogs.com/Can-daydayup/p/18063995

大姚分享了兩款.NET開源的第三方登錄整合庫。其中MrHuo.OAuth支持國內外多個平臺,適用於.NET Core和.NET Framework 4.6;CollectiveOAuth支持更多平臺,兼容.NET Framework 4.5到4.6.2以及.NetCore 3.1。以上項目被收錄於C#/.NET/.NET Core優秀項目和框架精選中,旨在提升開發者瞭解行業動態和實踐效率。DotNetGuide技術社區則面向.NET開發者,提供學習資料、技術分享及問題解答,有助於.NET開發者成長。

.NET Core使用 CancellationToken 取消API請求

https://www.cnblogs.com/chenyishi/p/18075600

ASP.NET Core允許使用CancellationToken機制來處理在HTTP請求過程中由於用戶操作取消請求的場景。通過使用HttpContext.RequestAborted或依賴注入,開發者可以獲取CancellationToken,並在長時間運行的任務中使用它來判定何時終止任務,避免無用功。此外,還可以通過異常過濾器統一處理取消操作引發的異常,以改進代碼健壯性。

C#拾遺補漏之goto跳轉語句

https://www.cnblogs.com/Can-daydayup/p/18055426

本文介紹了C#中較少使用但功能強大的goto語句,包括其語法、使用方法及優缺點。goto語句可簡化複雜邏輯,直接跳出多層循環,但過度使用可能導致代碼難以理解、維護困難並潛在引入錯誤。文章提供了使用和不使用goto的代碼示例,以及簡述了一個面向.NET開發者的DotNetGuide技術社區。

在.NET程序中整合微軟的Playwright,使用 Playwright 的最佳實踐和技巧

https://www.cnblogs.com/wuhuacong/p/18055896

Playwright是個由微軟開發的開源的Web瀏覽器自動化測試工具,支持多瀏覽器、多平臺並支持多種語言,可以進行功能測試、性能測試等。特點包括用於編寫測試腳本、錄製回放、數據採集、表單操作、頁面截圖視頻錄製以及文件上傳下載等,並有詳盡的社區支持和文檔。編寫測試代碼時,Playwright提供了模擬瀏覽器用戶交互的API,並附有代碼示例演示如何使用。

.Net接口版本管理與OpenApi

https://www.cnblogs.com/ruipeng/p/18072151

本文針對開發人員如何在使用MinimalApis時添加Api版本控制進行介紹。首先強調了版本控制的重要性,它可以避免新功能的添加造成Api的中斷性變更。文中列舉了可能引發中斷性變更的行爲,緊接着介紹瞭如何使用aspnet-api-versioning包,在MinimalApis中實現版本控制。主要包括如何安裝相關的nuget包,以及配置Api版本控制細節,如默認版本設置、版本讀取方式、Response Header中版本信息的添加等。接着,給出了四種Api版本控制方式,並建議項目開發中選擇一種以便於維護。

記一次 .NET某設備監控自動化系統 CPU爆高分析

https://www.cnblogs.com/huangxincheng/p/18056337

一位朋友向博主求助其系統偶發性CPU使用率爆高的問題。博主使用WinDbg工具通過!tp命令確認了CPU使用率達到100%。通過!t命令和線程堆棧分析確認了是垃圾回收(GC)導致CPU使用率高。研究了線程棧後發現一個線程在進行大量的數組(Array)操作,觸發了垃圾回收。

深入解析ASP.NET Core MVC應用的模塊化設計[上篇]

https://www.cnblogs.com/artech/p/18052326/asp-net-core-mvc-moduling

ASP.NET Core MVC的“模塊化”設計允許控制器定義在任意模塊中,可在運行時動態加載卸載。文章介紹模塊化設計思想、重要組件和實現機制,如ApplicationPart與AssemblyPart抽象描述應用組成,ApplicationPartFactory工廠類創建ApplicationPart對象,以及ApplicationPartManager管理應用部分。探究了從程序集中提取有效控制器類型的過程,爲下一篇文章介紹如何實現分散定義Controller打下基礎。

探究WPF中文字模糊的問題:TextOptions的用法

https://www.cnblogs.com/czwy/p/18068823

網友關於WPF文字模糊的問題,通常與像素對齊和抗鋸齒有關。WPF使用設備無關單位繪圖,轉換爲物理像素時會產生抗鋸齒效果。TextOptions附加屬性提供文本顯示方式的三個設置選項:TextFormattingMode、TextHintingMode、TextRenderingMode,它們決定文本的佈局、渲染算法等。Ideal和Display的TextFormattingMode主要影響格式化文本的度量,而TextRenderingMode控制使用的抗鋸齒算法。ClearType技術可在LCD顯示器上增強文本清晰度。TextHintingMode設置靜態或動態文本的呈現行爲,Fixed模式適用於靜態質量,Animated模式針對動畫。相關信息包含在一些官方博客和文檔中。

告別繁瑣!1分鐘帶你構建RabbitMQ消息應用

https://www.cnblogs.com/digital-college/p/18075317

本文介紹瞭如何在.Net環境下使用RabbitMQ消息隊列,並提供了簡明的使用方法。包括如何發送消息、獲取消息和使用消息。需要通過NuGet安裝DeveloperSharp.RabbitMQ包,根據.Net Core和.Net Framework環境配置不同的鏈接信息。文中還提供了一個簡單的示例來展示如何發送和處理消息,並且對SendMessage、GetMessage、UseMessage等方法進行了詳細的功能說明。

世界銀行使用.NET 7開發的免費電子問卷製作系統Survey Solution

https://www.cnblogs.com/shanyou/p/18071727

Survey Solution是世界銀行數據部開發的開源電子問卷製作系統,具備製作問卷、數據採集、監控等多種功能,並能支持離線使用和在線雲服務。系統基於.NET平臺,可定製問卷驗證算法及通過API擴展功能,如數據質量控制、第三方數據庫鏈接等,並支持地理信息收集。系統包括Headquarter、Designer和Interviewer等組件。學習SS系統需要C#、CSS和閱讀英語能力,官方文檔、案例和用戶討論平臺是學習資源。

.NET Conf China 2023濟南站社區活動

https://www.cnblogs.com/tianqing/p/18063168

2023年3月3日,微軟MVP項目、山東財經大學管理科學與工程學院、膠東開發者社區和濟南.NET俱樂部共同舉辦了「.NETConfChina2023JiNanWatchParty:走進山財大—AI驅動下的應用智能化開發」活動。聚焦AI在應用智能化發展中的作用,探索AIGC技術,涵蓋結合SemanticKernel實現AI Agent、智能翻譯與數據分析、爲零售精準營銷賦能及.NET在雲技術等議題。特邀技術專家和社區領袖,結合高校與社區的產學研討論並舉辦課程設計會。此外,抽獎環節特別使用GPT-4大模型,展示AI應用潛力。

Asp .Net Core 系列:Asp .Net Core 集成 Hangfire+MySQL

https://www.cnblogs.com/vic-tory/p/18071514

Hangfire是一個.NET後臺任務調度框架,適合.NET Framework 4.5或以上、.NET Core 1.0或以上平臺。提供任務持久化、自動重試、可視化控制檯等功能。支持多種任務調度方式,易於集成和擴展。支持多種消息隊列如SQL Server、RabbitMQ和Redis。可通過Hangfire.AspNetCore和Hangfire.MySqlStorage兩個NuGet包與ASP.NET Core集成,實現使用MySQL作爲存儲,且支持查看和管理任務的Dashboard。還提供失火處理模式,如Relaxed、Strict、Ignorable等。案例展示了即發即棄、延遲和重複作業的使用方法。

.NET Aspire Preview 4 發佈!

https://www.cnblogs.com/shanyou/p/18074396

.NET Aspire是一個旨在改善.NET雲原生應用開發體驗的框架,提供服務發現、健康檢查等功能,支持快速創建或改造雲原生應用。新推出的.NET Aspire Preview 4版增加了Podman支持、界面改進、Entity Framework組件的改進等,提供了更多靈活性和便利性來開發分佈式雲原生應用程序,並支持與各種Azure資源的對接。

深入解析ASP.NET Core MVC的模塊化設計[下篇]

https://www.cnblogs.com/artech/p/18052365

ASP.NET Core MVC的模塊化設計允許將基本單元Controller定義在任意的模塊中,並支持動態加載和卸載。文章詳細介紹了多種將Controller分散定義到不同程序集中的實現方法,例如使用ApplicationPartAttribute特性、RelatedAssemblyAttribute特性以及ApplicationPartManager的註冊與應用。文章通過詳細的解決方案和代碼示例,向讀者展示瞭如何實現這些方案,並呈現了實際操作的界面輸出結果。

CYQ.Data 支持 DaMeng 達夢數據庫

https://www.cnblogs.com/cyq1162/p/18056471

達夢數據庫是中國自研的數據庫管理系統,具有高性能、高可靠性、高可擴展性和兼容性強等優點,適用於多種行業。CYQ.Data框架是一個支持.NET版本ORM解決方案,可與多種數據庫協作,並簡化數據層操作。CYQ.Data框架也開始支持達夢數據庫,提供易於引用的Nuget包,併兼顧多版本.NET支持。提供多種數據操作方法,包括無實體和實體操作,且擁有詳細文檔和教程。達夢數據庫以單數據庫多模式方式運作,與常規的多數據庫實例有所不同。

WPF --- 觸摸屏下的兩個問題

https://www.cnblogs.com/pandefu/p/18060368

文章介紹了WPF觸摸屏應用中的兩個問題:觸底反饋導致的界面抖動和某些控件無法通過觸摸或鼠標滑輪滾動頁面,以及它們的解決方案。觸底反饋問題通過附加屬性禁用ManipulationBoundaryFeedback事件解決;控件滾動問題則通過手動設置ScrollViewer的位置來解決。

C# 中使對象序列化/反序列化 Json 支持使用派生類型以及泛型的方式

https://www.cnblogs.com/ablewang/p/18068949

這篇文章主要討論了在C#中使用System.Text.Json庫進行對象的序列化與反序列化時,如何支持派生類型和泛型。作者首先介紹了序列化派生類型時可能遇到的問題,比如類型信息的丟失,並且解釋瞭如何通過[JsonDerivedType]特性來保留類型信息以實現正確的反序列化。然後,作者討論了對泛型類型進行序列化時遇到的困難和限制,提到System.Text.Json默認不支持泛型的序列化/反序列化,並展示了相關的異常信息。

並行化優化KD樹算法:使用C#實現高效的最近鄰搜索

https://www.cnblogs.com/deali/p/18065105

文章講述了使用C#基於並行計算優化KD樹算法實現高效的最近鄰搜索,介紹KD樹的數據結構與構建、搜索原理,並探討了距離計算。實證顯示,該優化提升了處理大數據集的速度與效率。還考慮了地球曲率對GPS座標計算影響,引入Haversine公式改善距離計算。

dotNet8 全局異常處理

https://www.cnblogs.com/ruipeng/p/18075123

本文介紹了在dotNet平臺中處理異常的多種機制,包括MVC的異常篩選器、管道中間件的try catch捕獲異常處理以及第三方解決方案例如Hellang.Middleware.ProblemDetails。特別強調了dotNet8引入的IExceptionHandler和UseExceptionHandler異常處理程序的lambda配置,結合dotNet7支持的ProblemDetail,爲異常處理提供了標準化方法。同時也示例瞭如何在WebApi項目中使用Problem Details來描述錯誤信息,並展示了UseDeveloperExceptionPage中間件在開發環境下的異常處理。

CYQ.Data 支持 KingbaseES人大金倉數據庫

https://www.cnblogs.com/cyq1162/p/18064173

KingbaseES是一個基於PostgreSQL開發的關係型數據庫管理系統,具備良好的可靠性、穩定性、兼容性和創新性,適合多種數據管理場景。CYQ.Data是一個高性能的.NET ORM框架,支持包括KingbaseES在內的多種數據庫,並通過持續更新強調其長期穩定性。CYQ.Data新增對國產數據庫的支持,通過github和nuget提供更新和版本兼容信息,簡化了數據層操作。

LoggerMessageAttribute 高性能的日誌記錄

https://www.cnblogs.com/chenyishi/p/18073599

.NET 6通過引入LoggerMessageAttribute類,使用源代碼生成器技術(source-generators),在編譯期間生成高性能的日誌記錄API。這消除了運行時的裝箱、臨時分配和數組拷貝,而且與傳統日誌記錄方法相比速度更快。LoggerMessageAttribute需在partial類和方法上使用,且在編譯時生成partial方法實現。此外,遵循適當的使用規則,源生成器方法也帶來結構化日誌保持、參數名稱自定義、原始數據傳遞無需複雜存儲等好處。

使用C#和MemoryCache組件實現輪流調用APIKey以提高併發能力

https://www.cnblogs.com/deali/p/18063568

本文介紹了使用C#語言和MemoryCache組件來輪流調用多個API Key,從而提高系統的併發能力的方法。作者首先通過設置內存中的 APIKey 調用次數保存機制,再通過自己開發的fluent-console模板快速搭建項目框架,最後實現了APIKey的併發管理功能,並附有詳細的示例代碼。

開源:Taurus.Idempotent 分佈式冪等性鎖框架,支持 .Net 和 .Net Core 雙系列版本

https://www.cnblogs.com/cyq1162/p/18054417

分佈式冪等性框架可確保分佈式系統中重複操作的結果一致,避免重複操作、保持數據一致性、提高系統可靠性、簡化設計與提高安全性。適用於金融支付、電商、消息隊列及高併發接口等場景。Taurus.Idempotent 是一個適用於 .net 或 .net core 的分佈式冪等性鎖框架,支持文件、Redis、MemCache和多種數據庫等四種鎖類型,提供簡單易用的開箱即用體驗。

Asp .Net Web Forms 系列:配置圖片防盜鏈的幾種方法

https://www.cnblogs.com/vic-tory/p/18066407

URL Rewrite Module是一個在基於IIS的ASP.NET Web應用程序中用來重寫URL的工具,可以將複雜的URL轉換成簡單的格式,提高用戶體驗和搜索引擎排名。它允許基於正則表達式等定義重寫規則,支持HTTP頭和服務器變量,可以進行重定向和發送自定義響應,對性能影響小,並且與IIS緊密集成,易於配置。還介紹了在ASP.NET中使用HttpModule處理HTTP請求和響應,並在請求處理管道中添加自定義邏輯的方法。

使用 LogProperties source generator 豐富日誌

https://www.cnblogs.com/chenyishi/p/18078355

Microsoft.Extensions.Telemetry.Abstractions包中新的日誌記錄source generator能通過[LogProperties]將整體對象作爲State記錄。展示了使用[LoggerMessage]屬性記錄日誌方法,並展示如何通過[LogProperties]自動豐富日誌的方法。還介紹瞭如何使用[LogPropertyIgnore]屬性排除不想記錄的屬性。原理是使用source generator在vs中生成代碼。

Asp .Net Core 系列:Asp .Net Core 集成 Newtonsoft.Json

https://www.cnblogs.com/vic-tory/p/18055760

Newtonsoft.Json是.NET下用於JSON序列化和反序列化的開源類庫,支持豐富的數據操作和序列化屬性設置,如自定義轉換器、日期時間格式控制、命名策略等。它還提供了序列化特性,如JsonObjectAttribute和JsonConverterAttribute等。Newtonsoft.Json內置LINQ to JSON功能,便於處理JSON對象。此外,還有性能優化技巧。文中也提及了System.Text.Json與Newtonsoft.Json的主要差異。

[.NET項目實戰] Elsa開源工作流組件應用(一): Elsa工作流簡介

https://www.cnblogs.com/jevonsflash/p/18075880

Elsa是一個強大的.NET工作流庫,其工作流包含活動和執行邏輯,並可以通過代碼或Web設計器定義。它支持長運行和短暫任務、計劃任務和事件驅動任務。Elsa提供免費的開源許可及完善的文檔。工作流基於活動和工作流定義,其中包含執行任務的實體和它們之間的關係。Elsa也提供了上下文系統支持數據傳遞、阻斷/恢復功能以適應不同任務場景,及設計器來圖形化工作流。工作流的定義和實例化是模板和實體的關係,可通過JSON序列化持久化到數據庫。

Dapr v1.13 版本已發佈

https://www.cnblogs.com/shanyou/p/18057608

Dapr是一個可幫助開發者在雲端和邊緣位置更輕鬆地運行各種應用程序的開源事件驅動運行時。它的1.13版本在2024年3月6日發佈,新增了諸如組件熱重載、SDK對工作流的支持、HTTP服務器的低指標基數等多個功能,從而改善開發效率與應用性能。此外,它還包括了優雅關機功能和運行時與SDK的標準化錯誤代碼,以及對actor reminder性能的改進,並引入了對Rust SDK的支持。

Performance Improvements in .NET 8 & 7 & 6 -- String【翻譯】

https://www.cnblogs.com/yahle/p/18077215/Performance_Improvements_in_NET_8_String

.NET 8在處理字符串、數組和Span方面有顯著提升。新增IUtf8SpanFormattable接口由多種類型實現,優化了UTF8數據格式處理。C# 10和.NET 6的字符串插值也得到了改進,通過TryWrite擴展方法支持高效的格式化。針對UTF16和UTF8進行優化,特別是通過實現Utf8.TryWrite方法節約了UTF8編碼的運行時開銷,實現了效率與UTF16相同的操作。通過特定的基準測試,用於顯著提升性能。

AntSK 0.2.1 版本揭祕:動態加載dll,驅動Function Call新境界!

https://www.cnblogs.com/xuzeyu/p/18077709

AntSK 0.2.1 是一個插件化開發工具,提供動態加載dll的能力,使得開發者能夠便捷地在項目中插入或移除功能。通過遵循AntSK約定的代碼格式,使用AssemblyLoadContext來隔離和加載不同的插件,實現了高度的靈活性和擴展性。本文詳細介紹瞭如何實現和利用這些功能。

.Net Core 你必須知道的source-generators

https://www.cnblogs.com/chenyishi/p/18073694

源生成器是C# 9特性,可在編譯時生成代碼,無須外部工具,與編譯器集成。使用方法包括:創建.NET 6控制檯應用,定義partial方法;創建.NET 類庫,引入Roslyn包;實現源生成器類生成代碼;在控制檯應用中引用生成器項目,並手動編輯項目引用;運行應用,源生成器動態實現方法。可以在Visual Studio中查看生成的文件。

微服務架構,客戶端如何catch服務端的異常?

https://www.cnblogs.com/bossma/p/18056293

在分佈式系統中,客戶端捕捉服務端異常可通過HTTP Header傳遞異常信息的方式實現,這使得不同進程甚至不同技術棧之間能夠有效交互錯誤信息。異常信息是數據的一種形式,可以基於各種網絡協議和框架傳輸。服務端在產生異常時,可通過攔截器截獲並傳遞給客戶端,客戶端再通過HTTP響應的Header讀取並轉換異常。這種方法適用於多種協議並且性能開銷在可接受範圍內。實踐中,可通過異常攔截器處理不同類型的錯誤,提高代碼健壯性和可維護性。

WPF線程模型

https://www.cnblogs.com/leolion/p/18075937

WPF採用保留模式渲染系統,包含UI線程和複合線程,負責程序的渲染。立即模式GUI和保留模式GUI是圖形API兩種類型,WPF屬於保留模式。UI線程處理用戶交互、佈局計算等,而複合線程執行實際渲染工作,高效並行。性能優化的關鍵在於保持小型化工作項和最大化Dispatcher吞吐量,避免卡頓。大型操作應在後臺線程中執行,通過Dispatcher更新UI,以確保程序響應迅速和用戶友好。

基於 XAF Blazor 的規則引擎編輯器 - 實戰篇

https://www.cnblogs.com/haoxj/p/18073710

文章介紹瞭如何使用RulesEngine進行規則引擎編輯,特別指出RulesEngine的Workflow類及其樹狀規則體系,強調了只有葉節點規則會被執行的特性和執行模式的配置。同時,提到了Action屬性和如何處理規則輸出的方法。最後,通過一個Java語言開發的規則引擎項目進行案例對比,並給出了規則預處理的代碼示例。

【譯】32位 .NET Framework 項目的 WinForm 設計器選擇

https://www.cnblogs.com/MeteorSeed/p/18056296

Visual Studio 2022轉向64位架構爲開發體驗帶來改善,尤其提升了處理大型代碼庫的性能。但這也給.NET Framework項目帶來挑戰,特別是32位窗體設計器的兼容性問題。WinForms團隊在17.9版本中引入了一個預覽特性——對.NET Framework的進程外設計器支持,允許32位過程渲染Form,但仍然存在一些侷限。該特性目前處於預覽階段,官方正在收集用戶反饋以不斷優化。

.Net Core中使用DiagnosticSource進行日誌記錄

https://www.cnblogs.com/chenyishi/p/18068309

System.Diagnostics.DiagnosticSource 是一種記錄程序日誌的工具,能記錄包括不可序列化類型在內的複雜數據。它採用訂閱發佈模式,與 ILogger 不同,ILogger 主要用於記錄具體信息。使用 DiagnosticSource 需要添加相關的 NuGet 包,通過注入 DiagnosticSource 並調用其 Write 方法來發出事件。定義監聽器時,可使用 Microsoft.Extensions.DiagnosticAdapter 包和 [DiagnosticName] 屬性來監聽特定事件。最後在 Program.cs 中配置服務並啓動監聽,以監控事件。

多個 .NET Core SDK 版本之間進行切換 global.json

https://www.cnblogs.com/chenyishi/p/18066796

在電腦安裝多個版本的.NET Core SDK後,可通過global.json文件設置使用特定版本的SDK。查看已安裝版本可用命令dotnet --list-sdks,創建global.json文件可用命令dotnet new globaljson,並通過修改文件中的“version”值或使用命令參數--sdk-version=版本號來指定SDK版本。設定後,執行如dotnet new console命令將應用指定版本的SDK。

使用C#創建服務端Web API

https://www.cnblogs.com/powertoolsteam/p/18059215

C# Web API 是建立在 .NET 平臺上用於創建 RESTful Web 服務的框架。它支持模塊化開發、RESTful 架構、跨平臺兼容性、內容協商、安全性控制、易於測試和高擴展性。文章詳細介紹瞭如何在葡萄城公司的活字格平臺使用 C# 創建和調用服務端 Web API,包括環境準備、類庫引用、編寫Web API 的示例等步驟。

DiagnosticSource DiagnosticListener 無侵入式分佈式跟蹤

https://www.cnblogs.com/chenyishi/p/18071178

ASP.NET Core框架能發出診斷事件,包括請求、HttpClient通信、EFCore查詢等事件。我們可以通過DiagnosticListener選擇性監聽這些事件,便於實現無侵入式的分佈式跟蹤。文章介紹瞭如何創建DiagnosticListener監聽EFCore和HttpClient,以及如何註冊DiagnosticObserver。還演示瞭如何新建接口集成EF與HttpClient,通過接口調用查看監聽內容,及如何解析事件,並挑選出HTTPClient與EFCore相關的事件進行展示。

CSharp的lambda表達式匿名類擴展方法

https://www.cnblogs.com/wenlong-4613615/p/18071142

本文介紹了C#中lambda表達式的概念與發展歷程。文章首先解釋了函數和委託的定義,然後展示了從.NET Framework 1.0至3.0版本中匿名函數書寫方式的演變,包括delegate關鍵字的使用以及lambda表達式的簡化。文中還探討了lambda表達式的本質,即匿名方法,通過ilspy反編譯說明其實現細節。文章還講解了使用匿名類對象存儲數據的便捷方式。最後提出C#中object對象派生性及其與dynamic關鍵字的區別,以及訪問匿名對象屬性的方式。

iOS使用Unity容器動態加載3D模型

https://www.cnblogs.com/zhou--fei/p/18057212

APP是一個展示3D數字藏品的平臺。爲了在不同端上支持3D場景、動畫、交互的展示,所選的解決方案是Unity。Unity需要實現的功能包括APP啓動時動態下載更新的模型文件和根據參數加載不同模型。模型通過AssetBundle方式打包上傳至服務器。用戶觀看模型時,APP從本地解壓目錄加載相應3D模型。打包流程包括創建AB打包腳本,設置資源打包選項,使用Unity插件工具AssetBundle Browser進行打包,最後將資源包上傳至服務器。APP啓動時從服務器下載資源包至本地沙盒,用戶查看模型時,通過名字加載本地的ab包。

SemanticKernel如何基於自有數據聊天

https://www.cnblogs.com/mingupupu/p/18054386

向量數據庫是專門處理高維向量數據如圖像、音頻、文本的系統,主打特性是高效相似度搜索和複雜查詢操作。嵌入則指在高維空間中將數據轉化爲向量的方法,有助於衡量數據間的相似程度。Chroma是一款向量數據庫,本文介紹如在Docker中運行Chroma,並通過C#編碼創建語義記憶接口ISemanticTextMemory和保存數據到Semantic Memory。文章以保存txt文件信息爲例,展示了保存數據的編碼流程。

那些.NET中的連接池

https://www.cnblogs.com/kyo-lynn/p/18059877

.NET中的連接池有助於提升應用性能。HttpClient實例有自己的連接池,通過配置PooledConnectionLifetime、PooledConnectionIdleTimeout和MaxConnectionsPerServer可以控制行爲。數據庫連接池廣爲人知,需選擇正確的包且注意每個連接字符串對應一個池子和連接數限制。StackExchange.Redis是連接Redis的首選,但無連接池,可用第三方庫如StackExchange.Redis.ConnectionPool。SmtpClient實現了SMTP連接池化,但官方建議用MailKit替代SmtpClient。

Advanced .Net Debugging 4:基本調試任務(對象檢查:內存、值類型、引用類型、數組和異常的轉儲)

https://www.cnblogs.com/PatrickLiu/p/18052105

本文是《Advanced .Net Debugging》系列的第四篇,主要介紹了.NET 8環境下的一些基礎調試任務,包括對象、內存、值類型、引用類型、數組和異常的轉儲,便於分析問題。文章提供了調試環境的具體信息,並通過ExampleCore_3_1_6示例源碼,展示了結構體的定義和數組的操作等調試操作,體現了調試技巧對成爲合格程序員的重要性。

基於 XAF Blazor 的規則引擎編輯器

https://www.cnblogs.com/haoxj/p/18067776

本項目是一個基於XAFBlazor的規則引擎編輯器,使用微軟的開源RulesEngine。它允許開發者更靈活地管理業務規則,提供了創建、編輯規則節點,定義規則關係,實時驗證規則以及多種規則設置和操作功能,並有導航功能以便於規則的查看和編輯。本編輯器強化了規則的可視化管理,提升了編輯效率。

CYQ.Data 操作 Redis 性能測試:對比 StackExchange.Redis

https://www.cnblogs.com/cyq1162/p/18066104

文章回顧了2019年對CYQ.Data分佈式緩存的性能測試,並使用相同測試程序對最新版本CYQ.Data V5.9.2.7進行了性能測試。測試環境爲Win11系統,Redis版本爲3.2.100。測試結果顯示,在單線程下CYQ.Data和StackExchange.Redis進行Redis操作的性能大致相當,但在多線程操作下,StackExchange.Redis的性能超過了Redis的單線程性能極限,主要得益於其2.X版本後的代碼重構和批量提交機制。CYQ.Data在多線程下性能穩定,作者考慮後續可能引入自動批量處理或提供批量調用接口以提升性能。

用於演示文稿的新 Dapr 幻燈片

https://www.cnblogs.com/shanyou/p/18073971

Dapr官方博客發佈了一套新的演示幻燈片,涵蓋了Dapr API的所有新圖標與功能,包括安全性、彈性和可觀察性。這套包含140多張幻燈片的資料旨在幫助用戶創建演示文稿,可以根據需要刪除、隱藏或添加內容。該資源風格與dapr.io網站的最新設計相符,旨在作爲演示文稿的起點。演示資料採用開源方式,在PowerPoint格式提供,歡迎社區成員進行貢獻。

基於C#的壁紙管理器(插件版) - 開源研究系列文章

https://www.cnblogs.com/lzhdim/p/18074135

作者分享了他將原先的壁紙管理器應用改造爲插件版本的開發過程和結果,包括項目目錄展示、核心源碼解讀、運行界面變化展示和源碼下載提供等內容。在運行界面部分,作者顯示了主窗體和關於窗體的變化,並詳述了使用方法,即通過反射機制在主窗體中加載插件信息和功能實現。作者在博文末尾鼓勵讀者基於提供的源碼進行學習和自定義修改,以實現窗體功能和接口定義的個性化。

gRPC入門學習之旅(二)

https://www.cnblogs.com/chillsrc/p/18076783

gRPC是一個高性能的遠程過程調用框架,能在多種開發語言中使用。它基於HTTP/2和Protobuf,具有跨語言、高效網絡傳輸等特點,適用於微服務。在Visual Studio 2022中可以方便地創建gRPC服務端。本文通過一個示例介紹瞭如何創建服務端,並解釋了項目文件結構,包括用於通信的appsettings.json配置、存放協議的Protos文件夾和存放業務實現類的Services文件夾,以及如何在Program.cs中註冊gRPC服務。

中間件

https://www.cnblogs.com/boise/p/18002742

中間件是處理HTTP請求和響應的軟件組件,它們被裝配在應用管道中並決定是否將請求傳遞至下一個中間件。使用Run、Map或Use方法配置中間件,中間件可終止請求(短路)。常見的中間件有異常處理、HTTPS重定向、靜態文件處理等,它們的執行順序影響應用的安全性、性能和功能。通過RequestDelegate委託和IApplicationBuilder接口管理中間件的註冊與執行。中間件順序不當可能會導致問題,例如靜態文件應在身份認證中間件之前處理以允許公開訪問。

FastWiki v0.1.0發佈!新增超多功能

https://www.cnblogs.com/hejiale010426/p/18072121

FastWiki軟件發佈v0.1.0版本,更新包括兼容OpenAI接口、優化前端代碼、修復bugs等。該版本提供了詳細的快速入門指南,包括用Docker安裝、編輯配置文件、運行服務以及登錄使用。FastWiki支持與AI對話,適配移動端分享界面,提高了用戶交流體驗。安裝完成後,用戶可以立即使用API對話功能。FastWiki在GitHub和Gitee上都有倉庫,也提供了演示地址供體驗。

IISExpress 跨域cookie的奇怪問題

https://www.cnblogs.com/jintianhu/p/18054296

文章描述了一個使用ASP.NET開發的網站A與網站B之間通過設置與獲取Cookie進行交雲通信的過程,並且提及了在使用IISExpress部署兩個網站時,會出現設置Cookie不成功的偶發性問題。兩網站分別監聽7001和7002端口,網站A負責根據請求類型設置或獲取Cookie,網站B只有前端代碼,負責發送Ajax請求交互。文中還提到,跨域請求的處理以及在不同部署方式下的測試結果。

深入解析:AntSK 0.1.7版本的技術革新與多模型管理策略

https://www.cnblogs.com/xuzeyu/p/18068091

AntSK 0.1.7版本是基於.Net平臺和AntDesign Blazor框架的開源AI智能體與知識庫項目,引入了多模型管理功能,增強了系統的靈活性與適應性。開發者可輕鬆配置和管理不同AI模型,如OpenAI、Azure OpenAI和本地GGUF模型等。技術大咖James Yeung的代碼貢獻關鍵,在Semantic Kernel中通過switch-case加載對應的模型連接器實現不同模型的管理。這些進步令AntSK支持更多AI模型,預示了其未來的發展潛力。

主題

.NET 9 預覽 2 · dotnet/core · 討論 #9217

https://github.com/dotnet/core/discussions/9217

Visual Studio Code 的 Unity 擴展 - 現已全面可用 - .NET 博客

https://devblogs.microsoft.com/dotnet/unity-extension-for-visual-studio-code-now-generally-available/

.NET 2024 年 3 月更新 – .NET 8.0.3、7.0.17、.NET 6.0.28 - .NET 博客

https://devblogs.microsoft.com/dotnet/march-2024-updates/

優化您的搜索:介紹 NuGet.org 的兼容框架過濾器 - NuGet 博客

https://devblogs.microsoft.com/nuget/refining-your-search-introducing-nuget-orgs-兼容-framework-filters/

Visual Studio 17.10 簡介 – 預覽版 2 現已推出! - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/introducing-visual-studio-17-10-preview-2-is-here/

2.7.33 版 · StackExchange/StackExchange.Redis

https://github.com/StackExchange/StackExchange.Redis/releases/tag/2.7.33

Visual Studio 應用程序中心停用 - Visual Studio 應用程序中心

https://learn.microsoft.com/en-us/appcenter/retirement

Visual Studio 2022 版本 17.9.3 - Visual Studio 2022 發行說明

https://learn.microsoft.com/en-us/visualstudio/releases/2022/release-notes#17.9.3

.NET Aspire 預覽版 4 - .NET Aspire

https://learn.microsoft.com/en-us/dotnet/aspire/whats-new/preview-4

https://x.com/davidpine7/status/1767576822940627321?s=12

宣佈 TypeScript 5.4 - TypeScript

https://devblogs.microsoft.com/typescript/announcing-typescript-5-4/

發佈 11.0.10 · AvaloniaUI/Avalonia

https://github.com/AvaloniaUI/Avalonia/releases/tag/11.0.10

文章、幻燈片等

使用 YARP 作爲 API 網關和速率限制器

https://www.codecrash.net/2024/03/01/rate-limiting-in-yarp.html

從 Azure 部署生成本地 .NET 機密 - .NET 博客

https://devblogs.microsoft.com/dotnet/generate-dotnet-secrets-automatically-from-azure-deployment/

Visual Studio 中的 GitHub Copilot:2023 年回顧 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/github-copilot-in-visual-studio-a-recap-of-2023/

NuGet.org 存儲庫簽名證書將於 2024 年 4 月 8 日更新 - NuGet 博客

https://devblogs.microsoft.com/nuget/the-nuget-org-repository-signing-certificate-will-be-updated-as-soon-as-april-8th-2024/

使用新的快速入門教程開始使用 .NET 8 和 AI - .NET 博客

https://devblogs.microsoft.com/dotnet/get-started-with-dotnet-ai-quickstarts/

【Blazor】使用ShouldRender避免不必要的渲染 - Qiita

https://qiita.com/Leech/items/0ea5751798751214d4db

發佈 11.1.0-beta1 · AvaloniaUI/Avalonia

https://github.com/AvaloniaUI/Avalonia/releases/tag/11.1.0-beta1

.NET PriorityQueue 的實現背後

https://andrewlock.net/behind-the-implementation-of-dotnets-priorityqueue/

如果WPF的WebView2在執行環境中不顯示,問題可能是執行用戶對exe所在的fu文件夾沒有寫權限 - Qiita

https://qiita.com/spc_ksudoh/items/22d8cf414201e0568421

[ASP.NET Core Web API] 使枚舉類型(Enum)不僅可以作爲常量值處理,還可以作爲名稱處理

https://zenn.dev/jtechjapan_pub/articles/ceacea6d9322bd

JetBrains Rider 2024.1 中的 Blazor Wasm 開發升級 | .NET 工具博客

https://blog.jetbrains.com/dotnet/2024/03/11/blazor-wasm-development-upgrades-jetbrains-rider-2024-1/

使用.NET類庫中的ASP.NET Core類

https://zenn.dev/okazuki/articles/aspnetcore-on-classlib

使用 WireMock.NET 模擬授權令牌

https://cezarypiatek.github.io/post/mocking-authorization-tokens/

爲 WinUI 3 應用程序創建 msixbundle

https://zenn.dev/shinta0806/articles/winui3-msixbundle

RedirectToAction() 和 LocalRedirect() 之間存在開放重定向漏洞的關係🏴‍☠️

https://dev.to/_hm/relationship-between-redirecttoaction-and-localredirect-with-open-redirect-vulnerability-1mkj

使用 EF Core 通用排序鍵選擇器 - Qiita

https://qiita.com/aoisupersix/items/771de84a3e242b1ad470

我只想使用 .NET 服務發現 - Qiita

https://qiita.com/takashiuesaka/items/d04073c086fa05cd4128

FluentUI.Blazor v4.5

https://dvoituron.com/2024/03/08/fluentui-blazor-4-5/

C# 13 中的集合表達式 - 談論放寬限制

https://ufcpp.net/blog/2024/3/colexpr13-relax-restriction/

使用 .NET 和 Teams Toolkit 構建 AI 機器人、擴展 Microsoft 365 的 Copilot 等 - .NET 博客

https://devblogs.microsoft.com/dotnet/teams-toolkit-for-visual-studio-release-updates/

如何使用 .NET MAUI 構建普通桌面應用程序 - Qiita

https://qiita.com/spc_ksudoh/items/8cd0c70bd8080552a37c

.NET 中的 Milvus Vector DB 入門 - .NET 博客

https://devblogs.microsoft.com/dotnet/get-started-milvus-vector-db-dotnet/

如何與 IronPython 交互(第 2 部分)- Qiita

https://qiita.com/Mt_SQ/items/a6276eb48682f3a8e97a

Visual Studio 訂閱 - 產品經理的旅程 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/visual-studio-subscriptions-benefit-journey-pt1/

堆數據結構和.NET 的優先級隊列簡介

https://andrewlock.net/an-introduction-to-the-heap-data-struct-and-dotnets-priority-queue/

更新到 .NET 8、更新到 IHostBuilder,並在 NUnit 無頭或任何操作系統上運行 Playwright 測試

https://www.hanselman.com/blog/updating-to-net-8-updating-to-ihostbuilder-and-running-playwright-tests-within-nunit-headless-or-headed-on-any-os

Aspire 和 Aspi8:使用 CLI 輕鬆部署微服務 — 無需 Docker 或 YAML!

https://medium.com/@josephsims1/aspire-api8-deploy-microservices-effortless-with-cli-no-docker-or-yaml-needed-f30b58443107

庫、存儲庫、工具等。

Cysharp/Claudia:.NET 的非官方 Anthropic Claude API 客戶端。

https://github.com/Cysharp/Claudia

網站、文檔等

推文

https://x.com/kuxmlp/status/1767551660262646235?s=12

image-20240318201447129

深入探索

NativeAOT:由 filipnavara 添加 win-x86 支持 · Pull Request #99372 · dotnet/runtime

https://github.com/dotnet/runtime/pull/99372

版權聲明

由於筆者沒有那麼多時間對國內的一些文章進行整理,歡迎大家爲《.NET週刊-國內文章》板塊進行貢獻,需要推廣自己的文章或者框架、開源項目可以下方的項目地址提交Issue或者在我的微信公衆號私信。

格式如下:

  • 10~50字左右的標題
  • 對應文章或項目網址訪問鏈接
  • 200字以內的簡介,如果太長會影響閱讀體驗

https://github.com/InCerryGit/.NET-Weekly

.NET性能優化交流羣

相信大家在開發中經常會遇到一些性能問題,苦於沒有有效的工具去發現性能瓶頸,或者是發現瓶頸以後不知道該如何優化。之前一直有讀者朋友詢問有沒有技術交流羣,但是由於各種原因一直都沒創建,現在很高興的在這裏宣佈,我創建了一個專門交流.NET性能優化經驗的羣組,主題包括但不限於:

  • 如何找到.NET性能瓶頸,如使用APM、dotnet tools等工具
  • .NET框架底層原理的實現,如垃圾回收器、JIT等等
  • 如何編寫高性能的.NET代碼,哪些地方存在性能陷阱

希望能有更多志同道合朋友加入,分享一些工作中遇到的.NET性能問題和寶貴的性能分析優化經驗。目前一羣已滿,現在開放二羣。

如果提示已經達到200人,可以加我微信,我拉你進羣: ls1075

另外也創建了QQ羣,羣號: 687779078,歡迎大家加入。

image-20230703203249615

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章