随着团队越来越多,越来越大,需求更迭越来越快,每天提交的代码变更由原先的2位数,暴涨到3位数,每天几百次代码Check In,补丁提交,大量的代码审查消耗了大量的资源投入. 如何确保提交代码的质量和提测产品的质量,这两个是非常大的挑战. 工欲善其事,必先利其器.在上述需求背景下,今年我们准备用工具和技术,全面把控并提升代码质量和产品提测质量.即: 1. 代码质量提升:通过自定义代码扫描规则,将有问题的代码.不符合编码规则的代码扫描出来,禁止签入 2. 产品提测质量:通过单元测试覆盖率和执行通过率…
随着.NET Core相关技术研究的深入,现在将这一系列的文章,整理到一个索引页中,方便大家翻阅查找,同时,后续也会不断补充进来. .NET Core技术研究-WebApi迁移ASP.NET Core2.0 .NET Core技术研究-Span<T>和ValueTuple<T> .NET Core技术研究-EntityFramework Core 3.0 Preview .NET Core技术研究-ConfigurationManager在单元测试下的坑 .NET Core技术研究…
前一段时间,和大家分享了 ASP.NET Core技术研究-探秘Host主机启动过程 但是没有深入说明主机的设计.今天整理了一下主机的一些知识,结合先前的博文,完整地介绍一下.NET Core的主机的设计和构建启动过程. 一.什么是主机 主机是一个封装了应用资源的对象,即:主机封装了一堆应用资源,封装了哪些应用资源呢? 依赖注入框架 DI Logging日志 Configuration 配置 托管服务:IHostedService服务接口的实现 二.Web主机和通用主机 先说Web主机:即ASP…
因为IIS不支持跨平台的原因,我们在升级到ASP.NET Core后,会接触到一个新的Web服务器Kestrel.相信大家刚接触这个Kestrel时,会有各种各样的疑问. 今天我们全面认识一下ASP.NET Core的默认Web服务器Kestrel. 一.初识Kestrel 首先,Kestrel是一个跨平台的Web服务器,支持运行在Windows.macOS.Linux等操作系统中.Kestrel支持一下使用场景: HTTPS Opaque upgrade used to enable WebS…
当我们将原有ASP.NET 应用程序升级迁移到ASP.NET Core之后,我们发现代码工程中多了两个类Program类和Startup类. 接下来我们详细探秘一下通用主机Host的启动过程. 一.Program类的Main函数入口 Program类最重要的功能就是启动主机,这里有一个主机的概念,是ASP.NET Core全新引入的. 主机负责应用程序启动和生存期管理. 同时,主机也是封装应用程序资源的对象: 依赖注入 (DI) Logging Configuration IHostedServ…
性能是.Net Core一个非常关键的特性,今天我们重点研究一下ValueTuple<T>和Span<T>. 一.方法的多个返回值的实现,看ValueTuple<T> 日常开发中,假如我们一个方法有多个返回值,我们可能会用Out出参,或者使用一个自定义类/匿名类型,或者Tuple<T>. Out出参可以使用,但是在编写Async方法时不支持. 自定义类/匿名类型,需要我们根据返回值的结构,自定义一个类型,带来性能开销,同时增加了编码工作量,同时需要考虑跨域序…
升级ASP.NET Core后,配置的读取是第一个要明确的技术.原先的App.Config.Web.Config.自定义Config在ASP.NET Core中如何正常使用.有必要好好总结整理一下,相信大家都会用到. 首先,看一下ASP.NET Core中的配置提供程序(Configuration Providers): 一.配置提供程序(Configuration Providers) ASP.NET Core 使用一个或多个配置提供程序来读取配置: 应用程序设置文件(配置文件),例如apps…
我们将原有ASP.NET应用升级到ASP.NET Core的过程中,会遇到一个新的概念:中间件. 中间件是ASP.NET Core全新引入的概念.中间件是一种装配到应用管道中以处理请求和响应的软件. 每个组件: 选择是否将请求传递到管道中的下一个组件. 可在管道中的下一个组件前后执行工作. 单独看以上中间件的定义,一个很直观的感觉:中间件是HTTP请求管道中的一层层的AOP扩展. 在展开介绍中间件之前,我们先回顾一下ASP.NET中HttpHandler和HttpModule的处理方式.  一.…
ASP.NET Core在底层内置了一个依赖注入框架,通过依赖注入的方式注册服务.提供服务.依赖注入不仅服务于ASP.NET Core自身,同时也是应用程序的服务提供者. 毫不夸张的说,ASP.NET Core通过依赖注入实现了各种服务对象的注册和创建,同时也实现了面向抽象的编程模式和编程体验,提升了应用程序的扩展性. 今天,我们普及一下ASP.NET Core中依赖注入的一些基本知识. 一.服务的注册 我们通过创建一个ASP.NET Core的项目,可以发现在Startup.cs 类中,有一个…
随着ASP.NET Core 2.0发布之后,原先运行在Windows IIS中的ASP.NET WebApi站点,就可以跨平台运行在Linux中.我们有必要先说一下ASP.NET Core. ASP.NET Core 是新一代的 ASP.NET,第一次出现时的代号为 ASP.NET vNext,后来命名为ASP.NET 5,随着它的完善与成熟,最终命名为 ASP.NET Core,这表明它已不是 ASP.NET 的升级,而是一个重新设计的Web开发框架.而它一个非常重要的变化就是它不再依赖于I…