01 2022 档案
摘要:前两篇博文中提到Development,QA,Staging,Production四个环境,也说明了源代码的分支和四个环境的对应关系,本篇博文聊一下,怎么把源码自动化发布到对应的环境中。 市面上主流的DevOpt工具都支持这些功能,github,gitlab,都有CICD功能,当然,如果源码服务器是
阅读全文
摘要:关于开发测试生产需要多少个环境,因公司而异,这里分享一下我建议开发过程中使用的几个环境。 Development环境,就是开发环境,程序写代码,写单元测试的环境,一般和IDE一起,经常是在调试模式下进行,为了与其他开发者隔离,通常数据库都是自建(也有共享的)自用,三方接口一般都是mock的或调用三方
阅读全文
摘要:团队开发中,开发,测试,预发布,生产,不同的角色工作在不同的环境中,不同的环境有不同的作用(有些公司的环境更多,按照自己的交付流程设计),当然不同的环境,配置也不能相同,特别生产数据是隔离的。那asp.net core怎么来对应呢? asp.net core为了支持不同的环境,可以把配置文件分为设置
阅读全文
摘要:与web api类似,asp.net core web mvc模板也是利用ExceptionHandler来处理错误,在starup的Configure配置数据发生时导向的/home/error public void Configure(IApplicationBuilder app, IWebH
阅读全文
摘要:官方建议用app.UseExceptionHandler("/error")来集中处理异常,本例是一个具体的应用。 比如项目中有一个ViewModel,要求Name最大长度为5 /// <summary> /// 用户模型 /// </summary> public class UserModel
阅读全文
摘要:.net 5就要发布了,把asp.net core 3.1的一些模块改成了5.0来适配,基本都是体力活,没有太大改动。 ORM dapper一个轻量级的ORM,重点实现SQL语句实体映射,用sql不失灵活高效,映射用实体不失简便快捷,同时适配大部分数据库。https://github.com/axz
阅读全文
摘要:普通 静态 抽象 密封 分部 修饰关键字 无 static abstract sealed partial 构造函数调用时机 实例化(new)时 内部任意静态成员调用时 子类实例化(new)时 实例化(new)时 实例化(new)时 包含成员 字段 属性 方法 事件 索引器 运算符重载 自定义类型
阅读全文
摘要:天有不测风云,人有旦夕祸福,程序呢——会有异常错误。 C#中用try,catch,finally来捕捉处理异常,捕捉谁的异常呢?一般都是系统类库或三方类库中抛出的异常,那如果我自己架构程序,异常也是要好好考虑的一个方面。 首先要给自己的异常定义好级别,建议按产品(DaMei),项目(His,Lis)
阅读全文
摘要:一屋不扫,何以扫天下。再说也没有那么多天下(大系统)可扫,更多的是一个个自己居住的小屋(手边的小项目,子模块),所以认真的开始扫自己的小屋。 在visual studio中,解决方案(Solution)下可以创建多个项目(Project),很多复杂的系统会包括各类型项目,web ui的,web ap
阅读全文
摘要:首先声明,可能本篇文章的含金量配不上这个标题,因为说起架构,可能大家都比较关注高大上的架构,比如分布式的,高并发的,低耦合的,易扩展的等等,本篇可能使你失望了,因为这些全没有,这篇博客的中心思想是——适合的架构,就是好的架构。 古时候谈婚论嫁,讲究“门当户对”,新时代是不接受这种“封建思想”的,如果
阅读全文
摘要:通过两篇博文,我们了解到,反射是通过非实例化(new)的手段来对对象和对象内的成员访问的,不仅仅如此,反射还可以突破访问修饰符的限制,以上帝视角来窥探对象内部全部成员(字段,属性,方法),包括private成员,这样一来,为我们从另外一个层次去设计程序架构,松散模块耦合,提供了强大而有力的支撑。 本
阅读全文
摘要:上一篇博文中,利用属性反射的特点,用两个方法完成了字符转实体,实体转字符的工作,但有些复杂的场景,上面方法就没那么好用了,就需要更复杂的方式来组装处理。 先来看一个接口文档,下面是接口的调用方式 long OltpTransData(unsigned long msgType,unsigned lo
阅读全文
摘要:如题,这是我的心声,反射在我的开发中用的频次还是比较高的,有一本万利的感觉,一段复杂的代码,可以节省大量的时间;但带来的一个问题性能相对较差,所以要选择适合的场景使用。 关于C#中的反射基本用法,这里不作详细介绍,官网有详细的说明。 下面是在网上找了一个医保接口的案件,比如有两个业务接口,033,0
阅读全文
摘要:在C#中,访问修饰符是使用频率很高的一组关键字,一共四个单词六个组合:public,internal,protected internal,protected,private protected,private,如果你对这些关键字非常清楚,请跳过,节省时间;如果你在编程中一般都使用public和pr
阅读全文
摘要:在前面的系列博文中,我们说自定义业务计数器步骤: 1、分析业务,规划好监控跟踪指标 2、定义指标收集器 3、侵入编程(尽量在开发时分离业务实现与监控指票的收集代码)收集指标 4、开发grafana展示模板,完成展示 结合《asp.net core监控—引入Prometheus》二,三,四,五4种模版
阅读全文
摘要:上一篇博文中说到Prometheus有四种指标类型:Counter(计数器)、Gauge(仪表盘)、Histogram(直方图)、Summary(摘要),并且我们做了一个Counter的Demo,接下来看看Histogram。 3、Summary:摘要 summary是采集展示百分位数,百分位定义:
阅读全文
摘要:上一篇博文中说到Prometheus有四种指标类型:Counter(计数器)、Gauge(仪表盘)、Histogram(直方图)、Summary(摘要),并且我们做了一个Counter的Demo,接下来看看Histogram。 3、Histogram:直方图 直方图,维基百科的定义:是一种对数据分布
阅读全文
摘要:上一篇博文中说到Prometheus有四种指标类型:Counter(计数器)、Gauge(仪表盘)、Histogram(直方图)、Summary(摘要),并且我们做了一个Counter的Demo,接下来看看Gauge。 2、Gauge:仪表盘,有增有减 这个指标非常像汽车的车速表,指针是在一定范围内
阅读全文
摘要:上一篇博文中,说明了怎么引进Prometheus到asp.net core项目中,因为是Demo,所以Prometheus和Grafana都是windows版本,本地执行的,生产环境上这些服务可以根据的公司的架构,放到适合的环境内,现在这些服务都支持跨平台化和容器化。并且在上篇博客中展示的是http
阅读全文
摘要:Prometheus是CNCF毕业的第二个项目,算是明星产品(可自行了解Prometheus的功能),asp.net core当然不能错过与之配套使用。在.net中是通过prometheus.net【https://github.com/prometheus-net/prometheus-net】引
阅读全文
摘要:record是C#9引入的新的引用类型,详细见官方文档:https://docs.microsoft.com/zh-cn/dotnet/csharp/whats-new/csharp-9#record-types 在C#中,引用类型有:interface,class,delegate,数组;现在re
阅读全文
摘要:C#中有很多集合类型,比如List<T>,Dictionary<TKey,TValue>,这些是我们常用的,但也有一些少众的场合使用的集合:特征类型的ReadOnly集合,Sort集合;封装特定算法类型的集合:Queue<T>(先进先出),Stack<T>(后进先出),LinkedList<T>(链
阅读全文