.NET周刊【12月第2期 2024-12-08】

ops/2024/12/23 0:39:11/

国内文章

终于解决了.net在线客服系统总是被360误报的问题(对软件进行数字签名)

https://www.cnblogs.com/sheng_chao/p/18581139

升讯威在线客服与营销系统由.net core和WPF开发,旨在开放、开源、共享。开发者为解决360与其他国产管家的误报问题,采用数字签名以提升软件安全性。使用Signcode.exe工具可为多种文件类型提供数字签名,增强可信度,并通过时间戳服务维持有效性,避免重签名。生成数字签名证书涉及自签名证书创建及导出,Signtool用于签名执行。制作根证书和子证书确保许可范围,通过Signcode完成文件签名。同时,强调证书安全及描述信息准确性,以防安全问题及证书吊销。该系统保障24/7稳定运行,面向.NET社区,倡导开源合作。

.NET Core 锁(Lock)底层原理浅谈

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

本文介绍了CPU原子操作的概念,强调其类似于数据库事务。CPU能保证单条汇编的原子性,通过锁机制实现多条汇编的原子性。Interlocked类利用CPU锁保障原子性,尤其适用于处理8字节数据的long类型。在不同架构中,x86面对超过4字节的数据不保证原子性,需要使用64位架构或CPU锁机制。用户态锁和内核态锁各有优缺点,用户态锁在高并发情况下可能浪费CPU资源。volatile关键字用于避免编译器在多线程中错误优化。示例代码展示了使用Interlocked类实现简单自旋锁,以及通过SpinWait让CPU在无竞争获取锁时减轻负担。

ASP.NET Core 9.0 中新增的MapStaticAssets() 中间件

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

Core 9.0版本新增了MapStaticAssets中间件,旨在替代UseStaticFiles,解决静态资源传输压缩、缓存效率低和指纹识别缺乏的问题。MapStaticAssets提供静态资产的压缩与指纹识别,采用基于内容的ETag,提升资源加载速度及用户体验。其在发送请求时会设置ETag、缓存标头,并使用压缩中间件。尽管如此,UseStaticFiles在处理虚拟文件等方面仍有其不可替代性。建议在可用情况下使用MapStaticAssets以提升系统性能。

基于 C# 编写的 Visual Studio 文件编码显示与修改扩展插件

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

在软件开发中,文件编码问题不可忽视。不同操作系统和编辑器可能导致乱码和编译错误。C#编写的Visual Studio扩展插件FileEncoding能够实时显示文档编码,并允许用户轻松修改。该插件提高了跨平台开发的效率,方便用户识别和调整文件编码。插件源代码和使用方法可以在市场和GitHub找到。此外,该项目已被收录到C#/.NET优秀项目列表中,有助于开发者了解最新动态。

Natasha v9.0 为 .NET 开发者提供 [热执行] 方案.

https://www.cnblogs.com/NMSLanX/p/18261797

Natasha v9.0 推出了热执行方案,支持在控制台和新版Asp.net Core架构中动态重编译项目,无需停止工程即可更新结果。这项技术通过语法树重写与动态编译实现,区别于传统的热重载。热执行能够快速响应文件改动,适合技术初学者和项目初期开发者。通过添加指令来优化重编译过程,如释放模式编译、异步代理、排除二义性引用等。项目支持.NET 3.0及以上版本,适用于不含Source Generator的版本。全新代理执行过程保证参数清晰,程序只在首次运行时执行特定代码。

一款基于 .NET + Blazor 开发的智能访客管理系统

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

访客管理在各类场所中变得越来越重要。传统方式低效且易出错,而基于.NET和Blazor的智能访客管理系统采用数字化手段优化管理流程,提高安全性与效率。系统具备快速注册、直观仪表板、多维度设置、即时警报等功能,支持多语言和多平台操作。项目同时开源,鼓励开发者参与与贡献,旨在提升C#/.NET领域的开发效率。该系统确保了访客管理的规范性和高效性,是现代机构管理的重要工具。

基于.NetCore开发博客项目 StarBlog - (32) 第一期完结

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

本文记录了 StarBlog 项目的状态及 v2 版本的开发规划。作者自2022年以来开发该项目,以熟悉AspNetCore为目标,过程中也进行了Vue前端学习。作者意识到目前的项目过于基础,计划专注于其他项目,如StarSSO、EchoSubs等。此外,作者指出了当前版本的不足,包括接口方法使用不当、返回数据类型不合理等,并计划在v2中解决。此外,还规划了通过使用Next.js和React技术栈重构前后台,增强访问统计和文章编辑功能,引入AI功能和全文检索引擎。作者总结AspNetCore的功能,重点介绍异常处理和中间件的应用。

构建你的.NET Aspire解决方案

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

.NET Aspire 是一组工具和模板,用于构建云原生 .NET 应用程序。它通过处理特定问题的 NuGet 包支持小型互连微服务。它改善了云原生应用程序的构建体验,包括应用程序的编排和集成。 .NET Aspire 提供适用于 Visual Studio 和 CLI 的项目模板,确保应用程序与服务无缝连接。用户需要满足一定前提条件,如 .NET 8.0、Docker 和支持的 IDE。通过命令行工具安装模板后,用户可以创建最小的 .NET Aspire 项目,协调多服务的业务流程。该工具包支持多种测试项目格式,适用于不同类型的开发需求。

TesseractOCR-GUI:基于WPF/C#构建TesseractOCR简单易用的用户界面

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

本文介绍如何使用WPF/C#构建TesseractOCR用户界面,以提升命令行使用的便利性。首先,用户需在本地安装TesseractOCR并从GitHub下载依赖框架的压缩包。界面设计简单易用,支持中文和英文识别。作者说明了两种封装方法:一种是对命令行的封装,另一种是调用C++ API。当前实现以命令行封装为主,通过Visual Studio 2022和.NET 8开发。核心代码展示了如何执行OCR命令并处理输出,保持简单直观。

Asp.net MVC中的Http管道事件为什么要以Application_开头?

https://www.cnblogs.com/jikhww/p/18582958

文章讨论了在API请求结束时释放数据库连接的方法。作者提到通过实现IHttpModule和在web.config中增加配置可以达到目的,但比较麻烦。作者建议在Global.asax.cs中实现Application_EndRequest方法来释放连接,并提供了具体实现细节。随后,作者对为什么必须使用Application_EndRequest方法进行了源码分析,强调HttpApplicationFactory类与MvcApplication实例的关系,从而解释了Global.asax作为入口文件的原因。

使用 SemanticKernel 对接 Ollma

https://www.cnblogs.com/kklldog/p/18589711/sk-ollama

本文介绍了如何使用 Microsoft 的 SemanticKernel 框架与 Ollama 聊天服务对接。首先,需在本地安装 Ollama 服务和相应模型,之后创建 C# 控制台应用程序并安装必要的包。接着,引入相关命名空间并配置服务端点和模型 ID,设置聊天服务。然后,文章展示了一个简单的聊天循环,让用户输入和获取 Ollama 回复。最后,希望通过这篇博客,读者能更好地理解和使用这些工具。

构建你的.NET Aspire解决方案

https://www.cnblogs.com/huangmingji/p/18588251/build-your-dotnet-aspire-solution

.NET Aspire 是构建生产就绪云原生应用的工具集,提供 NuGet 包处理特定问题。云原生应用由微服务组成,.NET Aspire 提供一致性工具和模式,改善分布式应用开发体验。它支持本地开发环境的多项目编排和与常用服务的集成,提供适用于Visual Studio等工具的模板。前提条件包括 .NET 8.0 或 9.0、Docker 环境和合适的 IDE。.NET Aspire 提供多个模板,如入门应用、应用主机和测试项目。用户可创建和配置微服务,利用 NuGet 包集成 Redis、Postgres 服务。

dotnet core微服务框架Jimu ~ 基础网关

https://www.cnblogs.com/flamesky/p/18583715

文章介绍了如何使用.NET Core和Asp.Net Core创建网关,作为微服务的统一入口。步骤包括创建项目、添加引用和配置Startup文件,以支持Jimu和Consul进行服务发现和治理。网关通过HTTP协议接受请求,并使用TCP/IP协议调用微服务。最终实现了基本的网关功能,支持跨域和日志记录,以及服务治理的初步设置,包括服务器列表和健康状态的展示。

GZY.EFCore.BulkExtensions 支持达梦数据库的EF Core批量操作库详解

https://www.cnblogs.com/GuZhenYin/p/18588733

这篇文章介绍了EFCore.BulkExtensions库的改造,以支持.NET 5.0下的MySQL和达梦数据库。文章详细解释了两种数据库的批量操作实现,包括批量插入、批量修改和批量删除。对MySQL,使用SqlBulkCopy进行批量插入,利用on duplicate key update语法进行批量修改,使用DELETE INNER JOIN语法进行批量删除。对达梦数据库,采用DmBulkCopy进行批量插入,采用MERGE INTO语法进行批量修改,批量删除部分与MySQL类似。文章还强调了配置和操作的注意点,如MySQL的local_infile功能。尽管7.0+版本支持条件修改和删除,但批量处理功能尚未完全支持。

http请求超时, 底层发生了什么?

https://www.cnblogs.com/JulianHuang/p/18586745

文章介绍了OpenResty模拟超时服务,通过Golang和.NET的HttpClient默认设置,解释了客户端超时的现象及其原因。文中使用的.NET代码设置了3秒超时,结果在客户端抛出异常,而服务端日志显示正常200响应。使用Wireshark分析TCP包,可见客户端在超时后终止连接,但服务端仍继续处理。这解释了服务端监控无5xx错误的现象。同时说明服务器通过CancellationToken感知客户端取消请求以记录过期请求。

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

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

该内容讲解了如何将DataTable转换成对象集合的方法。首先,通过反射来实例化对象和赋值,将表的列名与类的属性名对比,若属性设置了Description特性,则使用特性值匹配列名。实现过程中,需确保类类型合法且表格可以转换,处理时先用object装箱再拆箱结构体。代码片段展示了具体实现,通过单元测试验证转换的正确性。

开源 - Ideal库 - Excel帮助类,ExcelHelper实现(五)

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

本文详细介绍了ExcelHelper类的单元测试,包括读取Excel文件到DataSet的不同方法。代码示例展示了如何验证读取的工作表数量及其具体内容,包括表名和数据。文中对各种用例进行了测试,如读取所有工作簿、从特定工作簿读取、处理不存在的工作簿等。测试确保了方法的可靠性和准确性,为Excel数据处理提供了实用的技术支持。

WinForm 开源组件 Realtiizor

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

Realtiizor 是一款用于 WinForm 应用的现代组件库,具备美观的界面设计和丰富易用的组件。它采用 Material Design 元素,提升了应用程序的视觉效果,吸引用户。组件库中包含多种定制化的按钮和文本框,简化了开发流程,缩短了开发时间。Realtiizor 在 .NET 8 环境下运行稳定,与常见库兼容,性能优化良好。安装过程简单,通过 NuGet 包管理器即可实现。在实际应用中,开发者能够轻松创建样式独特的窗体。通过提供的示例,展示了如何构建用户信息录入界面。整体来说,Realtiizor 提供了高效率和良好体验的开发工具.

主题

OpenSilver 3.1 简介:首款适用于 VS Code 的 XAML 设计器、现代 UI 主题、WPF Everywhere 等

https://opensilver.net/announcements/3-1/

发布 v3.0.3 / v3.0.301(3.0.308) · MessagePack-CSharp/MessagePack-CSharp

https://github.com/MessagePack-CSharp/MessagePack-CSharp/releases/tag/v3.0.3 https://github.com/MessagePack-CSharp/MessagePack-CSharp/releases/tag/v3.0.301

  • neue cc - 关于与 SourceGenerator 兼容的 MessagePack for C# v3 的发布和未来

发布 v9.0.2 · npgsql/npgsql

https://github.com/npgsql/npgsql/releases/tag/v9.0.2

宣布 Oracle EF Core 9

https://medium.com/@alex.keh/announcing-oracle-ef-core-9-74f627a01891

调用异步功能:.NET 9 中的 WinForms 有何等待 - .NET 博客

https://devblogs.microsoft.com/dotnet/introducing-winforms-async-apis/

降临节日历

  • 在配备 NPU 的 Copilot+ PC 上运行 NPU - Qiita
  • 关于使 WinUI3 MarkdownControl 与 TextMate 兼容的故事 - Qiita
  • C# 操作 vJoy(创建 feeder)- Qiita
  • 启用Datadog的连续分析器后问题立即得到解决 - Qiita
  • 如何使用 MAUI 处理程序 - Qiita
  • 关于 C# 中尝试创建通货膨胀游戏时的 BigInteger - Qiita
  • TextMateSharp 简介 - Qiita
  • [C#] 使用表达式树和源生成器的高性能查询生成器简介 - Qiita
  • 序列化/反序列化具有大量对象的json数组 - Qiita
  • [C#] 关于.NET 9引入的OrderedDictionary - Qiita
  • 我创建了一个使用 Cloud Vision API 记录收据的程序 - Qiita
  • [C# .NET 9.0] 尝试使用 InlineArray 创建值类型字典 - Qiita
  • .NET9、C#13 的新功能拾取 - Qiita
  • 关于 Win2D 第 6 部分 PixelShaderEffect - Qiita
  • Heroku 上对 .NET 的官方支持 - Qiita
  • [C#] 遗留代码模式和现代改进方法 - Qiita
  • Win2D 第 5 部分 图像加载和效果 - Qiita
  • [C#] 使用模式匹配简洁地编写条件分支 - Qiita
  • 关于Win2D第5部分画线-Qiita- 关于不喜欢Dim的话题-Qiita
  • .NET 9 中添加到 LINQ 的方法 - Qiita

文章、幻灯片等

轻松发布到 Linux 上的 Azure WebJobs - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/effortless-publishing-to-azure-webjobs-on-linux/

使用 YamlDotNet 源生成器进行本机 AOT

https://andrewlock.net/using-the-yamldotnet-source-generator-for-native-aot/

C# 性能调优示例#1

https://zenn.dev/boostdraft/articles/bd86e264f99d89

GraphQL 入门#1 与 Strawberry Shake (.NET)

https://zenn.dev/masakura/articles/606435acb359cb

  • GraphQL #2 with Strawberry Shake (.NET),由 JetBrains Rider 编辑
  • 使用 Strawberry Shake (.NET) 连接到 GraphQL #3 Shopify
  • GraphQL #4 在 Strawberry Shake (.NET) 中自定义到 GraphQL 类型的映射
  • 在 Strawberry Shake (.NET) 中使用 GraphQL #5 GraphQL 联合

使用 Blazor 切换亮/暗模式 + 将保存模式切换到本地存储 - Qiita

https://qiita.com/masayahak/items/8173bd61845bb5774370

将本地 AI 模型与 .NET Aspire 结合使用 - .NET 博客

https://devblogs.microsoft.com/dotnet/local-ai-models-with-dotnet-aspire/

C# 程序员 JavaScript 备忘单(LINQ 版)

https://zenn.dev/zead/articles/js-cheat-sheet-for-linq

.NET 10 中 LINQ LeftJoin 运算符的提案

https://medium.com/@malarsharmila/proposal-for-a-linq-leftjoin-operator-in-net-10-af74635079a6

尝试将通用主机与 WPF 结合使用

https://zenn.dev/microsoft/articles/wpf-generic-host

继续使用非阻塞代码清理 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/keep-working-with-non-blocking-code-cleanup/

释放新潜力:.NET 9 中的实体框架核心增强功能

https://dev.to/leandroveiga/unlocking-new-pottial-entity-framework-core-enhancements-in-net-9-1875

C# 中模拟 gRPC 客户端:Fake It Till You Make It

https://dev.to/maximiliysiss/mocking-grpc-clients-in-c-fake-it-till-you-make-it-4d24

事件溯源很简单! :用 400 行创建的简单内存框架

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

在 Uno 平台中构建 Bluesky 客户端

https://mzikmund.dev/blog/building-a-bluesky-client-in-uno-platform

2024 年运行 100 万个并发任务需要多少内存?

https://hez2010.github.io/async-runtimes-benchmarks-2024/

使用 Dependabot 管理 .NET SDK 更新 - .NET 博客

https://devblogs.microsoft.com/dotnet/using-dependabot-to-manage-dotnet-sdk-updates/

在 Visual Studio 中引入 GitHub Copilot 聊天的代码引用 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/introducing-code-referencing-for-github-copilot-chat-in-visual-studio/

用for语句检查TLB效果 - Qiita

https://qiita.com/pea1205/items/6279235179f2b339ff6a

内联返回值如何简化 Visual Studio 2022 中的调试 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/how-inline-return-values-simplify-debugging-in-visual-studio-2022/

从转换为 UUID v7 的 Guid 中提取时间戳 - Qiita

https://qiita.com/higege-amdeker/items/098cd7414a11af8d83cb

使用对接窗口创建信息丰富的应用程序 AvalonDock - Qiita

https://qiita.com/NSS_FS_ENG/items/e16ea3c25e42608c4a25

SRTP推荐

https://zenn.dev/midoliy/articles/a9048d2eada7ba

如何在 MVVM 架构中使用 Microsoft.Extensions.DependencyInjection ~ with Dog

https://zenn.dev/sakaki_web/articles/42c5fdf8f14cf0

在 Visual Studio 17.12 中引入复制 Git 永久链接功能 - Visual Studio 博客

https://devblogs.microsoft.com/visualstudio/introducing-the-copy-git-permalink-feature-in-visual-studio-17-12/

本文由博客一文多发平台 OpenWrite 发布!


http://www.ppmy.cn/ops/144175.html

相关文章

SpringBoot项目的创建方式

目录 1.通过idea创建SpringBoot项目 2.在idea中通过aliyun创建SpringBoot 3.通过spring官网下载再用idea打开 5.通过mavenjava项目改为springboot项目 6.测试springboot 第二种方法使用的是idea2021版本,其余方法使用idea2017版本 1.通过idea创建SpringBoot项…

基于ubuntu的mysql 8.0安装教程

文章目录 1.查看版本2.切换到root账户3.下载安装包4.问题的解决5.查看是否解压成功6.安装我们的发布包7.更新包的内容8.下载mysql9.查看mysql的状态10.设置开机自启动11.登录mysql 公司里面的mysql根本不会出现在windows操作系统上面,下面我们演示的就是如何在ubunt…

呼入机器人:24小时客户服务的未来趋势

呼入机器人:24小时客户服务的未来趋势 作者:开源大模型智能呼叫中心系统FreeAICC,Github:https://github.com/FreeIPCC/FreeAICC 在当今快节奏的商业环境中,客户服务已成为企业竞争的核心要素之一。随着人工智能技术…

记录学习《手动学习深度学习》这本书的笔记(六)

看到第九章:现代循环神经网络了,循环神经网络这块真的有点难,而且老师也没有细讲这块,只能自己慢慢理解。 第九章:现代循环神经网络 9.1 门控循环单元(GRU) 这一节介绍了一个循环神经网络的“…

sqoop导入hdfs,hive

sqoop将mysql中的表导入到hdfs中 sqoop import \ > --connect jdbc:mysql://192.168.52.150/test \ > --username root \ > --password 123456 \ > --table emp \ > --delete-target-dir \ > --target-dir /sqoop_works/emp_1将数据导入hive中,首…

Linux Systemd基础教程

一、什么是systemd? systemd是Linux系统的一套基本构建模块。它提供了一个系统和服务管理器,作为PID 1运行并启动系统的其余部分。 systemd提供积极的并行化功能,使用套接字和D-Bus激活来启动服务,提供按需启动守护进程&#xf…

【Elasticsearch05】企业级日志分析系统ELK之集群工作原理

Elasticsearch 集群工作原理 官方说明 Elasticsearch Guide [8.17] | Elastichttps://www.elastic.co/guide/en/elasticsearch/reference/current/index.html 单机节点 ES 存在单点可用性和性能问题,可以实现Elasticsearch多机的集群解决 Elasticsearch 支持集群模式 能够提…

利用CNN与多尺度特征、注意力机制的融合实现低分辨率人脸表情识别,并给出模型介绍与代码实现

大家好,我是微学AI,今天给大家介绍一下利用CNN与多尺度特征、注意力机制的融合实现低分辨率人脸表情识别,并给出模型介绍与代码实现。在当今社会,人脸识别技术已广泛应用,但特定场景下的低质量图像仍是一大挑战。 低分…