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

国内文章

开源低代码框架 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/655277.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

nacos安装与使用

1.nacos简介与安装 什么是注册中心&#xff08;服务治理&#xff09; 服务注册&#xff1a;服务提供者provider&#xff0c;启动的时候向注册中心上报自己的网络信息 服务发现&#xff1a;服务消费者consumer&#xff0c;启动的时候向注册中心上报自己的网络信息&#xff0c;拉…

《C++ Primer Plus》第十二章复习题和编程练习

目录 一、复习题二、编程练习 一、复习题 1. 假设String类有如下私有成员&#xff1a; // String 类声明 class String { private: char* str;int len;// ... };a. 下述默认构造函数有什么问题&#xff1f; String::String() { } // 默认构造函数b. 下述构造函数有什么问题…

民国漫画杂志《时代漫画》第29期.PDF

时代漫画29.PDF: https://url03.ctfile.com/f/1779803-1248635405-bf3c87?p9586 (访问密码: 9586) 《时代漫画》的杂志在1934年诞生了&#xff0c;截止1937年6月战争来临被迫停刊共发行了39期。 ps: 资源来源网络!

分享之远程调试

1:在线上启动脚本添加如下的内容&#xff1a; #! /bin/sh# 设置启动的jar SERVICE_NAME"xxx.jar"PRJ_BIN_DIR$(dirname $(readlink -f "$0")) SERVICE_HOME$(dirname $PRJ_BIN_DIR)LOGS_DIR$SERVICE_HOME/logs # 控制台日志 STDOUT_FILE$SERVICE_HOME/log…

New Phytologist:杨树特有miRNA在调控杨树抗旱中的分子机制

2024年3月6日&#xff0c;林木遗传育种全国重点实验室、北京林业大学生物科学与技术学院尹伟伦与夏新莉教授课题组在New Phytologist&#xff08;中科院一区&#xff0c;影响因子9.4&#xff09;期刊发表了题为“The miR6445-NAC029 module regulates drought tolerance by reg…

Python3 笔记:Python的所有关键字

查看Python的关键字首先需要用import导入keyword模块 import keyword # 查看Python的所有关键字&#xff0c;先用import导入keyword模块 print(keyword.kwlist) 运行结果&#xff1a; [False, None, True, and, as, assert, async, await, break, class, continue, def, …

96.网络游戏逆向分析与漏洞攻防-ui界面的设计-角色管理功能的界面设计

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果&#xff0c;代码看不懂是正常的&#xff0c;只要会抄就行&#xff0c;抄着抄着就能懂了 内容…

QT使用gsoap获取手机归属地

1-环境变量 用的win32 E:\hes_scc\tools\gsoap_2.8.134\gsoap-2.8\gsoap\bin\win32 2-生成代码接口 自己建一个目录&#xff0c;在此打开cmd窗口&#xff0c;生成的文件都会在这个文件夹中。 这里用的手机归宿地。 wsdl2h -o GetPhoneInfo.h -s -n Phone -t ....\typemap.…

DES加密算法笔记

【DES加密算法&#xff5c;密码学&#xff5c;信息安全】https://www.bilibili.com/video/BV1KQ4y127AT?vd_source7ad69e0c2be65c96d9584e19b0202113 根据此视频学习 DES是对称密码中的分组加密算法 (分组加密对应流加密算法) 流加密算法就是一个字节一个字节加密 分组加…

SSL协议:网络安全通信的守护者

在网络通信迅猛发展的今天&#xff0c;数据安全和隐私保护变得尤为重要。安全套接层协议&#xff08;Secure Sockets Layer, SSL&#xff09;作为早期网络加密及身份验证的基石&#xff0c;为在线数据传输提供了安全保障。下面我们就来了解一下SSL协议。 SSL协议概述 SSL协议最…

NSSCTF | [SWPUCTF 2021 新生赛]no_wakeup

打开题目后&#xff0c;点击三个&#xff1f;&#xff0c;发现是一个php序列化脚本 <?phpheader("Content-type:text/html;charsetutf-8"); error_reporting(0); show_source("class.php");class HaHaHa{public $admin;public $passwd;public function…

System32文件夹千万不能删除,看完这篇你就知道为什么了

序言 C:\Windows\System32目录是Windows操作系统的关键部分,重要的系统文件存储在该目录中。网上的一些恶作剧者可能会告诉你删除它,但你不应该尝试去操作,如果你尝试的话,我们会告诉你会发生什么。 什么是System32文件夹 位于C:\Windows\System32的System32文件夹是所有…

OpenHarmony应用开启Service以及完成自启动和常驻

一.背景 由于有需求实现一个后台常驻服务,这里就是来实现在鸿蒙里面如何实现后台服务并且实现自启动和常驻 二.添加服务 如下来添加服务 然后此时直接运行这个hap是报错的,如下: 此处参考: 应用中添加ServiceExtensionAbility然后安装HAP时提示“code:9568344 error: inst…

计算机二级Access操作题总结——基本操作

基础操作题 设置主键 例&#xff1a;将“线路”表中的“线路ID”字段设置为主键 ①右键单击“线路”表&#xff1b; ②单击【设计视图】&#xff1b; ③鼠标指到表的第一行→“线路ID”处&#xff0c;右键单击&#xff1b; ④单击【主键】 设置有效性规则 例&#xff1a;设…

算法之背包问题

可分的背包问题是可以用贪心法来解决&#xff0c;而0-1背包问题通常使用动态规划方法来解决。 可分背包问题&#xff1a; 在可分背包问题中&#xff0c;物品可以被分割&#xff0c;您可以取走物品的一部分以适应背包的容量。这里的关键是物品的价值密度&#xff0c;即单…

【电路笔记】-二阶滤波器

二阶滤波器 二阶(或双极)滤波器由两个连接在一起的 RC 滤波器部分组成,可提供 -40dB/十倍频程滚降率。 1、概述 二阶滤波器也称为 VCVS 滤波器,因为运算放大器用作压控电压源放大器,是有源滤波器设计的另一种重要类型,因为与我们之前研究过的有源一阶 RC 滤波器一起,…

常见排序算法之选择排序

目录 一、选择排序 1.1 什么是选择排序&#xff1f; 1.2 思路 1.2.1 思路一 1.2.2 优化思路 1.3 C语言源码 1.3.1 思路一 1.3.2 优化思路 二、堆排序 2.1 调整算法 2.1.2 向上调整算法 2.1.3 向下调整算法 2.2 建堆排序 一、选择排序 1.1 什么是选择排序&#xf…

985上交应届生转正12天,被某东辞退了!

&#x1f447;我的小册 45章教程:(小白零基础用Python量化股票分析小册) ,原价299&#xff0c;限时特价2杯咖啡&#xff0c;满100人涨10元。 01.事情起源 最近粉丝群都在转发一个截图&#xff0c;某应届毕业生在某东实习一年&#xff0c;才转正才12天&#xff0c;就因为自己调侃…

打包软件注意

1.建个文件夹D:333 /Dalsa_Cameras /cam1 cam2 2. 3.缺的包 4.自动启动.exe exe快捷方式放一起

增强创作者能力:The Sandbox 首届 “创作者挑战” 回顾

首届 "创作者挑战" 为创作者在平台上赚取收入提供了难得机会。 我们发起 “创作者挑战” 的目的是支持创作者&#xff0c;赋予他们构建元宇宙的能力。我们提出三大行动号召&#xff1a;发布、参与和赚钱。新推出的「参与奖池」&#xff08;Engagement Pool&#xff0…