.NET周刊【12月第1期 2024-12-01】

我在.NET Conf China 2024 等你!

.NET Conf China 2024 是一场面向开发人员的社区盛会,旨在庆祝 .NET 9 的发布,并回顾过去一年 .NET 在中国的发展成就。作为延续 .NET Conf 2024 的重要活动,本次峰会汇聚了来自中国各地区的技术社区、知名企业和开源组织的共同努力,是年度国内规模最大的 .NET 线上和线下会议。我们希望通过这次盛会,用中文传播 .NET 相关技术的知识和经验,促进技术交流与合作 。

日程信息:https://dotnetconf.cn/2024/schedule

票务链接:https://dotnetconf.cn/2024/#conference-tickets

国内文章

2024年各编程语言运行100万个并发任务需要多少内存?

https://www.cnblogs.com/InCerry/p/-/async-runtimes-benchmarks-2024

该文章比较了2024年不同编程语言在异步编程中的性能。作者通过相同的基准测试程序,分析了多种语言在协程方面的表现。Rust使用tokio和async_std进行测试,C#展示了async/await与NativeAOT的结合,NodeJS、Python、Go以及Java的虚拟线程也在考虑范围内。文章强调协程在执行暂停和恢复中的优势,适用于协作多任务操作。各语言的代码示例展示了具体实现,方便读者理解和比较。

.NET Core 线程池(ThreadPool)底层原理浅谈

https://www.cnblogs.com/lmy5215006/p/18566995

.NET Core线程池在.NET 6之前由C++实现,在.NET 6之后由C#实现,.NET 8.0.8版本有不同实现。文章描述了ThreadPool的结构和生产者、消费者模型,涉及多种队列如全局、高优先级和低优先级队列。文章提到,各种队列的作用如普通任务、定时任务等。代码实现中,低优先级队列仍在实验阶段,高优先级队列只供内部使用。消费者模型优先从本地队列取任务,否则从高优先级队列取任务。

《HelloGitHub》第 104 期

https://www.cnblogs.com/xueweihan/p/18573326

HelloGitHub 是一个分享 GitHub 上有趣和入门级开源项目的平台,旨在激发编程兴趣。它每月更新,涵盖多种编程语言,如 Python、Java、Go 等。本期介绍了多个项目,包括 C 语言的 deskhop 和 kyanos,C# 的 AvaloniaVisualBasic6 和 FileConverter,C++ 的 carla 和 PrismLauncher,Go 的 dpanel 和 go-blueprint,JavaScript 的 moodist 和 rot.js 等。这些项目涵盖双机共享、网络流量分析、文件签名、自动驾驶模拟、Minecraft 启动器、离线文档查询、Docker 管理等领域,展示了开源的多样性和实用性。

.NET9 - Swagger平替Scalar详解(四)

https://www.cnblogs.com/hugogoos/p/18571088

文章介绍了如何在Scalar中使用Swagger常用功能。通过代码示例展示文档版本说明和接口分类的实现,如使用Tags特性对接口进行分类。作者详细描述了如何通过编码设置接口描述和参数描述,例如通过EndpointSummary和EndpointDescription设置接口摘要和描述。同时,文章还介绍了如何处理枚举类型显示及其描述信息,使用JsonStringEnumConverter实现。这需要调整文档数据结构,涉及到OpenApi配置。文章内容丰富,注重代码实践。

记一次 .NET某hdp智能柜系统 卡死分析

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

作者分享了近一个月的生活琐事,包括被狗咬、买房和孩子跳绳比赛,这些事情影响了他的专注和博客更新。他随后分析了一个.NET程序的卡顿问题,通过WinDbg检查发现主线程在等待垃圾回收(GC)完成,推测是其他线程挂起导致的。作者通过查看线程调用栈,发现是某个线程触发了垃圾回收的暂停,给出相关证据和思考过程。

使用 BenchmarkDotNet 对 .NET 代码进行性能基准测试

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

BenchmarkDotNet是一个.NET开源的性能基准测试框架,支持C#、F#、Visual Basic等语言。本文介绍如何通过BenchmarkDotNet对三种哈希函数MD5、SHA256和SHA1进行基准测试。测试表明,SHA1的耗时最短,但性能不稳定;MD5耗时稍长,误差小,性能稳定;SHA256耗时最长,稳定性最好。BenchmarkDotNet还支持多种报告格式输出,包括Markdown、HTML和CSV等。该项目在GitHub上开源,致力于帮助开发者优化软件性能。

基于 .NET 的开源工作流引擎框架

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

Elsa 是一个开源的 .NET 工作流引擎,用于轻松集成和执行复杂工作流。它支持 .NET 6 以上版本,具备高兼容性和集成能力。Elsa 提供丰富的活动库和强大的可视化设计器,支持多种持久化机制,简化了开发流程。该框架适用于长期、短期及定时工作流,可通过 C# 代码或可视化设计器来定义和管理工作流,极大提升了开发效率。

使用YARP来实现负载均衡

https://www.cnblogs.com/huangmingji/p/18568430

YARP 是一个利用 ASP.NET 和 .NET 构建的高性能反向代理库,支持 HTTP/2 及 gRPC,适合负载均衡和自定义路由。在 Windows、Linux 和 MacOS 上均可用。通过配置文件或后台配置进行管理,提供了可定制的缓存策略支持。

计算机概念------零拷贝

https://www.cnblogs.com/aoximin/p/18567619

本文介绍计算机系统中的零拷贝技术,强调通过减少多余的数据拷贝提高效率。零拷贝利用了DMA技术,让外部设备直接访问内存,而CPU不直接参与数据传输,从而提高系统性能。此外,内核空间和用户空间的划分保护系统安全,并通过内存映射实现高效的数据访问。文章还介绍了C#中的MemoryMappedFile类实现内存映射文件的应用,提高对文件内容的操作效率。

PasteEx:一款.NET开源的Windows快捷粘贴神器

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

PasteEx是一款.NET开源工具,提升Windows粘贴功能效率。它直接将剪贴板内容转为文件,支持多种文件格式和图像类型,并提供自定义文本扩展和快捷键操作。适用于Windows 7及以上系统,需.NET Framework 4.5.2或更高版本。项目开源,集成于C#/.NET精选项目中。

什么是.NET的强类型字符串(Strongly typed string)?

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

在.NET中,强类型字符串用于特定结构表示字符串数据,提供编译时检查、减少错误、提高可读性和维护性。相比枚举,强类型字符串具备更好的扩展性和约束性。枚举提供类型安全和编译时检查,但输入约束有限,易导致错误。强类型字符串使用不可变值类型,并覆写ToString()方法以返回字符串值。示例中描述了.NET中HashAlgorithmName类的实现,展示了强类型字符串的实际应用。

一个新的音乐管理软件--JxAudio

https://www.cnblogs.com/j4587698/p/18572570

JxAudio是一个基于.net core的音频管理系统,兼容Subsonic协议,支持音乐播放、上传、下载等。该系统支持Docker部署,适用于Windows、Linux、MacOS。其优势包括能够通过插件直接播放网盘音乐,尤其支持AList网盘,这样无需本地存储就可以管理音乐。JxAudio允许插件扩展,可以满足挂载OneDrive或在线修改MusicTag等需求。项目使用GPL3.0协议在Github开源。目前开发的官方客户端兼容Subsonic协议,用户可使用音流作为客户端。

.NET Core 异步(Async)底层原理浅谈

https://www.cnblogs.com/lmy5215006/p/18571532

多线程和异步是不同概念。异步适用于IO密集型场景,避免IO等待导致线程饥饿,不加速执行,仅不阻塞。多线程适用于CPU密集型任务,利用多核提高速度和并发,但过多同步降低效果。异步操作基于IO完成端口,即一种发布订阅模式队列,帮助解决异步IO问题。C#异步操作依赖此机制,尤其在ThreadPool内部实现中。通过源码可见,异步操作轮询获取IO数据并执行回调。

(系列十二)Vue3+.Net8实现用户登录(超详细登录文档)

https://www.cnblogs.com/cyzf/p/18560576

本文介绍了OverallAuth2.0项目的用户登录功能开发。此系统为权限和流程管理,适合新手和有经验的人。文章重点在于实现带认证的用户登录,包括登录失效处理和异常信息提示。后台接口编写是主要内容,涉及创建用户登录后的模型,以及SysUserRepository仓储的接口实现。作者建议读者结合系列前文,以便更好理解项目结构。

WinUI(WASDK)使用BotSharp框架开发多智能体桌面机器人管理助手(生图开关灯不在话下)

https://www.cnblogs.com/GreenShade/p/18570348

大语言模型展示出广泛应用潜力,特别是在智能助手方面。文章介绍使用WinUI和BotSharp开发多智能体桌面助手,强调LLMs的功能。涉及技术包括.NET、WinUI、BotSharp和OpenAI等。讨论了BotSharp的功能,如对话、图片生成、语音识别等。软件目前在开发中,已实现与大语言模型的互动,使用了阿里通义千问2.5和通义万相。文章还涵盖了LiteDB存储实现和OpenAI插件的改造,目标是实现功能兼容。最后,描述了UI开发和功能模块的代码实现。

一款.NET开源的Windows资源管理器标签页工具

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

QTTabBar是基于.NET开发的小工具,提供Windows资源管理器的多标签功能,类似IE 7、Firefox和Opera,提升工作效率。还支持文件夹预览及功能插件,如文件操作工具、树型目录和状态栏显示。安装需先配置Microsoft .NET Framework 3.5,然后下载并运行QTTabBar安装包。项目源代码和更多特性可在GitHub查看并支持。该项目已被列入优秀项目和框架精选,方便了解最新技术动态和最佳实践。

C#/.NET/.NET Core技术前沿周刊 | 第 14 期(2024年11.18-11.24)

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

这篇文章汇总了C#/.NET/.NET Core领域的最新技术文章和工具,如PasteEx提高粘贴效率、Umbraco CMS构建网站、.NET 9的新异步编程方法Task.WhenEach以及Visual Studio分析内存泄漏。这些内容帮助开发者跟进技术趋势,提高工作效率。文章还包括开源项目和学习资源的推荐,旨在支持个人和企业的技术进步。

.NET Conf China 2024 AI相关内容解析

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

2024年中国.NET开发者峰会将在上海举行,主题为"智能、创新、开放"。大会聚焦人工智能和机器学习在.NET中的应用,涉及最新技术动态。大会由资深专家分享实践经验,包括生成式人工智能和多智能体系统的开发。微软产品团队探索GPT-4的应用,推动Semantic Kernel项目,为.NET提供统一AI调用接口。演讲涵盖自然语言编程、企业级AI应用开发等主题,强调AI整合、信息安全、智能体管理等挑战。Semantic Kernel适合构建企业AI底座,助力快速集成AI能力。会中展示了.NET与AI结合的创新应用,为开发者提供丰富灵感。

开源 - Ideal库 - Excel帮助类,TableHelper实现(二)

https://www.cnblogs.com/hugogoos/p/18577563

本文讲解了如何实现对象集合与DataTable的相互转换,提供了一系列方法供开发者使用。核心功能包括基于列名数组、列名-类型键值对、类生成表格,以及将表格转换为实体对象集合的方法。还包括对一维数组进行转换的方法和行列转置功能。其中,通过反射获取类的属性信息,将类转换为表格,并对属性交伙设置了特性值的处理。同时,提供了对应的单元测试来验证方法的正确性和稳定性。

c# is 和 as 浅看重制版

https://www.cnblogs.com/aoximin/p/18572890

本文探讨了C#中is和as运算符的用途及差异。is运算符用于在运行时判断对象的类型以避免异常,而as提供一种更高效的类型转换方式。文章通过代码示例演示了is和as的使用场景及其生成的IL代码。is只能检查继承关系,无法判断自定义转换。as相较于频繁使用is和转换显得更优,因其只检查一次类型。作者最终解释了选择as的性能考量,并详细分析is和as在编译后的表现与区别。

周末基于 .NET 9 + K8S 写了个 MockHttp

https://www.cnblogs.com/neverc/p/18568441

MockHTTP可以将现有HTTP请求转换为GET请求,通过设置cron实现定时调用,并使用自定义代码格式化数据,通知用户。用户可每天早上自动获取特定信息如博客文章及天气变化,并在下雨时收到提醒。利用.NET 9 BCL进行数据解析,包括XPath查询、JToken解析、Regex等。定制化代码应尽量减少内存占用,以适应应用容器化限制。

主题

Heroku 上的 .NET 支持

https://blog.heroku.com/dotnet-support-on-heroku

Heroku 上对 .NET 的官方支持现已作为测试版提供。

这使您可以轻松地从 heroku 命令创建 .NET 应用程序并将其部署到 Heroku。

介绍...Soba! - 开发者更新 - 2024 年 11 月 25 日 - 官方/开发更新 - VRChat 提问论坛

https://ask.vrchat.com/t/developer-update-25-november-2024/28125#p-58274-introducing-soba-4

宣布将引入 Soba 作为一种可在 VRChat 世界中使用的新编程机制(乌冬面)。

UdonSharp 是一种从 C# 到 Udon 的转译方法,而 Soba 是将 C# 程序编译为 CIL (MSIL) 并在 Soba VM 上运行的方法。

轻松评估 AI 应用程序的质量 - .NET 博客

https://devblogs.microsoft.com/dotnet/evaluate-the-quality-of-your-ai-applications-with-ease/

发布了用于评估 AI 输出的 Microsoft.Extensions.AI.Evaluation 预览版。

Microsoft.Extensions.AI.Evaluation 包括评估抽象、质量评估机制和报告以及运行它们的命令行工具。

使用 .NET 9 的新 NuGet 解析器显着加快包恢复速度 - .NET 博客

https://devblogs.microsoft.com/dotnet/dotnet-9-nuget-resolver/

在 .NET 9 中引入改进的 NuGet 包依赖项解析。

据说新算法产生了显着效果,将花费的时间从 16 分钟减少到 2 分钟。

2.8.22 版 · StackExchange/StackExchange.Redis

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

StackExchange.Redis 2.8.22 已发布。

此版本修复了更改配置值时 IPv6 终结点的格式,并包括对 Azure 托管 Redis 的默认功能版本的支持。

释放记忆的力量:宣布语义内核的记忆包全面可用 |

https://devblogs.microsoft.com/semantic-kernel/unlocking-the-power-of-memory-announcing-general-availability-of-semantic-kernels-memory-packages/

语义内核记忆包现已普遍可用。

支持连接到各种矢量存储,例如 Azure AI Search 和 Cosmos DB,以及 Pinecone、Qdrant、MongoDB、Redis 和 SQLite。

文章、幻灯片等

C#活动日历

使用 Blazor Virtualize .Net 8 加速 + 内存压缩 - Qiita

https://qiita.com/masayahak/items/5ca1e43e9d0a5ea8fba2

了解如何在 Blazor 中使用 Virtualize 在查看大量数据时降低速度和内存使用量。

获取继承/实现 C# 中特定类型的 Type - Qiita

https://qiita.com/omt_teruki/items/731779b50a9a7f48f00a

关于如何表达继承/实现特定类型的类型的Type。

AI 驱动的见解:在 Visual Studio 中使用 GitHub Copilot 简化变量分析 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/ai-powered-insights-streamlined-variable-analysis-with-github-copilot-in-visual-studio/

了解 Visual Studio 上的 GitHub Copilot,它允许您分析变量以帮助您理解它们并接收代码修复建议。

我尝试将 COM 与 Native AOT 结合使用

https://zenn.dev/shinta0806/articles/native-aot-com

了解如何在使用 Native AOT 构建的应用程序中使用 COM。

直到C#没有经验的工程师加入后才赶上C#

https://zenn.dev/nexta_/articles/3d3560798ec1ff

这是一个在没有 C# 经验的情况下使用 C# 参与开发后,如何赶上以及偶然发现哪些点的故事。

2024 年 Avalonia UI:增长、挑战和未来之路

https://avaloniaui.net/blog/avalonia-ui-in-2024-growth-challenges-and-the-road-ahead

关于 Avalonia UI 2024 年的增长和挑战结果以及 2025 年的举措。

文章不仅谈论社区,还谈论企业的现状。

NET 9 BinaryFormatter 迁移路径

https://dev.to/karenpayneoregon/net-9-binaryformatter-migration-paths-4i5a

介绍 System.Text.Json、XML、MessagePack 和 protobuf 的实现作为 BinaryFormatter 的迁移目标。

初学者如何使用AttributeUsage详解

https://zenn.dev/sakaki_web/articles/ab36232d99aac1

属性解释属性的用法。

C# 13 功能:新增功能以及如何使用它

https://blog.elmah.io/c-13-features-whats-new-and-how-to-use-it/

引入 C# 13 中的新功能。

ASP.NET 中使用 Seq 和 ILogger 轻松进行日志记录管理

https://www.code4it.dev/blog/logging-with-ilogger-and-seq/

关于使用 Seq 对 ASP.NET Core 应用程序进行简单日志管理。

使用 GitHub Copilot 改变您的调试体验 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/transform-your-debugging-experience-with-github-copilot/

介绍 Visual Studio 的 GitHub Copilot,自动执行单元测试、调试计划、断点设置、变量分析和修正建议。

如果想限制并发执行的C#任务数量,可以通过稍微扩展TaskScheduler来实现 - Qiita

https://qiita.com/spc_ksudoh/items/c57e6e277a069eb15672

如何自定义TaskScheduler来控制并发Task执行的数量。

使用 Blazor 进行简单 JWT 身份验证/授权(使用 .Net 8 WebApi)- Qiita

https://qiita.com/masayahak/items/e54ff025d29b3caf85bc

了解如何在 Blazor Web 应用程序中实现 JWT 身份验证和授权。

减少 .NET 中的 AWS Lambda 冷启动

https://dev.to/aws-builders/reduce-aws-lambda-cold-starts-in-net-4kha

了解如何减少 AWS Lambda 上 .NET 应用程序的冷启动时间文章介绍了ReadyToRun、Native AOT等方法和结果。

Visual Studio 17.12 中的调试器和诊断更新 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/debugger-and-diagnostics-updates-in-visual-studio-17-12/

在 Visual Studio 2022 17.12 中引入调试器和诊断的新功能/更新。

  • 内联方法返回值显示
  • 导出断点组
  • 与 Copilot 一起研究变量
  • IEnumerable Visualizer 中的 IntelliSense
  • 随着时间的推移分析内存使用情况
  • Profiler 仪表直方图

我尝试用Raspberry Pi运行铁路模型(N轨) - Qiita

https://qiita.com/takeo-t/items/193a1d0985e8309f0165

关于在 Raspberry Pi 上运行 .NET 程序并创建控制 N Gauge 的机制。

弯曲 .NET - ReadLine 模式

https://nietras.com/2024/11/29/bendingdotnet-readline/

一种使用"is"作为代码模式以通过 TextReader.ReadLine 读取到末尾的技术。

相关推荐
InCerry6 天前
.NET周刊【12月第2期 2024-12-08】
.net周报·.net周刊
InCerry25 天前
.NET周刊【11月第4期 2024-11-24】
.net周报·.net周刊
InCerry1 个月前
.NET周刊【11月第3期 2024-11-17】
.net周报·.net周刊
InCerry1 个月前
.NET周刊【11月第2期 2024-11-10】
.net周刊
InCerry2 个月前
.NET周刊【11月第1期 2024-11-03】
.net周报·.net周刊
InCerry2 个月前
.NET周刊【10月第4期 2024-10-27】
.net周刊
InCerry2 个月前
.NET周刊【10月第3期 2024-10-20】
.net周报·.net周刊
InCerry2 个月前
.NET周刊【10月第1期 2024-10-06】
.net周报·.net周刊
InCerry4 个月前
.NET周刊【8月第1期 2024-08-04】
c#·.net周报·.net周刊