.NET週刊【5月第4期 2024-05-26】

InCerry發表於2024-05-28

國內文章

開源低程式碼框架 ReZero API 正式版本釋出 ,介面操作直接生成API

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

ReZero是一款.NET6+的中介軟體,採用MIT許可證開源,目的是降低.NET Core開發的門檻。它提供介面操作生成API的功能,支援整合到各種.NET專案中。它還提供了一系列的開發工具和功能,例如授權、ORM等,簡化了.NET開發過程。此外,非.NET使用者也可以透過exe檔案使用ReZero。文件介紹了介面和表的建立過程,以及如何使用SQL工具。最後給出了原始碼和exe檔案的下載地址。

一款開源的.NET程式集反編譯、編輯和除錯神器

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

本文主要講述了.NET程式集反編譯、編輯與除錯工具dnSpyEx的使用方法,包括其主要功能、如何下載安裝執行、以及工具的原始碼和專案原始碼地址。dnSpyEx是dnSpy的非官方Fork維護版本,支援.NET Framework、.NET Core 和 Unity 程式集的編輯與除錯,並提供多語言支援。文章還提到了建立測試專案、除錯和編輯程式集程式碼的具體操作,並且指出該專案已被收錄進C#/.NET/.NET Core優秀專案和框架精選中,同時鼓勵讀者為專案點贊支援。文末,作者推薦了DotNetGuide技術社群交流群,為.NET開發者提供一個資源分享和問題解決的平臺。

.NET下免費開源的PDF類庫(PDFSharp)

https://www.cnblogs.com/laikwan/p/18206787

文章介紹了.NET 體系下常見的PDF類庫並對其中的PDFSharp庫進行了介紹。PDFSharp是一個基於.NET6的跨平臺、免費開源(MIT協議)pdf處理庫,作者對其功能表現出了滿意。文中分享了使用PDFSharp結合MigraDoc生成PDF檔案的個人經驗,並提供了中文字型解析器的程式碼實現方法。作者表達了對Fluent API形式的喜愛,並提出了後續封裝類似於QuestPDF的擴充套件庫的想法。

聊聊一個差點被放棄的專案以及近期的開源計劃

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

博主討論了自己開發的一些開源專案,重點介紹了單點認證專案IdentityServerLite(後更名為StarSSO)。由於團隊系統增多,需要更完善的單點認證系統,博主考慮了C#生態中的IdentityServer4和OpenIddict,以及Go的casdoor和Java的Keycloak,均因複雜度或其他問題未選擇。最後決定自己開發,技術棧包括AspNetCore等,但過程中遇到許多困難。博主還計劃了其他專案,如EchoSubs、SnapMix等,並提到了基於C#的其他單點認證專案SimpleIdServer和基於NodeJS的loginto。

.NET Aspire 正式釋出:簡化 .NET 雲原生開發

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

.NET團隊於2024年5月22日釋出了.NET Aspire,這是一個旨在簡化.NET雲原生服務開發的平臺和語言無關的框架。該框架整合工具、模板和NuGet包,支援在Visual Studio、.NET CLI和Visual Studio Code環境下使用。透過安裝.NET Aspire工作負載,開發者可以更容易地構建和部署分散式應用程式,特別是雲原生的應用。.NET Aspire具備效能和分散式應用程式可觀察性的功能,以及雲原生框架支援。開發者可以在Microsoft Build大會上了解有關.NET Aspire的更多資訊。

.NET 中 Channel 類簡單使用

https://www.cnblogs.com/kklldog/p/18201013/channel-in-net

System.Threading.Channels名稱空間為生產者與消費者之間非同步傳遞資料提供了同步資料結構。這個Library適用於.NET Standard,並在所有.NET實現上工作。通道是生產者/消費者概念程式設計模型的實現。透過Channel類,可以建立一個記憶體訊息佇列以模擬生產者消費者模型。生產者生產資料後,將資料非同步寫入通道,消費者則從通道中非同步讀取資料。示例展示瞭如何使用無界通道與有界通道,以及在使用中遇到的有關阻塞和併發的情況,展示了單生產者消費者模型和多生產者消費者共享同一個通道的情況。

微軟正式釋出:.NET Aspire 雲原生開發框架

https://www.cnblogs.com/1312mn/p/18205776

2024年5月22日,微軟釋出了新的雲原生開發框架.NET Aspire。該框架支援多種程式語言,旨在簡化.NET雲原生服務的開發。透過整合工具、模板和NuGet包等資源,.NET Aspire 提供微服務編排、基礎服務訪問和工具鏈支援,以構建可觀測、生產就緒的分散式應用。.NET Aspire 可以透過.NET CLI、Visual Studio 和 Visual Studio Code 安裝。此外,.NET Aspire 引入應用宿主專案來管理本地開發環境,最佳化開發體驗並提供資料庫、訊息傳遞、快取等服務的彈性連線和可觀測性。

.NET快速實現網頁資料抓取

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

這篇文章介紹瞭如何使用.NET開源框架DotnetSpider進行網頁資料抓取。文中以部落格園的10天推薦排行榜為例,講解了建立控制檯應用、安裝DotnetSpider NuGet包、新增日誌元件、定義資料模型和編寫爬蟲邏輯等步驟,目標是將文章標題、簡介和地址儲存至txt檔案。同時提醒開發者遵守國家法律法規。

微服務下認證授權框架的探討

https://www.cnblogs.com/tibos/p/18208102

文章討論了在微服務架構中進行認證授權的解決方案——認證中心,並藉助JWT進行去中心化處理以減少認證中心壓力。文章介紹了OAuth 2.0與其四種授權方式,在.NET環境中推薦了IdentityServer4和OpenIddict兩個框架,並分享瞭如何透過IdentityServer4實現自定義登入頁面、持久化到資料庫的過程。作者透過實際程式碼示例展示了一個自定義登入功能的實現,並進行了簡單的解釋。

5款.NET開源、免費、功能強大的圖表庫

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

LiveCharts2、XCharts、ScottPlot、Blazor-ApexCharts和BlazorChartjs都是基於MIT License協議的.NET開源專案,可應用於多種平臺和框架,實現資料視覺化的圖表庫。這些專案已被收錄於C#/.NET/.NET Core優秀專案和框架精選中。DotNetGuide技術社群為.NET開發者提供一個學習資源豐富、技術交流活躍的平臺。

Dapper升級SqlSugar問題彙總

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

這篇文章主要介紹瞭如何將Dapper遷移到SqlSugar,並列出了幾個常見問題的解決辦法。其中包括如何在SqlSugar中處理SQL中的IN引數、動態型別的屬性訪問、表值引數typeName的傳遞、型別轉換,以及兩者聯表查詢的差異。文章中還提供了一些程式碼示例,如建立容錯的動態物件類和使用SqlSugar進行型別轉換的方法。

Asp .Net Core 系列:整合 CAP + RabbitMQ + MySQL(含冪等性)

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

CAP是一個事件匯流排框架,用於構建可擴充套件的微服務系統,並解決分散式事務問題。它支援多種訊息傳輸器和持久層,例如RabbitMQ、Kafka、MySQL等。安裝CAP需要在.NET Core專案中透過NuGet包管理器新增相關包。配置時,要設定RabbitMQ和資料庫連線,並可以配置CAP的Dashboard和訊息過期時間等引數。

efcore如何優雅的實現按年分庫按月分表

https://www.cnblogs.com/xuejiaming/p/18198827

本文介紹了ShardingCore框架,一種基於EF Core的高效能輕量級分庫分表讀寫分離解決方案。文章從一個簡單的案例開始,展示瞭如何編寫GetRouteFilter方法,隨後指導如何透過NuGet安裝這一架構,並提供了一個按建立時間的年份分庫、月份分表的使用者訂單例項。

記一次 .NET某酒店後臺服務 卡死分析

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

作者在幫助一個朋友分析C#程式執行緒池出現的http超時現象時,透過WinDbg分析發現執行緒池中全部的537個執行緒都處於執行狀態,排隊有82個任務,這是典型的執行緒飢餓現象。分析執行緒飢餓可能的原因,諸如優先順序傾斜、死鎖、資源競爭、不公平排程策略、執行緒阻塞和執行緒池配置不當等。作者使用命令檢查執行緒的呼叫棧,以確定具體是哪一種情況導致的問題。

Asp-Net-Core開發筆記:給SwaggerUI加上登入保護功能

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

文章介紹瞭如何在.SwaggerUI中加入登入驗證,作者透過自定義SwaggerAuthenticationHandler以基本認證(Basic Auth)的方式實現,避免使用硬編碼,並利用Microsoft.AspNetCore.Authentication進行認證。介紹的方法適合於最新的.Net8平臺。作者以實際專案IdentityServerLite為例,展示了配置Swagger的過程,並介紹了必要的服務註冊。整個過程強調配置靈活性和安全性。

C#.Net築基-型別系統①基礎

https://www.cnblogs.com/anding/p/18176086

C#.Net的基類庫(BCL)提供了各種資料型別,最基礎的包括值型別和引用型別,它們都是從System.Object派生而來。值型別包括基本的整數型別、浮點數、布林、字元、列舉、結構體等,而引用型別包括物件、字串、動態型別、介面、類、委託、陣列、匿名型別和記錄型別等。每個型別都可以轉換成Object型別,因為Object是所有型別的祖先。文章還介紹了Object類的一些基礎成員方法,如ToString(), Equals(), GetHashCode()等。

C#.Net築基-型別系統②常見型別

https://www.cnblogs.com/anding/p/18176136

結構體struct是一種輕量級的使用者自定義值型別,適用於定義簡單的局域性資料結構,可包含建構函式、欄位、屬性和方法。結構體是值型別,通常分配在棧上,但也可能儲存在堆上,如作為類的成員。新增的readonly結構體和ref結構體分別用於建立不可變的值型別和只能儲存在棧上的型別。Enum是一組基於整數型別的命名常量,利於表示固定的分類,常與Description特性及System.Enum類的API搭配使用。Flags特性允許列舉進行位操作,用於多選擇場景。

上位機開發福利!快速掌握.NET中的Modbus通訊

https://www.cnblogs.com/weskynet/p/18206594

本文介紹瞭如何安裝並使用Wesky.Net.OpenTools包進行modbus通訊,並提供了操作Modbus客戶端的方法。介紹了使用IModbusReadWriteService介面進行讀寫測試,包括批次讀取和寫入資料,並解釋了客戶端引數實體類。提供了關於Modbus協議的文章連結以及測試讀寫效率的日誌示例。文末促請讀者關注作者的公眾號Dotnet Dancer。

NET9 AspnetCore將整合OpenAPI的文件生成功能而無需三方庫

https://www.cnblogs.com/vipwan/p/18210947

OpenAPI標準用於描述HTTP API,ASP.NET Core框架預設不支援,但可以透過ApiExplorer提供的後設資料、第三方工具和Microsoft.AspNetCore.OpenApi包實現支援。在.NET 6中對Minimal Api提供了支援,在.NET 7中透過WithOpenApi擴充套件方法修改了Endpoint的相關操作。ASP.NET Core將在.NET 9之後的版本中加入OpenAPI文件生成作為內建功能,使用最新預覽版Visual Studio和.NET 9 preview4 SDK就可體驗這一功能。

.NET 中的表示式樹

https://www.cnblogs.com/cqai/p/18202624

表示式樹是.NET框架中的特性,以樹形結構呈現程式碼,涵蓋操作如方法呼叫、算術與邏輯運算。它支援執行時程式碼分析、修改與執行,應用於動態查詢、動態編譯、規則引擎以及程式碼生成。包含多個類如Expression、ParameterExpression等,用於代表不同的表示式和操作。透過示例程式碼說明表示式樹的建立、編譯和執行過程。

Asp-Net-Core開發筆記:使用原生的介面限流功能

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

這篇文章介紹了在.Net8環境下,利用ASP.NET Core原生的限流元件來實現介面限流,相比.Net6時期使用第三方元件AspNetCoreRateLimit,原生元件在配置和使用上更為簡單,但功能上不如第三方靈活。文章透過例項展示瞭如何在程式中註冊服務並配置固定視窗限流策略,並指出了配置限流中介軟體的位置順序的重要性。最後,文章還提供瞭如何為特定介面新增限流策略的方法,並透過實際測試來驗證配置效果。

YiShaAdmin:一款基於.NET Core Web + Bootstrap的企業級快速開發框架

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

今天分享的YiShaAdmin是一個基於.NET Core Web和Bootstrap的後臺開發框架與許可權管理系統,特點是程式碼簡明、介面清晰,使用MIT開源協議,適用於Web後端和移動端Api開發。功能上,包含員工、部門、角色等管理模組,特性有響應式佈局、封裝了JS外掛、基於角色的訪問控制以及一鍵生成程式碼。技術棧涵蓋Bootstrap、.NET Core Web、多種快取和資料庫方案、定時任務和API文件工具。專案結構分為基礎設施、資料庫核心、業務邏輯、業務實體和前端五個層次。原始碼和文件在GitHub提供,同時該專案也被收錄於C#/.NET/.NET Core優秀專案精選中。

Clear Code for Minimal API

https://www.cnblogs.com/YataoFeng/p/18202396

本文介紹瞭如何透過使用C# 11特性中的介面靜態虛擬成員來簡化.NET Minimal API的程式碼編寫。作者建立了帶有靜態抽象函式的介面IEndpointBase,並實現了相關類以組織API的宣告和處理。作者還對MapGroup進行了擴充套件,使得對API進行分類更加清晰和有組織性。

.NET8 Identity Register

https://www.cnblogs.com/YataoFeng/p/18206455

本文探討了ASP.NET 8 Identity中註冊API的原始碼實現,分析了使用郵箱確認方式註冊使用者賬戶的邏輯流程。詳述了其實現中將使用者標記為未驗證狀態,並在確認郵箱後更新為已驗證的過程。同時,指出了該方法的優點如實現簡單、使用者體驗好和提高安全性,缺點為可能增加資料庫冗餘和風險較高。接著,作者建議了一種更安全的方式,即延遲使用者建立直至郵箱驗證完成。這個過程包含使用者註冊、賬戶建立和郵箱驗證等步驟。

【.NET專案分享】免費開源的靜態部落格生成工具EasyBlog,5分鐘擁有自己的部落格

https://www.cnblogs.com/msdeveloper/p/18201819/open-dotnet-easyblog

EasyBlog是一個利用GitHub Pages託管的靜態部落格生成系統,支援Markdown編寫和git版本控制。特點包括極快的訪問速度、支援搜尋和篩選的部落格列表以及移動端適配等。部署步驟簡單,主要需要配置webinfo.json檔案和提交程式碼,之後GitHub Action將自動構建和釋出部落格。系統還支援自定義主頁內容、部落格展示頁面以及程式碼高亮樣式,並可透過fork實現二次開發。

C#的奇技淫巧:利用WinRM來遠端操控其他伺服器上的程序

https://www.cnblogs.com/weskynet/p/18213135

文章介紹如何透過WinRM在不開啟遠端桌面的情況下,遠端執行伺服器程序的檢視、啟動或封殺等操作。首先確保遠端伺服器啟用WinRM,並配置好相應的防火牆規則;本地客戶端網路要設定為專用網路並開啟管理員許可權的power shell以同樣方式啟用WinRM;配置TrustedHosts信任遠端主機;確認遠端伺服器身份驗證配置;使用System.Management.Automation包建立程式執行遠端命令。可執行命令包括獲取程序列表(Get-Process)、關閉程序(Stop-Process)和開始程序(Start-Process)。

[原創]dotnet 命令列工具解決方案 PomeloCli

https://www.cnblogs.com/leoninew/p/18203243/pomelo_cli_intro

PomeloCli是基於Nate McMaster的CommandLineUtils和DotNetCorePlugins實現的一套命令列開發、管理、維護方案的原創開源專案。它解決了開發人員在作業系統上部署命令列工具時的多種問題,包括標準不一、文件匹配困難和配置管理混亂等。PomeloCli透過nuget服務釋出,並提供了開發、整合、解除安裝命令列外掛與宿主的完整流程,同時解決了編寫命令列應用的一些常見問題。文件中也提供了快速起步的指導和示例程式碼。

EDP .Net開發框架--許可權

https://www.cnblogs.com/alwaysinsist/p/18190630

本文介紹了一個關於許可權管理的平臺,其許可權分為“許可權物件”和“授權物件”。許可權物件涉及多個業務維度,授權物件則包含職務、部門等。許可權的設定和管理是雙向的,透過不同的維度進行配置。文中以業務模型和職務為例,展示了設定許可權的流程,並說明了如何檢視和刪除許可權。也舉例瞭如何在程式碼中使用許可權管理,包括屬性訪問控制和行級資料控制。

微服務實踐k8s&dapr開發部署實驗(1)服務呼叫

https://www.cnblogs.com/shiningrise/p/18206124

本技術文章主要介紹瞭如何在Docker和Kubernetes(k8s)環境中使用Dapr執行.Net程式。文中首先說明了安裝docker、dapr和k8s的前置條件,並隨後詳細介紹了在dapr自託管模式下執行.Net WebAPI專案的步驟,包括更改配置檔案、控制器程式碼,並展示瞭如何使用dapr命令列來啟動應用並進行服務呼叫。接著,文章指導讀者如何建立新的專案,並透過引入Dapr.Client NuGet包來呼叫已透過Dapr執行的後端服務。最後簡略提到了在k8s中使用Dapr的解除安裝命令。

推薦2款開源、美觀的WinForm UI控制元件庫

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

大姚分享了兩款開源WinForm UI控制元件庫:ReaLTaiizor和AntdUI。ReaLTaiizor提供多樣元件和主題,使得建立桌面應用更加便捷美觀。AntdUI基於Ant Design設計語言,也是開源的。這些庫都被收錄在C#/.NET/.NET Core專案精選中。DotNetGuide技術社群為.NET開發者提供學習資料、技術分享、專案推薦等。

從需求角度介紹PasteSpider(K8S平替部署工具適合於任何開發語言)

https://www.cnblogs.com/pastespider/p/18204745

PasteSpider是一款使用C#編寫的Linux容器部署工具,它操作簡單、節省資源,支援Sqlite/Postgresql資料庫和叢集部署。該工具與專案的開發語言無關,只需滿足幾個條件:需要在Linux上執行、為純靜態或可以打包進Docker或Podman容器內。它無需複雜配置,而是以圖形介面和程式設計命令的方式執行,不會影響主服務執行。PasteSpider注重資源效率和服務部署的簡單性,並支援多服務專案部署、環境區分、Nginx路由配置和倉庫管理功能。

Semantic Kernel入門系列:利用Handlebars建立Prompts functions

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

本文介紹了在Semantic Kernel C#中利用Handlebars Prompts Template建立Prompts functions的過程。Handlebars是一個JavaScript模板引擎,能生成動態HTML,本指南透過詳細的步驟,包括建立專案、安裝Nuget包、使用Handlebars Prompts Templates以及建立和執行提示函式,教導讀者如何配置和使用Handlebars作為格式化引擎,同時指出了Handlebars與預設設定的區別。最後,透過一個示例展示了Prompt function的實用性和生成文字輸出的能力。

.NET整合DeveloperSharp實現http網路請求&與其它工具的比較

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

DeveloperSharp系列支援.Net Core2.0及以上和.Net Framework4.0及以上,提供了http請求呼叫功能。其HttpPost方法用於傳送Post請求,此外還有HttpGet方法處理Get請求。文章提到除了Post和Get以外的請求方法在實際開發中用得較少,並比較了DeveloperSharp與市面上其它工具,指出許多工具不能處理特殊情況,而DeveloperSharp將Content-Type作為引數提供了更好的靈活性。

IceRPC之深入理解排程管道->快樂的RPC

https://www.cnblogs.com/xlgwr/p/18212782

本文介紹了IceRPC的排程管道,包括傳入請求的處理、傳出響應的建立與中介軟體的使用。詳述了傳入請求的元件,比如目標服務路徑、操作名稱、請求欄位和有效負載。還闡釋了特性在本地通訊和管道中的應用,例如利用IDispatchInformationFeature進行通訊。文章還描述了傳出響應的構成,包含狀態程式碼和響應有效負載分割。文章對中介軟體的安裝和編寫、請求的中介軟體攔截、路由器和基於路徑的路由進行了詳細解釋,其中使用流程圖輔助說明路由的概念。

Avalonia中的線性漸變畫刷LinearGradientBrush

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

本文講述了作者在WPF中使用Shape進行復雜線條動畫,嘗試在Avalonia中復現時遇到的問題和解決方法。WPF中的LinearGradientBrush使用StartPoint和EndPoint進行漸變色填充。Avalonia與WPF線上性漸變畫刷的使用上有所不同,要用百分比表示位置。經過多次實驗,作者發現三角形填充色問題與其座標位置有關,並透過調整座標成功實現了漸變效果,最後透過繪製更大的正方形驗證了自己的猜測。

Biwen.Settings新增對IConfiguration&IOptions的整合支援

https://www.cnblogs.com/vipwan/p/18204135

Biwen.Settings是一個用於校驗和持久化配置項的模組,支援將配置存到資料庫或JSON檔案。使用者透過定義配置類如GithubSetting,並在服務中注入即可使用。此外還可實現IConfigurationProvider介面,如BiwenSettingConfigurationProvider,以支援IConfiguration和IOptions。該模組特性包括直接物件注入和自動重新整理配置等功能。

開源專案分享:ChatGPT 控制檯聊天應用

https://www.cnblogs.com/cqai/p/18209196

該開源專案是一個基於.NET8的ChatGPT控制檯聊天應用,支援多種AI模型,提供簡單的命令列介面讓使用者與ChatGPT互動。使用者可以透過克隆GitHub倉庫、配置API Key及大模型服務地址來使用此應用。專案鼓勵社群貢獻,並歡迎提交問題和反饋。

IceRPC之多路複用傳輸>快樂的RPC

https://www.cnblogs.com/xlgwr/p/18213460

本文介紹了IceRPC框架和其基於IceRPC協議的多路複用傳輸特性。IceRPC協議是應用層協議,透過多路複用連線傳輸RPC請求與響應,避免混淆小寫拼寫icerpc。利用多路複用傳輸如QUIC,icerpc能在一個連線上獨立傳輸多個請求和響應,消除隊頭阻塞問題。而IceRPC的Slic傳輸層能夠在傳統的TCP上實現這種機制。文章還提供了一些使用C#建立icerpc連線的示例程式碼,說明了如何結合Slic和TCP使用。作者強調以官方文件為主要學習資源的重要性,並鼓勵持續實踐以提升技能。

微服務實踐k8s&dapr開發部署實驗(2)狀態管理

https://www.cnblogs.com/shiningrise/p/18214159

本文介紹瞭如何建立一個支援Dapr的Web API專案、其相關配置及部署到Kubernetes的步驟。首先取消專案的https支援並新增docker支援;修改Program.cs檔案以禁用開發環境中Swagger的條件限制,並增加Dapr SDK支援。修改WeatherForecastController.cs,透過Dapr.Client包進行狀態管理。同時,還提供了部署到K8s所需的redis.yaml和statestore.yaml配置檔案示例。

Semantic Kernel入門系列:利用YAML定義prompts functions

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

本章節教程講述瞭如何使用YAML檔案定義Semantic Kernel中的prompts functions。YAML提供結構化資料格式,便於管理和維護程式碼。教程中指導瞭如何透過VS建立專案和安裝必要的Nuget包,然後編寫YAML檔案來建立一個生成笑話的提示函式。最後透過載入YAML檔案,利用Semantic Kernel建立並呼叫了此提示函式。

【ESP32】製作 Wi-fi 音響(HTTP + I2S 協議)

https://www.cnblogs.com/tcjiaan/p/18212730

文章討論了使用Wifi傳輸音訊資料相較於藍芽的優勢,以及如何透過ESP32和I2S進行音訊資料傳輸。作者提到透過Wifi可以直接傳輸PCM資料,無需編碼和壓縮,而I2S傳輸的是數字訊號,需連線到功放晶片轉換後才能驅動喇叭。作者分享了自己使用NS4168功放晶片製作WiFi音響的經驗,以及在伺服器上使用ASP.NET Core實現音訊傳輸的過程。原計劃使用.NET Nano Framework但在多個開發板上失敗後,改用esp-idf SDK。最後,文章詳細介紹了ESP32的客戶端配置和Wifi初始化的技術細節。

aspnetcore外掛開發dll熱載入 二

https://www.cnblogs.com/morec/p/18211276

本文介紹了在ASP.NET Core專案中如何實現業務邏輯和主機服務的動態分離,包括動態載入和解除安裝DLL、控制器的動態新增和刪除。文章展示了IActionDescriptorChangeProvider介面和AssemblyLoadContext的使用,解釋瞭如何透過配置檔案管理模組化開發,以及IModule介面在模組連線中的角色。文中還包含了專案配置檔案的示例和一些關鍵程式碼片段的解釋。

深入學習Semantic Kernel:建立和配置prompts functions

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

本章介紹Semantic Kernel中的prompts functions(提示函式)概念和建立方法。提示工程對於大語言模型(LLM)的有效互動至關重要,它涉及精細選擇單詞、短語等以引導模型生成高質量文字。Semantic Kernel透過提供擴充套件方法允許透過Prompts建立KernelFunction,核心依賴PromptTemplateConfig配置。PromptTemplateConfig類定義了函式的屬性,包括名稱、描述、模板格式等,它是定義配置模板的基礎。

基於webapi的websocket聊天室(番外二)

https://www.cnblogs.com/ggtc/p/18206016

文章介紹瞭如何建立一個能處理HTTP和WebSocket請求的簡易webapi伺服器。作者首先比較了兩種請求的相似之處,主要是頭部欄位的不同。文章提供了http請求和websocket請求過程的詳細說明,包括客戶端和服務端互動的步驟和訊息格式。然後,展示瞭如何解析訊息和判斷是否為websocket連線請求。最後,提供了一段完整的關於建立伺服器的示例程式碼。

基於webapi的websocket聊天室(番外一)

https://www.cnblogs.com/ggtc/p/18202984

本文介紹了在實現聊天室時考慮的問題,包括系統網路緩衝區的作用、WebSocket物件內部緩衝區的大小及其處理超大訊息的機制,以及在同一埠上如何區分和管理多個WebSocket連線和HTTP伺服器的連線問題。同時,作者進行了一些實際的測試和程式碼實驗,探索作業系統如何管理不同的TCP連線,並透過程式碼示例展示瞭如何手動管理TCP連線和開啟聊天執行緒。

IceRPC之排程管道->快樂的RPC

https://www.cnblogs.com/xlgwr/p/18212263

文章介紹了IceRPC的排程管道概念,包括定義、排程的抽象過程以及IDispatcher介面程式碼實現。解釋了在C#中如何配置伺服器和客戶端的排程程式,並介紹了排程型別,包括葉排程(Leaf dispatcher)、中介軟體(Middleware)和路由器(Router)。文章末尾提到了排程過程的流程圖和作者的結語。

C#應用的使用者配置窗體方案 - 開源研究系列文章

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

本文介紹了作者對軟體使用者配置窗體進行模組化處理的過程和方法。作者提出,透過將配置窗體剝離至獨立的Dll類庫中,可以在不同應用程式中實現快速複用。文中還提供了其他模組化方案的例子,並詳細說明了如何使用配置窗體類庫,包括類庫的複製、呼叫和設定應用相關內容的步驟。為方便讀者,還提供了原始碼下載連結,並鼓勵讀者根據自身需求定製類庫內容。

主題

Microsoft Build 2024 的 .NET 公告和更新 - .NET 部落格

https://devblogs.microsoft.com/dotnet/dotnet-build-2024-announcements/

Microsoft Build 2024 上的 .NET 公告和更新。

  • 人工智慧相關
    • 引入Tensor<T>型別
    • 引入智慧元件
    • 擴大AI生態系統
    • 監控LLM申請
      • 語義核心遙測
  • 使用.NET進行雲原生開發
    • .NET Aspire GA
    • Linux 原生 .NET
      • 從 Ubuntu 和 RedHat 等官方源安裝
      • Ubuntu 鑿刻容器
    • 減少記憶體使用
      • .NET 9 中的伺服器 GC 發生變化以減少使用
  • C#13
    • params 擴充套件
    • params 支援 Span<T>
    • params 和介面
    • 擴充套件型別
  • Web開發
    • 內建 OpenAPI 文件生成
    • 使用 HybridCache API 的分散式快取
    • 由 Blazor 提供支援的全棧 Web UI
      • 元件建構函式注入
      • WebSocket 壓縮
      • 全域性互動應用程式中的靜態頁面生成
  • 多平臺開發

.NET Aspire 正式釋出:簡化 .NET 雲原生開發 - .NET 部落格

https://devblogs.microsoft.com/dotnet/dotnet-aspire-general-availability/

.NET Aspire 現已正式釋出(GA)。

它可透過 Visual Studio 2022 版本 17.10、最新的 .NET CLI 和 Visual Studio Code 獲取。

本文解釋了選擇 .NET Aspire 的原因、透過 App Host 專案獲得的本地開發體驗、在儀表板中檢視 OpenTelemetry 資料的能力、第三方元件、雲配置/部署等。

  • 使用 Aspire 開發雲原生應用程式 - Visual Studio 部落格

Visual Studio 2022 17.10 和 GitHub Copilot:您的編碼合作伙伴,實現更快、更智慧的開發 - Visual Studio 部落格

https://devblogs.microsoft.com/visualstudio/visual-studio-2022-17-10-now-available/

Visual Studio 2022 版本 17.10 已釋出。

此版本將之前作為擴充套件提供的 GitHub Copilot 和 Copilot Chat 整合到 Visual Studio 中,文章包括 GitHub Copilot 的編碼經驗、高效除錯、測試腳手架等介紹。

  • Visual Studio 2022 版本 17.10.0 | Visual Studio 2022 發行說明 | Microsoft Learn

宣佈推出 NuGet 6.10 - NuGet 部落格

https://devblogs.microsoft.com/nuget/announcing-nuget-6-10/

NuGet 6.10 已釋出。

此版本包括一些改進,例如新增“dotnet nuget config”命令、“packages.config”的漏洞稽核以及快取憑據的使用。

.NET 9 預覽 4 · 問題 #309 · dotnet/公告

https://github.com/dotnet/announcements/issues/309

.NET 9 Preview 4 已釋出。

  • 對“UnsafeAccessorAttribute”的通用引數支援
  • 裁剪支援功能開關
  • 分詞器庫增強
  • OpenTelemetry:更靈活的活動連結
  • PDB 對“System.Reflection.Emit.PersistedAssemblyBuilder”的支援
  • .NET 資料和 EF Core
    • 針對 NoSQL 提供程式的 Azure Cosmos DB 的增強
    • 複雜的分組依據
    • 只讀原始集合
  • .NET MAUI
    • 新的輸入鍵盤
    • Android 15 Beta 1 支援- 針對 iOS 和 Mac Catalyst 的 NativeAOT 改進
  • ASP.NET Core
    • 對 OpenAPI 文件生成的內建支援
    • 引入混合快取
    • 改進了開發人員的異常頁面
    • 為 QuickGrid 新增了 OverscanCount 引數
    • 用於全球互動式 Blazor Web 應用程式的靜態 SSR 頁面
    • 在 IIS 上的應用程式回收期間避免 503
  • WPF
    • 主題改進:Windows 11 主題支援
    • 基於連字元的連字支援

Visual Studio 2022 v17.11 首次預覽 - Visual Studio 部落格

https://devblogs.microsoft.com/visualstudio/first-preview-of-visual-studio-2022-v17-11/

Visual Studio 2022 版本 17.11 預覽版 1 已釋出。

此版本的改進主要集中於提高開發人員和工作負載的生活質量。

  • 版本 17.11 預覽版 1 | Visual Studio 2022 預覽版發行說明 | Microsoft Learn

透過出色的開發人員體驗最大化樂趣並最小化工具 - Visual Studio 部落格

https://devblogs.microsoft.com/visualstudio/maximizing-joy-and-minimizing-toil-with-great-developer-experiences/

為專注於 Microsoft Build 2024 上釋出的新產品和功能的開發人員進行介紹。

  • Visual Studio 2022 17.10 正式釋出
  • Azure 預覽版的 GitHub Copilot
  • .NET Aspire 全面上市
  • 釋出 Visual Studio Code 的 AI 工具包
  • 在Azure API管理中生成AI閘道器
  • Azure API 中心全面可用
  • Azure 容器應用程式的沙箱執行(動態會話)
  • Microsoft Dev Box 和 Azure 部署環境中的新功能

文章、幻燈片等

WinUI3 專案中未找到 Microsoft.UI.Xaml.dll 錯誤

https://zenn.dev/nin_neko/articles/1085f4cc2ca6d6

關於使用最新Visual Studio中包含的WinUI 3專案模板除錯非包時出現錯誤的問題以及解決方法。

基於C#的開源CMS“Orchard Core”環境搭建

https://zenn.dev/zead/articles/orchardcore-setup

從模板建立和啟動 Orchard Core 的說明。

.NET 8 中的 ShortCircuit 和 MapShortCircuit 簡介

https://dev.to/moh_moh701/introduction-to-shortcirc-and-mapshortcirc-in-net-8-12ml

關於 .NET 8 中 ASP.NET Core 中引入的 ShortCircuitMapShortCircuit

事件處理程式名稱中字首“on”的解釋

https://zenn.dev/lilytechlab/articles/ba599338ce469b

討論事件處理程式名稱中通常使用的“On”字首。

使用 .NET 反應式擴充套件觀察檔案系統變化 | endjin

https://endjin.com/blog/2024/05/observe-file-system-changes-with-rx-dotnet

關於使用 Rx 編寫程式碼來監視檔案系統上的更改。

.NET 9 LINQ 效能版

https://steven-giesel.com/blogPost/783a404a-e39e-480f-bc99-a514a75d752d

與 .NET 8 相比,.NET 9 中引入的 LINQ 運算子得到了改進。

我使用 Project IDX 的 Beta 版建立了 .NET 6 和 Azure Functions 的開發環境 - Qiita

https://qiita.com/mnrst/items/3f15c85167efe846ee2c

使用 Google 基於瀏覽器的 IDE 專案 IDX 構建 .NET 6 和 Azure Functions 開發環境的步驟。

[.NET]使用Roslyn進行句法分析和語義分析的總結-LIGHT11

https://light11.hatendiary.com/entry/2024/05/20/190949

Roslyn 中解析程式碼的解釋。文章講了句法分析和語義分析。

網站、文件等

推文

談論“ref struct”介面。 (已合併到Roslyn)

https://x.com/jaredpar/status/1792689177206882745?s=12

image-20240528202218759

版權宣告

  • 國內板塊由 InCerry 進行整理 : https://github.com/InCerryGit/WeekRef.NET
  • 其餘內容來自 Myuki WeekRef,由InCerry翻譯(已獲得授權) : https://github.com/mayuki/WeekRef.NET

由於筆者沒有那麼多時間對國內的一些文章進行整理,歡迎大家為《.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

相關文章