.NET周报 【3月第3期 2023-03-19】
国内文章 记一次 .NET某汽车零件采集系统 卡死分析 https: www.cnblogs.com/huangxincheng/p/17214154.html 前段时间有位朋友在微信上找到我,说他的程序会出现一些偶发卡死的情况,让我帮忙看下是怎么回事,刚好朋友也抓到了dump,就让朋友把 d...[2023/3/22]
.Net 6.0全局异常捕获
背景: 全局异常捕获是我们开发当中不可获取的一个环节,顾名思义就是全局的捕获异常,并响应出去,今天就带着各位童鞋们在.Net 6.0当中如何做到全局异常捕获. 思路: 我们可以通过请求管道达到我们全局的一个场景,所以我们第一步就是在请求管道中自定义一个全局异常捕获的中间件,并通过try c...[2023/3/22]
推荐一个前后端分离.NetCore+Angular快速开发框架
今天给大家推荐一个开源项目,基于.NetCore开发的、前后端分离、前端有Vue、Angular、MVC多个版本的快速开发框架。 项目简介 这是一个基于.NetCore开发的快速开发框架,项目采用模块化架构、最新的技术栈、项目高度封装了依赖注入、日志(Log4net、Nlog)、缓存(Redi...[2023/3/22]
.NET应用系统的国际化-基于Roslyn抽取词条、更新代码
上篇文章我们介绍了 VUE+.NET应用系统的国际化-多语言词条服务 系统国际化改造整体设计思路如下: 提供一个工具,识别前后端代码中的中文,形成多语言词条,按语言、界面、模块统一管理多有的多语言词条 提供一个翻译服务,批量翻译多语言词条 提供一个词条服务,支持后端代码在运行时根据用户登录...[2023/3/20]
使用ASP.NET CORE SignalR实现APP扫描登录
使用signalr实现APP扫码登录 1. 背景介绍 在移动化时代,web开发很多时候都会带着移动端开发,这个时候为了减少重复输入账号密码以及安全性,很多APP端都会提供一个扫码登录功能,web端生成二维码,APP扫码直接登录web端,无需再次输入账号密码。 2. 实现流程图 3. 代码运行...[2023/3/20]
一次.net code中的placeholder导致的高cpu诊断
背景 最近一位朋友找到我,让我帮看他们的一个aspnet core service无端cpu高的问题。从描述上看,这个service之前没有出现过cpu高的情况,最近也没有改过实际的什么code。很奇怪了,会有什么变化导致cpu上去了呢? 分析 由于比较容易复现 (据说一启动service,c...[2023/3/20]
.NET应用系统的国际化-多语言翻译服务
上篇文章我们介绍了 .NET应用系统的国际化-基于Roslyn抽取词条、更新代码 系统国际化改造整体设计思路如下: 提供一个工具,识别前后端代码中的中文,形成多语言词条,按语言、界面、模块统一管理多有的多语言词条 提供一个翻译服务,批量翻译多语言词条 提供一个词条服务,支持后端代码在运行时...[2023/3/20]
ASP.NET Core - 选项系统之选项配置
1. 选项 前面讲完了.NET Core 下的配置系统,我们可以通过 IConfiguration 服务从各种来源的配置中读取到配置信息,但是每次要用的时候都通过 Iconfiguration 读取配置文件会比较不方便,而且效率低。.NET Core 体系下提供了一个选项系统,该功能用于实现以强...[2023/3/17]
ASP.NET Core Web API Swagger 按标签Tags分组排序显示
需求 swagger页面按标签Tags分组显示。 没有打标签Tags的接口,默认归到"未分组"。 分组内按接口路径排序 说明 为什么没有使用GroupName对接口进行分组? 暂时不需要,以及不想点击swagger页面右上角那个下拉框。 当然Tags和GroupName不冲突,不影响通过...[2023/3/17]
一个.Net Core开源缓存中间件,让你更加简单、方便使用缓存
上次给大家推荐过一个缓存中间件《一个C#开发的非常实用的缓存中间件》,今天再给大家推荐一个缓存中间件,两者功能差不多,都是提供统一接口、多级缓存、分布式缓存、支持多种Provider等。 项目简介 这是一个基于.Net Core开发的缓存中间件,它支持各种缓存并提供了很多高级功能。它的主要目标...[2023/3/17]
记一次 .NET某汽车零件采集系统 卡死分析
一:背景 1. 讲故事 前段时间有位朋友在微信上找到我,说他的程序会出现一些偶发卡死的情况,让我帮忙看下是怎么回事,刚好朋友也抓到了dump,就让朋友把 dump 丢给我,接下来用 windbg 探究下到底咋回事。 二:WinDbg 分析 1. 程序真的卡死吗 因为是一个 winform 程序...[2023/3/14]
gRPC之.Net6中的客户端和服务端共用proto协议文件
1、说明 在上一篇文章gRPC之.Net6中的初步使用介绍中,我们简单的介绍了gRPC在服务端、客户端以及Web项目中的使用。 有一个问题,不知道大家发现没有,就是不管在服务端项目还是客户端项目中,我们都需要创建相同的proto协议文件,这样就会显得很麻烦,有没有一种办法只创建一次proto协...[2023/3/14]
.NET中委托性能的演变
.NET中的委托 .NET中的委托是一项重要功能,可以实现间接方法调用和函数式编程。 自.NET Framework 1.0起,委托在.NET中就支持多播(multicast)功能。通过多播,我们可以在单个委托调用中调用一系列方法,而无需自己维护方法列表。 即使在今天,委托的多播功能在桌面开...[2023/3/14]
ASP.NET Core Web API 接口限流
一. 前言 ASP.NET Core Web API 接口限流、限制接口并发数量,我也不知道自己写的有没有问题,抛砖引玉。 二. 需求 写了一个接口,参数可以传多个人员,也可以传单个人员,时间范围限制最长一个月。简单来说,当传单个人员时,接口耗时很短,当传多个人员时,一般人员会较多,接口耗时较...[2023/3/14]
ASP.NET Core中如何限制响应发送速率(不是调用频率)
前言 ASP.NET Core中有很多RateLimit组件,.NET 7甚至推出了官方版本。不过这些组件的主要目标是限制客户端访问服务的频率,在HTTP服务器崩溃前主动拒绝部分请求。如果请求没有被拒绝服务会尽可能调用资源尽快处理。 现在有一个问题,有什么办法限制响应的发送速率吗?这在一些需要...[2023/3/14]
学习ASP.NET Core Blazor编程系列二十八——JWT登录(3)
学习ASP.NET Core Blazor编程系列文章之目录 学习ASP.NET Core Blazor编程系列一——综述 学习ASP.NET Core Blazor编程系列二——第一个Blazor应用程序(上) ...[2023/3/14]
ASP.NET Core - 配置系统之自定义配置提供程序
4. 自定义配置提供程序 在 .NET Core 配置系统中封装一个配置提供程序关键在于提供相应的 IconfigurationSource 实现和 IConfigurationProvider 接口实现,这两个接口在上一章 ASP.NET Core - 配置系统之配置提供程序 中也有提到了。 ...[2023/3/14]
gRPC之.Net6中的初步使用介绍
1、??介绍 GRPC是一个高性能、通用的开源远程过程调用(RPC)框架,基于底层HTTP/2协议标准和协议层Protobuf序列化协议开发,支持众多的开发语言,由Google开源。 gRPC也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口...[2023/3/14]
【译】.NET 7 中的性能改进(十二)
原文 | Stephen Toub 翻译 | 郑子铭 New APIs 在.NET 7中,Regex得到了几个新的方法,所有这些方法都能提高性能。新的API的简单性可能也误导了为实现它们所需的工作量,特别是由于新的API都支持ReadOnlySpan输入到regex引擎。 dotnet/r...[2023/3/8]
.NET周报 【3月第1期 2023-03-03】
国内文章 我做的FFmpeg开源C#封装库Sdcb.FFmpeg https: www.cnblogs.com dflysha/archive/2023/02/27/dotnet-conf-china-2022-ffmpeg.html FFmpeg是知名的音频视频处理软件,我平时工作生活中会经...[2023/3/8]
【译】.NET 7 中的性能改进(十三)
原文 | Stephen Toub 翻译 | 郑子铭 代码生成 (Code generation) .NET 7的regex实现有不少于四个引擎:解释器(如果你不明确选择其他引擎,你会得到什么),编译器(你用RegexOptions.Compiled得到什么),非回溯引擎(你用RegexOp...[2023/3/8]
学习ASP.NET Core Blazor编程系列二十七——JWT登录(2)
学习ASP.NET Core Blazor编程系列文章之目录 学习ASP.NET Core Blazor编程系列一——综述 学习ASP.NET Core Blazor编程系列二——第一个Blazor应用程序(上) ...[2023/3/6]
使用招商银行云直连服务提现(.Net6)
以下代码的功能是用户可以实现业务中用户虚拟钱包的钱提现到用户银行卡,其实本质上是把商户的账户资金划转到用户银行卡,其实就是银行转账,相关代码如下: 此方法存在部分业务代码,核心方法是doProce 方法且基本是可以复用的,其它的代码可以根据自身业务场景灵活处理; public async ...[2023/3/6]
Net6 EFcore框架介绍
1、简介 EFcore,可用使得开发人员不需要再去关注数据库的实现,全都由代码进行生成 这样有利于减少工作量、数据库快速迁移... 2、上手搭建架构 (这个图是做完本章内容的完整图,我们一步步深入即可) 在写EF之前,先安装好数据库,我选择在本地安装Sqlser...[2023/3/6]
ASP.NET Core - 配置系统之配置读取
一个应用要运行起来,往往需要读取很多的预设好的配置信息,根据约定好的信息或方式执行一定的行为。 配置的本质就是软件运行的参数,在一个软件实现中需要的参数非常多,如果我们以 Hard Code(硬编码)的方式写在应用代码中,这样配置就会很乱,而且后续也不容易修改。乱而多,而且不容易修改,这就需要...[2023/3/3]
.netcore全局异常处理
一、背景 某天,应用程序进程无缘无故退出,也就是我们通常说的崩溃。通常情况下,windows事件会记录一条消息。但是有时候,我们发现这样的信息,对于查找问题,还是远远不够的,因为它说RunTime报错。这时,我就想能不能自己捕获全局未处理的异常。之所以有这样的想法,因为之前在客户端程序中写过。...[2023/3/3]
.NET AsyncLocal 避坑指南
目录AsyncLocal 用法简介AsyncLocal 实现原理AsyncLocal 的坑AsyncLocal 的避坑指南HttpContextAcce or 的实现原理 AsyncLocal 用法简介 通过 AsyncLocal 我们可以在一个逻辑上下中维护一份数据,并且在后续代码中都可以...[2023/3/3]
.NET静态代码织入——肉夹馍(Rougamo) 发布1.4.0
肉夹馍(https: github.com/inversionhourgla Rougamo)通过静态代码织入方式实现AOP的组件,其主要特点是在编译时完成AOP代码织入,相比动态代理可以减少应用启动的初始化时间让服务更快可用,同时还能对静态方法进行AOP。 距离上一次发文差不多过去半年了,在...[2023/3/3]
如何将 Autofac 整合进 Net6.0 Core MVC 项目中
一、前言 1、简而言之 Asp.Net Core Mvc,我也用了很长一段时间了,它现在的编程模型和方式还是特别棒的,都是组件开发,什么都可以替换,当然了,您别抬杠,有些还是不能替换的。自从我们进入了跨平台开发的时代,IOC容器也成了一个不可或缺的东西了。微软为我们提供了...[2023/2/28]
记一次 .NET某家装ERP系统 内存暴涨分析
一:背景 1. 讲故事 前段时间微信上有一位老朋友找到我,说他的程序跑着跑着内存会突然爆高,有时候会下去,有什么会下不去,怀疑是不是某些情况下存在内存泄露,让我帮忙分析一下,其实内存泄露方面的问题还是比较好解决的,看过这个dump之后觉得还是有一定的分享价值,拿出来和大家分享一下吧。 二:Win...[2023/2/28]
深入解读.NET MAUI音乐播放器项目(三):界面交互
UI设计的本质是对于产品的理解在界面中多种形式的映射,当需求和定位不同时,对相同的功能表达出了不同的界面和交互方式。 作为播放器,界面可以是千差万别的。《番茄播放器》的iOS平台上我开发了传统版本,和基于手势播放的版本。 图片来自于App Store宣传图 它们界面不同,但用的同一...[2023/2/28]
【译】.NET 7 中的性能改进(七)
原文 | Stephen Toub 翻译 | 郑子铭 Arm64 在.NET 7中,大量的努力用于使Arm64的代码生成与x64的代码生成一样好或更好。我已经讨论了一些与架构无关的PR,还有一些是专门针对Arm的,但还有很多。我们来列举其中的一些。 寻址模式 (Addre ing modes...[2023/2/28]
3 .NET Core笔试题
1.什么是ASP.NET Core? 2.ASP.NET Core 中AOP的支持有哪些? 3.ASP.NET Core Filter的注册方式有哪些? 4.ASP.NET Core Filter如何支持依赖注入? 5.ASP.NET Core 如何和读取配置文件中的内容? 6.ASP...[2023/2/27]
【ASP.NET Core】标记帮助器——替换元素名称
标记帮助器不仅可以给目标元素(标记)插入(或修改)属性,插入自定义的HTML内容,在某些需求中还可以替换原来标记的名称。 比如我们在使用 Blazor 时很熟悉的 Component 标记帮助器。在 Razor 文档中你将使用 <Component> 元素来设置要呈现的组件。而在实...[2023/2/27]
.NET依赖注入之一个接口多个实现
前言 最近又在项目中碰到需要将原本单实现的接口改造成多个实现的场景,这里记录一下常见的几种改法。 假设已经存在如下接口ICustomService和其实现CustomService,由于只有一种实现,注入和使用非常容易。 public interface ICustomService { ...[2023/2/27]
【译】.NET 7 中的性能改进(六)
原文 | Stephen Toub 翻译 | 郑子铭 矢量化 (Vectorization) SIMD,即单指令多数据 (Single Instruction Multiple Data),是一种处理方式,其中一条指令同时适用于多条数据。你有一个数字列表,你想找到一个特定值的索引?你可以在列...[2023/2/27]
ASP.NET Core - 依赖注入(二)
.NET Core 依赖注入的基本用法 话接上篇,这一章介绍 .NET Core 框架自带的轻量级 Ioc 容器下服务使用的一些知识点,大家可以先看看上一篇文章 [ASP.NET Core - 依赖注入(一)] 2.3 服务解析 通过 IServiceCollection 注册了服务...[2023/2/24]
如何在Net6.0里配置多版本支持并支持注释说明的Swagger
一、前言 现在已经进入了微服务的开发时代了,在这个时代,如果有人问你什么是微服务,你说不知道,就有点太丢人了,别人会有异样的眼光看你,俗话说:唾液淹死人。没办法,我们只能去学习新的东西。一提到微服务,有一个绕不过的话题就是作为微服务的载体,WebAPI是离不开的。但是我们今天不讲WebA...[2023/2/24]
【译】.NET 7 中的性能改进(四)
原文 | Stephen Toub 翻译 | 郑子铭 边界检查消除 (Bounds Check Elimination) 让.NET吸引人的地方之一是它的安全性。运行时保护对数组、字符串和跨度的访问,这样你就不会因为走到任何一端而意外地破坏内存;如果你这样做,而不是读/写任意的内存,你会得到...[2023/2/24]
.NET微服务系统迁移至.NET6.0的故事
本次迁移涉及的是公司内部一个业务子系统,该系统是一个多样化的应用,支撑着公司的多个业务方向。目前,该系统由40多个基于.NET的微服务应用构成,使用数千个CPU核心和数TB内存,在数百个Linux容器中运行。每天,该系统需要处理数十亿次请求。 该系统其中大部分服务是在2018-2019年左右由...[2023/2/24]
三星为其基于 RISC-V的 Tizen平台移植.NET
最近.NET团队在这篇文章中介绍了对.NET移植的一般政策:https: devblogs.microsoft.com/dotnet/why-dotnet/#binary-distributions。 自从.NET 2014年开源以来,社区还扩展了 .NET 以在其他平台上运行。三星为其基于AR...[2023/2/24]
【译】.NET 7 中的性能改进(五)
原文 | Stephen Toub 翻译 | 郑子铭 循环提升和克隆 (Loop Hoisting and Cloning) 我们之前看到PGO是如何与循环提升和克隆互动的,这些优化也有其他改进。 从历史上看,JIT对提升的支持仅限于将一个不变量提升到一个层级。 考虑一下这个例子: [...[2023/2/24]
ASP.NET Core - 依赖注入(一)
1. Ioc 与 DI Ioc 和DI 这两个词大家都应该比较熟悉,这两者已经在各种开发语言各种框架中普遍使用,成为框架中的一种基本设施了。 Ioc 是控制反转, Inversion of Control 的缩写,DI 是依赖注入,Inject Dependency 的缩写。 所谓控制反转,...[2023/2/22]
记一次 .NET 某医保平台 CPU 爆高分析
一:背景 1. 讲故事 一直在追这个系列的朋友应该能感受到,我给这个行业中无数的陌生人分析过各种dump,终于在上周有位老同学找到我,还是个大妹子,必须有求必应 ??????。 妹子公司的系统最近在某次升级之后,在高峰期会遇到 CPU 爆高的现象,有些单位你懂的,很强势,所以就苦逼了程序媛,不...[2023/2/22]
快学会这个技能-.NET API拦截技法
大家好,我是沙漠尽头的狼。 本文先抛出以下问题,请在文中寻找答案,可在评论区回答: 什么是API拦截? 一个方法被很多地方调用,怎么在不修改这个方法源码情况下,记录这个方法调用的前后时间? 同2,不修改源码的情况下,怎么对方法的参数进行校正(篡改)? 同3,不修改源码的情况下,怎么对方法的返...[2023/2/22]
推荐一款.Net Core开发的后台管理系统YiShaAdmin
若依(RuoYi)是码云上一款精美的开源快速开发平台,作者毫无保留给个人及企业免费使用。RuoYi目前有三个版本:普通版本(RuoYi)、前后端分离版本(RuoYi-Vue)、微服务版本(RuoYi-Cloud)。.net的小伙伴们估计很羡慕JAVA的生态,现在.net core发展也很...[2023/2/22]
.NET周报 【2月第3期 2023-02-18】
国内文章 2023 年.NET仓库社区年度调查已经开始 https: mp.weixin.qq.com H9xUAO_yAdqm5CIHBs_eqA 中国地区是 .NET 的一个重要的市场和社区,有着众多的 .NET 开发者和爱好者。中国地区也有着很多优秀的 .NET 相关的项目和资源。这些项...[2023/2/22]
学习ASP.NET Core Blazor编程系列二十六——登录(5)
学习ASP.NET Core Blazor编程系列文章之目录 学习ASP.NET Core Blazor编程系列一——综述 学习ASP.NET Core Blazor编程系列二——第一个Blazor应用程序(上) ...[2023/2/20]
【ASP.NET Core】标记帮助器——抽象层
标记帮助器,即 Tag Helpers。这个嘛,就直接翻译了,叫“标记帮助器”,虽然不好听,但只能这样了。当然你翻译为“标记增强器”也行。 所谓标记帮助器,就是针对 HTML 标签(不管是标准的还是自己命名的)进行扩展的做法。它是以 Razor 为基础的,服务于开发人员的。在服务器端用 C# ...[2023/2/20]
NET近期面试总结和面试题
一、面试总结 避坑:深圳龙岗李朗YH股份会鸽offer 因为offer被鸽重新找工作,从8号开始面试到12号(11家公司),整体感觉面试难度不大,就是很多公司都是走流程,并不是真的需要人,有些甚至聊一两句就让回去等通知。值得注意的是面试之前要了解公司是做什么的,大概的业务是怎么样的,...[2023/2/20]