Prometheus,Jaeger,GraphQL技术在asp.net core框上的应用的汇总。
在开发asp.net core过程中,记录下使用知识的点点滴滴,方便初次接触的人参考学习。技术有你,共同前行。asp.net core下的RequestBody和RequestForm提交asp.net core跨域访问ajax的验证访问asp.net core web api token验证和RestSharp访问 .net core 1.1下的EntityFramework Code Firs
在开发asp.net core时,通常会在appsettings.json中配置信息,这些信息都是以一个json的格式存储,在程序中通过Options的方式来绑定实体类使用,如下面的APIConfig和实体类。 配置文件:{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.As
这节我们主要介绍ASP.NET Core Identity认证,认证是决定用户是否能够成功登录应用程序的一个过程,用户通过提供自己的用户名和密码来证明他们自己是真实用户,当登录成功时, Identity 认证用户并且赋予访问ASP.NET Core 应用程序安全资源1、ASP.NET Core Identity如何认证我们创建ASP.NET Core Identity Authentication
在这节中我们将研究ASP.NET Core Identity中用户名、邮件、密码策略,解释一下Identity默认提供的策略以及如何实现自定义策略,最后我们针对用户名、邮件、密码实现客户自定义策略1、ASP.NET Core Identity密码策略ASP.NET Core Identity默认的密码策略要求密码满足如下条件:密码必须至少6个字符密码至少有一个除字母和数字以外的字符密码必须至少有一
这节我们主要演示在ASP.NET Core Identity中创建、修改、删除、查询用户1、ASP.NET Core Identity UserManager 类UserManager类位于Microsoft.AspNetCore.Identity命名空间中,我们可以使用该类管理数据库中的用户。我们使用泛型版本的 UserManager<T>类来实现基本的CRUD操作下面描述泛型版本类
ASP.NET Core Identity提供给我们一组工具包和API,它能帮助我们应用程序创建授权和认证功能,也可以用它创建账户并使用用户名和密码进行登录,同时也提供了角色和角色管理功能。ASP.NET Core Identity使用SQL Server/第三方数据库存储用户名和密码,角色和配置数据这系列中我们主要使用VS中自带的LocalDB作为演示,你也可以直接从官网上进行下载:https:
.NET8 .NET8的第一个预预览版发布了,又开启了一波新技术的学习和研究。简单过了一下.NET8 Preview1,中间有两个功能是我的痛点,先睹为快。 在项目中,数据从前端UI到后端(后端也分为好几层),再到数据库端,每个端或层的命名规则不尽相同,所以在端之间的数据项命名转换就个痛点,C#中,帕斯卡命名与官方规则最为接近,但数据库或前端就不是了,特别有些数据库对大小写敏感,或不支持大写,
很多时候,会判断一个值是否为数值类型,数值类型是可以进行算术运算的,表示格式也比较统一,所以在做通用功能时会用到。下面给出了几种用法。 第一版:通用用法,设置具体类型逐一进行判断,这种做法可以灵活设置类型,缺点也是想增加类型,也得人工增加。bool IsDig(object t) => t switch{ short => true, int => true,
使用特性,可以有效地将元数据或声明性信息与代码(程序集、类型、方法、属性等)相关联。 将特性与程序实体相关联后,可以在运行时使用反射这项技术查询特性。https://learn.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/attributes/ 上面是引自微软官方文档,关于特性的作用的描述。在.NET
string是开发过程中,使用频度最高的类型之一,所以在构建类型时作了很多处理,如“不可变性”,“保留性”等特点。 string的常量是在""引号中进行赋值的。var str1 = "这是一段文字";Console.WriteLine(str1); 之后,为了字符串的格式化,引入了$""定义方式,这样就可以在字符串中用{}来标注格式化的内容了。var str2 = $"时间:{DateTi
访问修符,是OOP中一个很重要的知识点。在C#中,class(类)的访问修饰符有public和internal两种。 类成员(属性,方法,字段,事件等)的访问修饰符public,internal,protected,private,internal protected,protected private六种。 .NET7到来时,C#11中添加了file访问修饰符。对,就是文件的意
从System.Text.Json诞生,就在努力增加功能和提升性能,在.NET7中,又带来了多态的适配。 下面是一个父类Customer,两个子类,WechatCustomer和LineCustomer。public class Customer{ public string Name { get; set; } public string Address { get; set;
在C#中,有int16,用short来定义;有int32,用int定义;用int64,用long来定义。在.NET7中,添加了int128,和unint128,位数更大的整型。var i16 = short.MaxValue;Console.WriteLine($"Int16(short):{i16}");var i32 = int.MaxValue;Console.WriteLine($"I
还是先看看C#中属性的这定义,在初始化和访问上有哪些方式,就能看出required属性有什么不一样的地方了。 属性,是封装字段的,通过get和set访问器可以很好地验证数据的有效性。public record Order_00{ public Guid Id { get; set; } private string? _orderNo; public string? Ord
下面汇总了一些VisualStudio“靓点”,有的可能你已经天天在用,用来提升生产力了,不过仍希望本篇对你有所收获。数值类型格式化 为了看大数值类型方便,C#可以用下划线来分隔一组一组,方便查看。转时间格式提示当把时间转成一种格式时,ToString()的参数可以提示这些格式的具体含义。正则语法提示 在输入正则规则时,会对输入的格式进行提示。暂存对比当没修改的代码没有进行git提交时,点
本文是“.NET Conf China 2022”上我的一个分享,这里更细化的分享出来。 分享分为四个部分:制定指示设计应用正确测试性能优化 高性能:不一定是架构出来的,但一定是优化出来的。制定指标-收集首先把项目中的热路径API和核心API找出来,然后分析每个API是CPU密集型的,还是内存密集型的,以供在后面测试参考或对API的判断。制定指标-制定TPS=并发线程*1000/ART,这
在WinForm中,有很多添加和修改数据的场景,一般的做法是当点击“添加”按钮时,收集各控件的值,然后赋值给实体类的各个属性,然后再完成保存工作。在修改时,首先把实体的原值,一个个赋值给控件,修改保存时,再反过来把值赋给实体,最后持久化保存。 除了这种做法,用绑定也是可以完成数据的分发和收集,绑定可以把实体的原值赋给控件,修改完控件后,实体的属性值也一起变化了,最后持久化提交实体就可以了。
在很多WinForm的程序中,会有客户端之间相互通信的需求,或服务端与客户端通信的需求,这时就要用到TCP/IP的功能。在.NET中,主要是通过Socket来完成的,下面的例子是通过一个TcpListerner作为监听,等待TcpClient的连接,连接成功后就可以利用NetStream进行信息互通了。 在互相通信过程中,发送和接收分别在不同的线程中处理,并且还要处理UI更新。using S
在桌面程序里,一般日志记录到文件里就可以了,但有的时间,也需要在窗体上动态滚动显示,这时,就需要引入日志框架了。 这里引入的依旧是NLog(在我的Mini API系统里,用的也是NLog)。首先要从Nuget中引入NLog.Windows.Forms,然后添加NLog.config,设置“始终复制”。<Project Sdk="Microsoft.NET.Sdk"> <P
WebView是WinForm框架中一个控件,用来对网页信息交互,有时Web自己开发的,有时Web是三方的。 下面通过一个例子来看看WebView2的使用。 首先看Web的逻辑,是一个商品添加页面,用AlpineJS和BootStrap来开发的,业务上点击添加按钮,弹出modal框窗,然后保存结果,完成添加,代码如下: View@{ ViewData["Title"] = "商品管
在.NET中,画图主要是通过Graphics类实现的,这个类主要通过两类方法完成画图,一类是DrawXXX,画各种线条图形;另一类是FillXXX,用各种形状,填充各种图形。Graphics是画板,Draw各个方法是各种盏笔(不过在调用Draw方法时,参数需要一个Pen对象),Fill的各个方法就是种种刷子(确实Fill的方法参数也需要一个Brush对象)。首先要熟悉各个Draw和Fill方法
winform+api是一种对接数据模式,在本例中,为了方便,开发两个天生具有与后台api对接的用例控件,并且把他们封闭成单独控件,以供多次使用。 提示:此实例不是生产使用,仅作演示,有不完善地方,重点关注流程和自定义控件。 本例为API Server,用户控件项目,使用控件项目。 API Server端: api端主要是根据提交上来的请求,组装成一个sql,查询一个内存sqlite数
下图展示WPF中数据绑定基本概念 在WPF中Binding对象是一根连接绑定目标和数据源的桥梁,任何一方变化都会通过Binding来通知。Code<Window x:Class="Example_03.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
看到下面的项目结构,是否曾经相识?不要笑,这也是一种项目结构,极简主义。 项目结构没有对错,合适就好,但也要有几个要求,至少要做到结构明确,清晰,当然上图的结构清晰,但不明确,不知道各个Form是做什么的。 那么至少要给各个文件准确命名,不管命名规则如何,只要统一,明确就行,比如下面的图。三层 窗体界面展示层(UI),业务逻辑层(BLL),数据访问层(DAL),三个层的任务明
由于WinForm的UI是绘制的,所以在加载大量数据数据时会有一定的延时,本篇就讨论几个减少延时的方法。 在加载有规律数据时,可以考虑用递归,简单方便快捷来加载数据,如下,把一个文件夹下的所有文件或文件夹加载到树形菜单上,以树形展示,代码实现如下。var rootPath = "d://abc/bcd";var rootNode = treeView1.Nodes.Add(rootPath,
我们在控件那篇文章里说过,窗体和控件都是一个类,项目中一个个窗体,都是Form类的子类。关于这个类有几个重要的成员,也是最常用成员,以供初学者了解: Load事件:发生在构造函数后,Shown事件前,这个事件的生命周期内,窗体是不可视化的。 Shown事件:当窗体发生前窗体有轮廓画出,事件结束后整个窗体渲染完并显示。 FormClosing事件:当窗体关闭过程中触发,因为是中间过程,还有
在WinForm项目中,很多时候会映遇上多线程一起工作的情况,因为当前UI的更新显示,是在主线程中,一但主线程被长时运算占据后,UI就会被卡信,出现假死现像。那么就需要起一个新线程做长时运算工作,把进度或数据同步回UI线程。 以一个医保上传数据为例,功能是同步药品,器械,诊疗项目,同步完后进行验证核对。 注:为了看得清晰,各个关键控件我没有重命名 定义一个list来充当步骤和需要时间。s
WinForm是基于控件的,不像code+mark的架构,可以非常灵活的用mark来布局,它只能用控件布局属性和窗口控件来完成对UI的布局。容器控件有一组控件叫容器控件,对布局特别有作用,它们分别是:TableLayoutPanel:表格布局面板,每个单元格都可以用来作为其他控件的载体,通过设置行或列的是一个以行和列的大小型来确定每个单元格所占的大小FlowLayoutPanel:流式布局面板
窗体无疑是WinForm的主角,每个窗体都是用一个class来承载,那么窗体的控件,就是类中的私有字段了。每个窗体有三个文件,两个.cs文件,是一个分部类,Designer.cs是自动生成的C#代码,一般是拖拽控件后生成的代码;另一个.cs文件是写业务代码用的;第三个是.resx文件,是资源文源,窗体的图片,图标,以及一些控件的配置信息。 比如下面的窗体: 生成的代码如下这么多,可见设计器
Copyright © 2005-2023 51CTO.COM 版权所有 京ICP证060544号