国内文章
.NET 9 AOT的突破 - 支持老旧Win7与XP环境
.NET 9 引入了 AOT 支持,使得应用程序能够在编译时优化,以在老旧 Windows 系统上运行。这项技术通过静态编译,消除运行时的 JIT 编译,加速程序执行。尽管 Windows 7 和 XP 已不再主流,它们在某些领域仍被广泛使用。.NET 9 的 AOT 旨在提升兼容性和性能。AOT 编译程序通常执行更快,部署简单,降低了维护成本。项目配置展示了如何实现 AOT 支持,以及相关依赖的管理。
C# 13(.Net 9) 中的新特性 - 半自动属性
C# 13 和 .Net 9 预计在2024年11月发布,其中的半自动属性引入了新特性field关键字,优化了自定义逻辑的书写,无需手动声明字段,提升了代码可读性。需注意field关键字属于破坏性更新,可能影响旧代码。该特性目前在Visual Studio 2022 17.12 Preview 3.0中已经实装,但仍处于预览状态,需将C#语言版本设置为preview。
.NET 8.0 开源在线考试系统(支持移动端)
本文介绍了一款基于.NET 8.0的免费开源跨平台在线考试系统。系统支持桌面和移动端,适用于多种数据库,可在多种操作系统上运行。功能包括考试发布、试卷管理、阅卷和问卷调查等,支持国产化部署。文章详细描述了系统的技术架构、功能特色和部署方法。项目源码结构明确,提供跨平台部署步骤。作者还鼓励读者访问项目地址获取更多信息和参与交流。
管中窥豹 - .NET Core到.NET 8 托管堆的变迁
.NET底层结构研究揭示托管堆从LOH到POH再到NonGC的演变。文章提到.NET Core 3静态数据放在LOH较好,而.NET 5引入POH解决LOH定义不符问题,.NET 8新增NonGC堆提高性能。强调研究要结合实际,避免依赖过时信息。
.net 在线客服系统,到底能不能处理 50万 级消息量,系统架构实践
.net core开发的在线客服系统因其免费共享吸引用户,已处理48万余条消息。系统架构使用.net core, SQL Server和MySQL,稳定实现消息处理中间件和TCP/IP长连接等功能。客服端程序用WPF框架,提供较高开发效率和稳定性。系统支持横向扩展和弹性配置,可根据需求调整服务器数量,提高或减少承载能力。消息传输基于TCP协议,通过ACK标志和字段确保消息送达。处理网络异常时,系统通过检测Socket对象属性和实施心跳机制来监测网络连接状态,如中断立即处理。整个系统的开发展示了.net技术体系的高效性和可扩展性。
从入门到放弃,我们为何从 Blazor 回到 Vue
我们的开发团队在使用 C# 和 .NET 框架的过程中经历了尝试和放弃 Blazor 的过程。尽管 Blazor 提供了统一开发体验和增强性能等优势,但其局限性显著。主要问题包括 UI 组件库有限、前端效果难以实现以及社区支持不足。加上缺乏实际应用案例和微软的关注转移,我们最终决定放弃 Blazor。我们将重构现有产品的前端部分,并使用 Vue 等更成熟的技术。Blazor 适用于小型团队和简单应用,但不适合复杂项目。选择开发框架需谨慎,虽然 Blazor 理念新颖,但尚未成熟。
.NET 实现的零部件离散型 MES+WMS 系统
EasyMES 是基于 .NET 6 开发的综合管理系统,适用于零部件离散型生产企业,集成了仓储和自动排程功能。它通过界面化的管理提升生产效率,支持多种数据库,并开源发布。文章详细描述了系统功能,如精细化生产管理、智能仓储管理、自动排程等,以及部署和操作指导。EasyMES 促进了制造业的信息化建设并提供了交流与改进的社区平台。
C#/.NET/.NET Core优秀项目和框架2024年10月简报
本文介绍了多个基于.NET的优秀开源项目和框架,包括MethodTimer、MaterialSkin、Moq、TouchSocket等。这些项目涵盖了从UI设计、网络通信到权限管理系统的各个领域,旨在提高开发效率和代码质量。MethodTimer提供方便的计时代码注入,MaterialSkin提供Material Design风格的UI控件,Moq提供简单直观的.NET模拟库,TouchSocket整合多种通信模块。适合需要高效、模块化开发的场景。每个项目的详细介绍和源码链接在公众号文章中可以找到。
C#使用Socket实现分布式事件总线,不依赖第三方MQ
CodeWF.EventBus.Socket 是基于 Socket 的分布式事件总线,支持 CQRS,避免了对第三方 MQ 的依赖。它通过 TCP 协议实现高性能、低延迟的通信,灵活易用,适合分布式系统。使用时,服务端创建并启动 EventServer,客户端连接并订阅事件,发布和查询命令可以灵活处理事件。可以通过 NuGet 安装该包。在生产环境中,需要配置公网 IP 并考虑异常处理、重连逻辑以提高可靠性。
.NET 4.0下实现.NET4.5的Task类相似功能组件
.NET 4.5 引入的 Task 类简化了异步编程,但在旧版 .NET 4.0 系统中未直接支持完整功能。为解决此问题,开发了 TaskExCum 组件,为 .NET 4.0 提供类似 .NET 4.5 的 Task 功能,包括 Task.Run() 和 Task.WhenAll() 方法。TaskExCum 是一个静态类,Run 方法异步执行任务并获取结果,WhenAll 方法等待多任务完成。它使用条件编译兼容不同 .NET 版本,通过 Task.Factory.StartNew 启动任务,采用默认线程池调度器,提高性能。WhenAllCore 方法处理任务集合,等待完成并收集结果。
深入解析C#异步编程:await 关键字背后的实现原理
本文详细探讨了C#异步编程中await的实现原理。使用async和await关键字可以提高程序的响应性,特别在I/O操作中。示例中,作者展示了一个简单的异步方法,强调编译器如何为每个异步方法生成状态机。状态机结构体包含异步方法的所有局部变量和状态信息,并通过几种关键步骤实现回调函数的注册和触发。整体内容提供了关于状态机类生成和执行步骤的细节,解释了await实现的核心机制。
.NET + 微信小程序开源多功能电商系统
该文章介绍了一款基于微信小程序、LayUI和.NET的多功能电商系统。系统使用C#编写后台,并集成多个技术组件以实现高效管理。系统功能包括交易模式、SKU管理、订单管理、客户管理等。此外,项目支持插件扩展,便于二次开发。文章还详细描述了开发环境、技术架构及项目配置步骤,适合.NET开发团队低成本快速搭建应用程序。
推荐一个 ASP.NET Core 的轻量级插件框架
本文介绍了PluginCore,一个专为ASP.NET Core设计的插件框架,简化插件开发与集成,提高开发效率。框架特点包括动态WebAPI、插件隔离与共享、前后端分离、热插拔、依赖注入和模块化等,支持零数据库依赖和极少外部依赖。项目使用简单易用,仅需几行代码即可集成。通过NuGet包管理器或Docker运行,开发者可以快速开始项目。项目应用实例有KnifeHub和Dragonfly,代码托管在GitHub上,提供在线文档供参考。
.NET 平台 WPF 通用权限开发框架 (ABP)
本文介绍了一款基于ABP商业版开发的WPF框架,支持跨平台应用。框架不仅保留了ABP的核心功能如用户、角色管理和多租户支持,还嵌入Prism MVVM框架和多种UI控件如Syncfusion。该框架填补了ABP在WPF方面的空白,并包括Xamarin.Forms版本,适合有桌面和移动开发需求的开发者。项目地址提供在GitHub,相关效果图展示了框架在登录、组织管理等方面的应用。
AvaloniaUI项目离线开发全攻略:IDE安装、模板应用与NuGet私有化部署一站式解决
本文提供在离线或网络受限环境中开发.NET项目的解决方案,特别是Avalonia UI项目。内容包括离线安装Visual Studio 2022和JetBrains Rider,配置Avalonia UI模板,以及部署私有NuGet服务以便共享和管理NuGet包。另外,本文介绍如何制作NuGet包并提供相关项目示例。
.NET使用Moq开源模拟库简化单元测试
Moq是一个.NET开源模拟库,利用Linq表达式树和lambda表达式,支持接口和类的模拟。其API简单直观,无需模拟经验,有助于简化单元测试中的依赖管理和验证,提高代码的测试性和维护性。文章介绍了如何创建.NET控制台应用并使用Moq库进行模拟对象的创建和调用参数的验证。此外,Moq可模拟方法抛出异常,利于单元测试。文末提供了开源地址,鼓励参与开源社区。
编写高性能爬虫抓取股票行情数据
文章介绍了一个用于股票交易系统中行情数据抓取的小系统。系统支持自定义股票列表及实时行情抓取,使用 HttpClient 访问财经网站。详细讲解了如何创建和配置 HttpClient,例如使用共享实例及设置基础地址等。此外,文章描述了不同类型的 HTTP 内容和 GET 请求的实现。使用 .NET 技术处理 HTTP 请求,确保易于管理和高效抓取数据。
Abp源码分析之Abp最小系统
该技术文章介绍了如何使用ABP框架创建和配置一个API项目。首先,通过修改Program.cs文件启动应用程序,完成依赖注入和模块的初始化。然后,创建BookAbpModule.cs模块,配置Swagger服务以支持API文档生成。在模块化编程部分,介绍了如何新建AbpModuleA类库并通过Console输出确认模块生命周期方法的执行。文章详细讲述了创建和配置过程,但缺乏实际应用场景和完整代码示例。
基于Material Design风格开源、免费的WinForms UI控件库
本文介绍了一个基于Google Material Design风格的开源.NET WinForms UI控件库MaterialSkin。WinForms是一个传统的桌面应用程序框架,MaterialSkin提供了一系列Material Design风格的UI控件,开发者可以轻松构建符合规范的应用程序。项目源码和示例可以在GitHub上获取。
dotnet core微服务框架Jimu ~ 会员授权微服务
该文章介绍了一个基于 .Net Core 6.0 的授权服务项目。用户通过用户名和密码获取 token,然后用该 token 访问受保护的 API。项目包括两个公开接口:获取 token 和获取会员信息。还有一个不公开的接口方法用于内部调用。文章详细描述了接口的声明和实现过程,使用 Jimu 和 Autofac 进行服务注册。通过依赖注入实现日志记录功能,并使用模拟数据进行会员管理。
.NET 9 中没有 wasi 实验性支持
文章介绍了为.NET/C#开发者简化组件开发的componentize-dotnet项目,这个由Bytecode Alliance发起的NuGet包工具,使得将代码编译为WebAssembly组件变得简单。文章详细说明了如何使用.NET 9 Preview 7进行开发,包括安装软件、配置NuGet、添加相关包,以及构建和运行WebAssembly组件的方法。此外,还讨论了组件间的互操作性和选择编译器的便利。文章鼓励开发者加入Bytecode Alliance社区参与该项目。
.NET云原生应用实践(五):使用Blazor WebAssembly实现前端页面
本章介绍如何用Blazor WebAssembly实现“贴纸”页面的管理,集成认证与授权机制。Blazor WebAssembly是微软开发的Web框架,允许用C#和.NET构建客户端应用,不用JavaScript。代码编译为WebAssembly字节码,提高性能。本系列使用Blazor WebAssembly项目模板开发,选择它是因为熟悉C#技术栈,开发体验佳。在本案例中,使用Blazor友好的技术如Blazor Bootstrap组件库。讨论包括自定义组件和使用HttpClient访问后端服务。Blazor WebAssembly让开发者可用C#构建互动和动态的用户界面,避免学习JavaScript框架,便于沟通与开发。尽管很多前端框架可选,但由于Blazor在本案例中足够简化,因此优先选择。
主题
介绍 Microsoft.Extensions.VectorData 预览版 - .NET 博客
devblogs.microsoft.com/dotnet/intr…
Microsoft.Extensions.VecotrData 已预览为矢量存储的 API 抽象层。
本文介绍了使用内存存储和 Ollama 实现嵌入和查询的示例。
Uno Platform 5.5 - 自动化应用程序打包、.NET 9 RC2、OpenGL、WebView2 等
Uno平台5.5已经发布。
此版本包括简化的应用程序打包、对 .NET 9 RC2 的 WebAssembly 支持、对 Visual Studio 2022 的全面热重载支持、Wasm 的 AOT 配置文件等、适用于 WebView2 的 WebAssembly、OpenGL Canvas、新的 Skia Canvas、可编辑组合包括对 Box 的更新、 TemplatedParent、性能改进等等。
版本 11.2.0 · AvaloniaUI/Avalonia
Avalonia UI 11.2.0 已发布。
此版本包含各种改进,包括添加新的 API、内部重构和默认 Metal 渲染。
WPF 的未来:前方的变革之旅
关于 Avalonia XPF 的未来计划和新许可证。
针对小型开发人员的新独立许可证可通过按应用程序许可模式获得。该公司还计划将来提供免费的 Windows 社区版。
使用 .NET 6 的 Window Server 2022 映像用户的重大更改
techcommunity.microsoft.com/t5/azure-co…
关于从 Microsoft Azure 中的 Windows Server 2022 映像中删除 .NET 6,因为对 .NET 6 的支持将于 11 月 12 日结束。
它将于 2025 年 5 月 13 日从映像中删除,并且在此之前的六个月内,安全修复程序仅适用于 Azure 市场中的映像。
当前用户将需要在该日期之前迁移到 .NET 8 等。此外,.NET 8 及更高版本不包含在 Windows Server 映像中,因此用户必须安装它们。
文章、幻灯片等
通过聊天控制家电! LLM实现智能家居生活
关于通过结合 Semantic Kernel、Azure OpenAI Service (gpt-4o-mini)、Blazor 和 Nature Remo Cloud API 来构建通过聊天控制家电的系统。
Rust 的借用检查器与 C# 中的借用检查器的比较
一篇比较 C# ref 和 Rust 生命周期的文章。
使用语义内核释放 .NET 中 GitHub 模型的强大功能 - .NET 博客
devblogs.microsoft.com/dotnet/gith…
使用语义内核中的 GitHub 模型的说明。文章介绍了使用Phi-3.5-mini实现聊天的示例。
Word 插件开发中的 C# asyc/await
.NET Aspire 9.0 RC1:简化设置、添加 Azure Functions 支持以及其他改进
引入 .NET Aspire 9.0 RC1 中的更改。
如何提高 .NET 中读取查询的 EF Core 性能
介绍 Entity Framework Core 的 9 个性能技巧。
使用 Playwright 轻松进行 .NET Web 应用程序集成测试
了解如何使用 PlaywrightTestBuilder 轻松设置 Playwright Web 集成测试。
.NET 9 中的新增功能:两种新的 LINQ 方法
介绍.NET 9中添加的LINQ方法CountBy和AggregateBy。
不使用数组或列表的对象池 - Qiita
如何实现基于链表的对象池。
套接字耗尽仿真
介绍如何导致套接字耗尽以及如何检查操作系统状态。
使用 .NET 应用程序继续连接到数据库 - Qiita
如何使用 System.Data.Common、System.Data.OleDb (OLE DB) 或 System.Data.Odbc (ODBC) 连接到数据库,而不直接使用特定驱动程序。
探索 xUnit v3 中的新功能
介绍 xUnit v3 中新的断言 API,该 API 目前正在开发中。
[C#] 尝试反编译引用类型记录 - Qiita
我们正在研究记录类型(记录类)是如何编译的以及继承它们时会发生什么。
在 Windows ARM 上使用 Sql Server
weblog.west-wind.com/posts/2024/…
如何使用 Arm 处理器上的 Visual Studio 在开发环境中运行 SQL Server。本文介绍了如何安装 LocalDb 并使其以某种方式运行。
.NET Muxer(又名 dotnet.exe)简介 - Steve Gordon - Code with Steve
www.stevejgordon.co.uk/a-brief-int…
简单解释启动应用程序时 .NET Muxer(dotnet.exe;dotnet 命令)在内部执行的操作。
库、存储库、工具等。
AnnulusGames/ZeroMessenger:适用于 .NET 和 Unity 的零分配、极快的内存消息传递库。
内存中消息传递库专注于零分配和性能。

网站、文档等
我的书“.NET 开发人员实用调试”现已免费!
michaelscodingspot.com/free-book/
2020 年编写的一本关于 .NET 调试的书《Practical Debugging for .NET》已作为免费电子书发布。
本文由博客一文多发平台 OpenWrite 发布!