.NET周刊【9月第1期 2024-09-01】
国内文章
【音视频通话】使用asp.net core 8+vue3 实现高效音视频通话
https://www.cnblogs.com/1996-Chinese-Chen/p/18384394
该文章描述了使用SRS实现音视频通话和共享桌面的经验。从最初使用nginx的RTMP到研究SRS和ZLMediaKit的过程,再到最终实现功能的详细步骤,涵盖了服务器配置、前后端技术及具体功能实现。作者讲述了基于net8.0开发的后端接口、node和vue构建的前端界面如何协同工作,并列举了多个功能模块及其配置方式。
.NET 开源实时监控系统 - WatchDog
https://www.cnblogs.com/1312mn/p/18379779
WatchDog是一个开源的.NET实时监控系统,专为ASP.NET Core Web应用和API设计。它可以实时记录和查看HTTP请求、响应及异常。支持代码内日志记录、日志视图查看、搜索和过滤、自动日志清理、报警通知等功能,并提供灵活配置,易于集成。后端基于.NET Core或.NET 5及以上版本,前端使用React或Angular,支持多种数据库。该系统利用SignalR实现实时监控,支持多种数据库,包括外部数据库。安装与配置包括NuGet包安装、服务注册、日志记录和异常记录等步骤。
记录荒废了三年的四年.net开发的第三次面试,苏州斯莱克
https://www.cnblogs.com/ggtc/p/18385285
这篇文章描述了一名求职者的面试经历和技术相关问题。求职者在苏州史斯莱克精密设备面试,面试过程涉及自我介绍和技术问答,包括vue组件通信、前端框架nuxt、http通信方法、sql注入防范、数据库多租户、事务处理以及C# using关键字的作用等。求职者感叹当前的技术水平在就业市场上处于尴尬位置,难以找到匹配的工作。
【音视频通话】使用asp.net core 8+vue3 实现高效音视频通话
https://www.cnblogs.com/1996-Chinese-Chen/p/18384394
本文记录了使用SRS实现音视频通话和桌面共享的过程。环境包括腾讯云轻量服务器,使用CENTOS系统,前端部署在nginx上,后端和SRS服务部署在docker中,后端基于net8.0开发,前后端通讯使用SignalR。前端使用node和vue。功能包括设备检测、群聊、单聊和共享桌面,详细描述了各功能的实现方法。配置方面,介绍了前端配置和SRS的推拉流配置。
实用接地气的 .NET 微服务框架
https://www.cnblogs.com/1312mn/p/18381195
文章介绍了.NET微服务框架Wing,解决了现有微服务框架过于复杂的问题,支持Consul服务注册与发现,并具有高级特性如配置中心、链路追踪、服务网关等。框架还包括Saga分布式事务、RabbitMQ事件总线等功能,并提供人性化的Dashboard管理界面。Wing框架旨在帮助开发者快速构建和管理高效、可扩展的微服务应用。文中详细介绍了服务注册、启动UI、服务发现与调用的步骤和代码示例。
Mono 现状与未来:从Wine-mono 到.NET 9
https://www.cnblogs.com/shanyou/p/18385885
微软宣布将Mono项目移交给WineHQ,Mono是一个开源的.NET开发平台。微软自2014年开始推动.NET开源,Mono项目始于2001年,主要为Linux桌面应用程序提供支持。Mono项目现已在多个平台上支持.NET,并已完成现代化改造。Mono现由Wine组织接管,后者致力于在Linux等系统上运行Windows应用。Mono基于.NET Framework,与.NET Core 3+和.NET标准部分实现了统一。未来Mono和CoreCLR运行时将针对不同工作负载进行优化。.NET 9将于年底发布,重点关注云原生和智能应用。
Gradio.NET 支持 .NET 8 简化 Web 应用开发
https://www.cnblogs.com/1312mn/p/18370464
Gradio.NET 是 Python 包 Gradio 的 .NET 移植版本,简化了创建机器学习模型展示和 Web 应用开发。其特点包括易用性、灵活性、一键分享和集成支持。用户无需掌握前端技术,只需几行 .NET 代码即可创建交互界面,还能与主流 .NET 框架无缝集成。文中提供了创建项目、安装 Gradio.NET 和示例代码的详细步骤。
记一次 .NET某实验室自动进样系统 崩溃分析
https://www.cnblogs.com/huangxincheng/p/18382459
作者朋友的程序崩溃,由于coreclr中的访问违例。通过WinDbg分析,崩溃点在一个C++写的动态链接库中。通过观察汇编代码发现问题出在第一个参数为null。
.NET 摄像头采集
https://www.cnblogs.com/kybs0/p/18385599
本文介绍如何使用摄像头采集数据,以应用于本地显示软件及流媒体传输。主要讨论了AForge.NET的使用,包括安装Nuget包、摄像头显示和录制视频流的代码示例,并详细讲解了数据转换过程,如Bitmap与byte[]之间的转换。
C#/.NET/.NET Core技术前沿周刊 | 第 2 期(2024年8.19-8.25)
https://www.cnblogs.com/Can-daydayup/p/18379504
该文章介绍了多篇关于C#、.NET和.NET Core的技术文章,包括MSTest分析器、Visual Studio 2022新功能、AI支持的UI控件、基于.NET Core的自媒体内容管理系统、高性能边缘采集网关、ASP.NET MVC视频上传教程等。这些内容涉及编程技巧、使用工具以及不同项目的开发,旨在帮助读者提升技术实力。
NSmartProxy:一款.NET开源、跨平台的内网穿透工具
https://www.cnblogs.com/Can-daydayup/p/18387829
文章介绍了一个.NET开源内网穿透工具NSmartProxy,采用.NET Core全异步模式,MIT许可证。工具特点包括配置简单、多端映射、支持多种协议。运行原理分为服务端和客户端,通过反向连接进行转发访问。项目已收录在C#/.NET/.NET Core优秀项目和框架精选中,并提供了开源地址。
实用接地气的 .NET 微服务框架
https://www.cnblogs.com/1312mn/p/18381195
本文介绍了一款易用的 .NET 微服务框架,支持 Consul 服务注册与发现、Saga 分布式事务、RabbitMQ 事件总线等功能。框架内置配置中心、链路追踪、服务网关和人性化管理面板,帮助开发者快速搭建和管理微服务应用。提供具体的实现步骤和代码示例。
一个.NET开源、免费的跨平台物联网网关
https://www.cnblogs.com/Can-daydayup/p/18385471
该文章介绍了基于.NET6的跨平台物联网网关IoTGateway。通过可视化配置,可以轻松连接各种设备和系统,实现与各种物联网平台的双向数据通讯,并支持边缘计算。文章还分享了项目的源代码、在线演示链接及开源地址,并推荐了关注更多.NET相关优秀项目与框架。
基于Material Design风格开源的Avalonia UI控件库
https://www.cnblogs.com/Can-daydayup/p/18382528
大姚分享了一款基于Material Design风格的开源Avalonia UI控件库Material.Avalonia,适用于跨平台应用开发。该库提供完整的Material Design样式和控件,支持多种主题和图标包,并可轻松配置。项目处于alpha阶段,并已收录到C#/.NET/.NET Core优秀项目和框架精选中,源码和使用文档可在GitHub获取。
.NET 网络唤醒
https://www.cnblogs.com/kybs0/p/18389269
本文介绍如何通过网络唤醒已关机设备。首先设备需支持WakeOnLan,主板需在BIOS中开启相关功能。使用有线网络,确保设备和唤醒设备在同一局域网。提供了使用MAGPAC.exe工具和.NET代码发送唤醒包的方法,并强调发送至指定IP而非广播地址,最后提供了代码示例。
网卡-热点搜索不到或者无法连接问题
https://www.cnblogs.com/kybs0/p/18253301
文章介绍了解决Windows大屏网卡热点冲突的问题,主要关注物理网卡和虚拟网卡IP冲突。通过检测和修复IP设置,确保物理网卡和虚拟网卡不会使用相同的IP,避免冲突,使热点功能正常工作。提供了修复代码,详细解释了代码逻辑和操作步骤。
[WPF]数据绑定时为何会出现StringFormat失效
https://www.cnblogs.com/czwy/p/18388552
文章探讨了在数据绑定过程中使用StringFormat进行数据格式化的问题。尽管StringFormat在Binding、MultiBinding和PriorityBinding中都有应用,但在某些情况下无效,例如Button的Content属性。文章详细介绍了StringFormat的基本用法和不同绑定方式中的应用,并通过源码分析解释了部分属性格式化失效的原因。
大请求、请求超时问题
https://www.cnblogs.com/ggtc/p/18389918
文章讨论如何处理耗时较长的请求,包括HTTP分块传输和服务器推送事件(SSE)的实现。使用IAsyncEnumerable和stream流式传输可以减少响应时间,通过分批处理数据,减少整体响应超时。代码示例展示了如何在服务端和浏览器端实现异步流和SSE。
Prism:框架介绍与安装
https://www.cnblogs.com/zhuiyine/p/18385450
Prism是用于构建WPF、Xamarin Form、Uno和WinUI应用的框架,具备MVVM、依赖注入、导航等功能。它可以通过手动或自动方式创建项目。手动方式包括在Nuget中安装Prism.DryIoc,修改App.xaml和App.xaml.cs文件,实现CreateShell和RegisterTypes抽象方法。自动方式则是通过安装扩展包选择空模板。
SimpleTranslationAIAgent:基于C#与LLM的翻译AI Agent
https://www.cnblogs.com/mingupupu/p/18390206
本文介绍了一个基于C#和大语言模型的文件翻译AI Agent,它是开源免费的,但调用API可能需要费用。作者提供了GitHub地址以供下载和使用,详细展示了如何利用该Agent完成从文件到文件的翻译任务,并建议根据任务的复杂度选择适当的模型。文中还包含了关键步骤的演示和配置指导,主要适用于熟悉.net 8.0和vs2022的用户。
基于事件总线EventBus实现邮件推送功能
https://www.cnblogs.com/MrHanBlog/p/18381572
作者为网站增加邮件推送功能,以便及时收到留言通知, 并借此学习RabbitMQ和EventBus概念。文章介绍了事件总线和RabbitMQ,并展示了实现代码,包括事件抽象类、事件处理抽象类及任务记录的定义。
.Net 5.0 WebAPI 发布至 Linux 系统
https://www.cnblogs.com/hnzhengfy/p/18384107/webapi_centos
本文讲述在CentOS 7上部署WebAPI项目的步骤,包括安装.net 5.0环境、创建和发布示例项目、配置自启动服务。具体步骤涵盖了从在线安装.net、创建测试项目及其配置,以及将项目发布到CentOS系统并实现服务自启动。
学习真DDD的最佳路径
https://www.cnblogs.com/xiaoweiyu/p/18379808
本文讨论领域驱动设计(DDD),强调分辨假DDD的重要性,并指出各个角色都适合学习和实践DDD。文章提及DDD是一种价值观,是软件工程的第一性原理。学生更易接受DDD,因为他们没有先入为主的观念。懂DDD的产品经理与工程师协作更顺畅,确保需求与模型的一致性。学习路径包括理解概念、实践和验证成果,并推荐合适的教练。文章提供了Java和.NET平台的DDD框架和资源链接。
WPF 如何利用Blend给Button添加波纹效果
https://www.cnblogs.com/lvpp13/p/18384449
本文介绍了如何在Blend中为WPF项目的Button添加动画效果。首先创建WPF项目并在Blend中打开,然后通过设置关键帧和操作设计器中的元素生成动画效果。通过编辑ControlTemplate,添加和调整Border、ContentPresenter等元素,最终在Triggers下的IsMouseOver为true时触发动画。
主观与客观,破除DDD凭经验魔咒
https://www.cnblogs.com/xiaoweiyu/p/18385539
本文探讨了软件设计中“凭经验”的局限性,强调领域驱动设计的价值在于建立明确的边界,客观决策可以落地执行而不依赖个人经验。通过对需求分析和建模设计中主观和客观部分的区分,作者提出边界明确比局部准确性更为重要。经验丰富有助于快速定义模型,但明确边界的结构性问题对整体架构和未来改造影响更深远。
ChatGPT学习之旅 (10) 系统全球化小助手
https://www.cnblogs.com/edisonchou/p/-/chatgpt_learning_notes_part10
本文介绍如何在基于Blazor的Web应用中,通过GPT助手实现系统多语言的全球化任务,提升用户体验。示例中,使用提示词模版让GPT助手将英文资源文件快速翻译成德语资源文件。
一个.NET开源、免费的跨平台物联网网关
https://www.cnblogs.com/Can-daydayup/p/18385471
文章介绍了一个基于.NET6的跨平台物联网网关IoTGateway。用户可以通过可视化配置轻松连接各种设备和系统,实现双向数据通讯,支持边缘计算。文中提供了项目源码、在线演示效果和使用文档链接,鼓励开发者支持和参与项目。
云存储抽象层-FluentStorage
https://www.cnblogs.com/shanyou/p/18391723
FluentStorage 是一个.NET云存储抽象层,支持多种云服务,提供统一API处理Blob存储和消息传递。完全用C#编写,支持.NET 5+和.NET Standard 2.0+。特点包括统一接口、支持多提供商、实现内存和磁盘抽象,以及数据加密和压缩。提高数据可移植性、互操作性、系统弹性和故障恢复能力。其在MIT许可证下发布。通过统一接口屏蔽服务提供商差异,简化开发者操作。
NET Core 多身份校验与策略模式
https://www.cnblogs.com/LaoPaoEr/p/18388246
为了对接XXX官方API,系统搭建了一套中继系统,实现Request中转,多身份认证鉴权。初始开发过程中,因对接复杂英文文档导致进度慢,后因需求变更从微服务改为WebAPI,重新开发。最终使用JWT+自定义身份认证实现动静结合身份鉴权。采用多重身份认证及中间件模式,通过添加服务及自定义身份认证Handler等技术手段,实现Token认证。
探索一下 Enum 优化
https://www.cnblogs.com/fs7744/p/18390200
文章探讨了如何通过缓存和source-generators等技术优化Enum的执行效率。主要方法包括封装入口方法、使用ModuleInitializer、以及避免使用interceptors。示例代码展示了如何自动生成Enum的处理代码,并在运行时启用。
Modbus ASCII 获取数据
https://www.cnblogs.com/wofeiliangren/p/18383057
该文章介绍了如何通过串口读取高低温试验箱的运行状态、温度和湿度测量值,描述了通讯协议、数据格式以及命令响应。文中详细解释了如何使用串口助手调试参数,对返回数据进行16进制解析,并提取出温度和湿度测量值。最后展示了如何用C#代码通过SerialPort类发送命令并接收数据。
Prism:框架介绍与安装
https://www.cnblogs.com/zhuiyine/p/18385450
Prism是用于在多个平台上构建松散耦合、可维护和可测试的XAML应用框架。它支持MVVM、依赖注入、区域、导航等功能。手动创建需安装Prism包并修改App.xaml及App.xaml.cs文件,自动创建可通过VS2022拓展包并选用空模板。
.NET 8 Moq mock GetRequiredKeyedService Setup报错
https://www.cnblogs.com/netry/p/18388859/dotnet-moq-mock-GetRequiredKeyedService
本文讨论了在单元测试中使用Moq模拟IServiceProvider.GetRequiredKeyedService时报错的问题。作者通过分析错误信息,发现GetRequiredKeyedService是IServiceProvider的扩展方法,而Moq不支持扩展方法的Setup。因此,需要通过模拟最终调用的接口方法来解决问题。
WPF 如何利用Blend给Button添加波纹效果
https://www.cnblogs.com/lvpp13/p/18384449
文章介绍如何使用Blend创建WPF项目动画。首先创建空WPF项目,然后在Blend中设计。添加Button并编辑模板代码。之后设置Border和Clip属性,调整透明度,再用Blend编写动画,设置关键帧,生成动画代码。最后将动画运用到Button的Triggers下,实现鼠标悬停时播放动画的效果。
主题
感谢所有 Mono 开发者! · Issue #21796 · mono/mono
https://github.com/mono/mono/issues/21796
宣布 .NET Aspire 8.2 - 再见组件,你好集成 - .NET 博客
https://devblogs.microsoft.com/dotnet/announcing-dotnet-aspire-8-2/
BinaryFormatter 从 .NET 9 中删除 - .NET 博客
https://devblogs.microsoft.com/dotnet/binaryformatter-removed-from-dotnet-9/
Pinecone .NET SDK 简介 - .NET 博客
https://devblogs.microsoft.com/dotnet/introducing-pinecone-dotnet-sdk/
.NET 社区工具包 8.3 现已推出!NativeAOT、.NET 8 增强功能等等 - .NET 博客
https://devblogs.microsoft.com/dotnet/announcing-the-dotnet-community-toolkit-830/
发布CoreWCF v1.6.0 · CoreWCF/CoreWCF
https://github.com/CoreWCF/CoreWCF/releases/tag/v1.6.0
宣布 ASP.NET Core OData 9 正式发布 - OData
https://devblogs.microsoft.com/odata/announcing-asp-net-core-odata-9-official-release/
Windows 终端预览版 1.22 发布
https://devblogs.microsoft.com/commandline/windows-terminal-preview-1-22-release/
C# 开发工具包更新带来了增强的 Razor IntelliSense、项目状态和新的配置选项 - .NET 博客
https://devblogs.microsoft.com/dotnet/whats-new-in-csharp-dev-kit-august-2024/
文章、幻灯片等
[C#] Izayoi.Data 库 (ORM)
https://zenn.dev/izayoijiichan/articles/2243e4db5a14ad
将非 Blazor Wasm ASP.NET Core 应用程序转换为 PWA - Qiita
https://qiita.com/higege-amdeker/items/80e23fd03480ec6c6eea
[C#] 使用 CDKTF 创建 Azure 资源
https://zenn.dev/nekojoker/articles/bf6f79ecf165fc
.NET 上的现代身份验证实践:OpenID Connect、BFF 和 SPA
使用 Azure Functions .NET 8 隔离工作模型自定义 Swagger 主页 - Qiita
https://qiita.com/higege-amdeker/items/e90b3d9413a090280298
使用基于C#的开源CMS“Orchard Core”作为无头CMS
https://zenn.dev/zead/articles/orchardcore-headless-cms
了解 .NET 堆栈跟踪 - 开发人员指南
https://blog.elmah.io/understanding-net-stack-traces-a-guide-for-developers/
类型分区定义(部分)
https://ufcpp.net/study/csharp/misc/partial-type/
在 .NET 中使用 IAsyncEnumerable 构建管道
https://nikiforovall.github.io/dotnet/2024/08/22/async-enumerable-pipelines.html
VirtualStorageLibrary 发布版本 0.8.0 - Qiita
https://qiita.com/pec02304/items/34580833cd21c2b9958a
Avalonia UI超级介绍
https://zenn.dev/inuinu/articles/avalonia-ui-for-absolute-beginners
Visual Studio 2022 17.11 中的新 GitHub Copilot 功能 - Visual Studio 博客
https://devblogs.microsoft.com/visualstudio/new-github-copilot-features-in-visual-studio-2022-17-11/
Windows.Foundation.Uri.Domain 属性与 Host 有何不同?
https://devblogs.microsoft.com/oldnewthing/20240829-00/?p=110192
使用 .NET 9 AlternateLookup 快速查找 C# 13 时代的 UTF8 字符串
https://neue.cc/2024/08/29_AlternateLookup.html
Visual Studio v17.11 中的新 IDE 功能 - Visual Studio 博客
https://devblogs.microsoft.com/visualstudio/new-ide-features-in-visual-studio-v17-11/
完全理解.NET 的可选功能 - 鹰巢
https://tech.blog.aerie.jp/entry/2024/08/23/175944
版权声明
- 国内板块由 InCerry 进行整理 : https://github.com/InCerryGit/.NET-Weekly
- 其余内容来自 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,欢迎大家加入。
本文由博客一文多发平台 OpenWrite 发布!