06 2022 档案
摘要:多年之前利用IL Emit写了一个名为Dora.Interception的AOP框架。前几天利用Roslyn的Source Generator对自己为公司写的一个GraphQL框架进行改造,性能得到显著的提高,觉得类似的机制同样可以用在AOP框架上,实验证明这样的实现方式不仅仅极大地改善性能(包括执行耗时和GC内存分配),而且让很多的功能特性变得简单了很多。
阅读全文
摘要:本系列前面的五篇文章主要介绍Dora.Interception(github地址,觉得不错不妨给一颗星)的编程模式以及对它的扩展定制,现在我们来聊聊它的设计和实现原理。(拙著《ASP.NET Core 6框架揭秘》6折优惠,首印送签名专属书签)。
阅读全文
摘要:Dora.Interception提供了两种拦截器注册方式,一种是利用标注在目标类型、属性和方法上的InterceptorAttribute特性,另一种采用基于目标方法或者属性的调用表达式。通过提供的扩展点,我们可以任何我们希望的拦截器注册方式。(拙著《ASP.NET Core 6框架揭秘》6折优惠,首印送签名专属书签)
阅读全文
摘要:ASP.NET Core 6框架揭秘(上下册)》主要介绍 ASP.NET Core 框架的核心技术部分,即由一个服务器和若干中间件构建的管道。本书共分为 5 篇:“第 1 篇 初识编程(第 1 章)”列举一系列极简的实例为读者提供基本的编程体验,“第 2 篇 基础框架(第 2~13 章)”主要介绍了一系列支撑 ASP.NET Core 的基础框架,“第 3 篇 承载系统(第 14~17章)”主要介绍了 ASP.NET Core 应用的承载流程,“第 4 篇 服务器概述(第 18 章)”列举一系列常见的服务器类型并对它们进行了比较,“第 5 篇 中间件(第 19~30 章)”系统地介绍了一系列预定义的中间件。
阅读全文
摘要:章节 编码 摘要 1 01 S101 执行命令行“dotnet new”创建控制台程序 2 S102 采用Minimal API构建ASP.NET程序 3 S103 一步创建WebApplication对象 4 S104 使用原始形态的中间件 5 S105 使用中间件委托变体(1) 6 S106 使
阅读全文
摘要:第1章 编程体验 1.1 控制台程序 1.1.1 构建开发环境 1.1.2 命令行构建 .NET应用 1.2 ASP.NET应用 1.2.1 launchSettings.json 1.2.2 Minimal 1.2.3 中间件 1.2.4 配置选项 1.2.5 诊断日志 1.2.6 路由 1.3
阅读全文
摘要:基于特性标注的拦截器注册方式仅限于将拦截器应用到自己定义的类型上,对于第三方提供的类型就无能为力了。拦截器注册本质上建立拦截器与一个或者多个目标方法之间的映射,所以最笨的方式就是利用反射的方式得到表示目标方法的MethodInfo对象,并将它与对应的拦截器关联在一起。这种方式虽然能够解决问题,但是编程体验很差。本篇介绍的基于表达式的拦截器注册方式利用针对目标方法或者属性的调用表达式,以一种强类型的方式获取到目标方法,极大地改善了编程体验。
阅读全文
摘要:在Dora.Interception(github地址,觉得不错不妨给一颗星)中按照约定方式定义的拦截器可以采用多种方式注册到目标方法上。本篇文章介绍最常用的基于“特性标注”的拦截器注册方式,下一篇会介绍另一种基于(Lambda)表达式的注册方式。如果原生定义的这两种注册方式不能满足要求,利用框架提供的扩展,我们可以完成任何你想要的拦截器注册手段。(
阅读全文
摘要:Dora.Interception有别于其他AOP框架的最大的一个特点就是采用针对“约定”的拦截器定义方式(拙著《ASP.NET Core 6框架揭秘》于日前上市,加入读者群享6折优惠)
阅读全文
摘要:多年之前利用IL Emit写了一个名为Dora.Interception(github地址,觉得不错不妨给一颗星)的AOP框架。前几天利用Roslyn的Source Generator对自己为公司写的一个GraphQL框架进行改造,性能得到显著的提高,觉得类似的机制同样可以用在AOP框架上,实验证明这样的实现方式不仅仅极大地改善性能(包括执行耗时和GC内存分配),而且让很多的功能特性变得简单了很多
阅读全文