随笔分类 - [02] 编程技巧
摘要:
一个好的程序员能够在系统出现问题之后马上定位错误的根源并找到正确的解决方案,一个更好的程序员能够根据当前的运行状态预知未来可能发生的问题,并将问题扼杀在摇篮中。诊断跟踪能够帮助我们有效地纠错和排错《几种基本诊断跟踪编程方式》提供了7个实例演示了针对TraceSource、EventSource和DiagnosticSource的基本用法,其实它们还具有一个更“高级”的使用方式。(
阅读全文
![](http://images.cnblogs.com/cnblogs_com/artech/158198/o_.netcore.png)
摘要:
在整个软件开发维护生命周期内,最难的不是如何将软件系统开发出来,而是在系统上线之后及时解决遇到的问题。一个好的程序员能够在系统出现问题之后马上定位错误的根源并找到正确的解决方案,一个更好的程序员能够根据当前的运行状态预知未来可能发生的问题,并将问题扼杀在摇篮中。合理地利用诊断手段能够帮助我们有效地纠错和排错。
阅读全文
![](http://images.cnblogs.com/cnblogs_com/artech/158198/o_.netcore.png)
摘要:
依赖注入使我们可以将依赖的功能定义成服务,最终以一种松耦合的形式注入消费该功能的组件或者服务中。除了可以采用依赖注入的形式消费承载某种功能的服务,还可以采用相同的方式消费承载配置数据的Options对象,这篇文章演示几种典型的编程模式。
阅读全文
![](http://images.cnblogs.com/cnblogs_com/artech/158198/o_.netcore.png)
摘要:
我们倾向于将IConfiguration对象转换成一个具体的对象,以面向对象的方式来使用配置,我们将这个转换过程称为配置绑定。除了将配置树叶子节点配置节的绑定为某种标量对象外,我们还可以直接将一个配置节绑定为一个具有对应结构的符合对象。除此之外,配置绑定还支持针对数据、集合和字典类型的绑定。
阅读全文
![](http://images.cnblogs.com/cnblogs_com/artech/158198/o_.netcore.png)
摘要:
.NET的配置支持多样化的数据源,我们可以采用内存的变量、环境变量、命令行参数、以及各种格式的配置文件作为配置的数据来源。在对配置系统进行系统介绍之前,我们通过几个简单的实例演示一下如何将具有不同来源的配置数据构建为一个统一的配置对象,并以相同的方式读取具体配置节的内容。
阅读全文
![](http://images.cnblogs.com/cnblogs_com/artech/158198/o_.netcore.png)
摘要:
ASP.NET Core应用具有很多读取文件的场景,如读取配置文件、静态Web资源文件(如CSS、JavaScript和图片文件等)、MVC应用的视图文件,以及直接编译到程序集中的内嵌资源文件。这些文件的读取都需要使用一个IFileProvider对象。IFileProvider对象构建了一个抽象的文件系统,我们不仅可以利用该系统提供的统一API来读取各种类型的文件,还能及时监控目标文件的变化。
阅读全文
![](http://images.cnblogs.com/cnblogs_com/artech/158198/o_.netcore.png)
摘要:作为《ASP.NET Core 3框架揭秘》的升级版,《ASP.NET Core 6框架揭秘》提供了很多新的章节,同时对现有的内容进行大量的修改。虽然本书旨在对ASP.NET Core框架的架构设计和实现原理进行剖析,但是其中提供的258个实例演示却可以作为入门材料,这个系列会将这些演示实例单独提取
阅读全文
摘要:
由于依赖注入具有举足轻重的作用,所以《ASP.NET Core 6框架揭秘》的绝大部分章节都会涉及这一主题。本书第3章对.NET原生的依赖注入框架的设计和实现进行了系统的介绍,其中设计一些“鲜为人知”的细节,其中一部分就体现在本篇提供的这几个实例演示上。
阅读全文
![](http://images.cnblogs.com/cnblogs_com/artech/158198/o_.netcore.png)
摘要:
毫不夸张地说,整个ASP.NET Core就是建立在依赖注入框架之上的。ASP.NET Core应用在启动时构建管道所需的服务,以及管道处理请求使用到的服务,均来源于依赖注入容器。依赖注入容器不仅为ASP.NET Core框架自身提供必要的服务,还为应用程序提供服务,依赖注入已经成为ASP.NET Core应用的基本编程模式。
阅读全文
![](http://images.cnblogs.com/cnblogs_com/artech/158198/o_.netcore.png)
摘要:
ASP.NET Core框架建立在一个依赖注入框架之上,已注入的方式消费服务已经成为了ASP.NET Core基本的编程模式。为了使读者能够更好地理解原生的注入框架框架,我按照类似的设计创建了一个简易版本的依赖注入框架,并它命名为“Cat”。本篇提供的四个实例主要体现了针对Cat的用法,《一个Mini版的依赖注入框架》提供了针对设计和实现原理的介绍。
阅读全文
![](http://images.cnblogs.com/cnblogs_com/artech/158198/o_.netcore.png)
摘要:
也许你们可能没有接触过Dapr,但是一定对它“有所耳闻”,感觉今年它一下子就火了,一时间很多人都在谈论它。我们从其命名(Dapr的全称是“分布式应用运行时Distributed Application Runtime”)可以看出Dapr的定位,它并不是分布式应用的开发框架,它提供的是更底层的“运行时”。我们可以使用不同的编程语言,采用不同的开发框架在这个由Dapr提供的运行时上面构建分布式应用
阅读全文
![](http://images.cnblogs.com/cnblogs_com/artech/158198/o_.netcore.png)
摘要:
ASP.NET Core可以视为一种底层框架,它为我们构建出了基于管道的请求处理模型,这个管道由一个服务器和多个中间件构成,而与路由相关的EndpointRoutingMiddleware和EndpointMiddleware是两个最为重要的中间件。MVC和gRPC开发框架就建立在路由基础上。本篇提供了四个实例用来演示如何利用路由、MVC和gRPC来开发API/APP。
阅读全文
![](http://images.cnblogs.com/cnblogs_com/artech/158198/o_.netcore.png)
摘要:
作为《ASP.NET Core 3框架揭秘》的升级版,《ASP.NET Core 6框架揭秘》提供了很多新的章节,同时对现有的内容进行大量的修改。虽然本书旨在对ASP.NET Core框架的架构设计和实现原理进行剖析,但是其中提供的258个实例演示却可以作为入门材料,这个系列会将这些演示实例单独提取出来并进行汇总。对于想学习ASP.NET Core的同学,如果你觉得没有必要“砖的这么深”,倒是可以看看。
阅读全文
![](http://images.cnblogs.com/cnblogs_com/artech/158198/o_.netcore.png)
摘要:
StatusCodePagesMiddleware中间件与ExceptionHandlerMiddleware中间件类似,它们都是在后续请求处理过程中“出错”的情况下利用一个错误处理器来接收针对当前请求的处理。它们之间的差异在于对“错误”的认定上:ExceptionHandlerMiddleware中间件所谓的错误就是抛出异常;StatusCodePagesMiddleware中间件则将400~599的响应状态码视为错误。
阅读全文
![](https://images.cnblogs.com/cnblogs_com/artech/158198/o_200308031938inside-asp-net-core.png)
摘要:
DeveloperExceptionPageMiddleware中间件错误页面可以呈现抛出的异常和当前请求上下文的详细信息,以辅助开发人员更好地进行纠错诊断工作。ExceptionHandlerMiddleware中间件则主要面向最终用户,我们可以利用它来显示一个友好的定制化错误页面。
阅读全文
![](https://images.cnblogs.com/cnblogs_com/artech/158198/o_200308031938inside-asp-net-core.png)
摘要:
异常页面的DeveloperExceptionPageMiddleware中间件,该中间件在捕捉到后续处理过程中抛出的异常之后会返回一个媒体类型为text/html的响应,后者在浏览器上会呈现一个错误页面。由于这是一个为开发者提供诊断信息的异常页面,所以可以将其称为开发者异常页面(Developer Exception Page)。该页面不仅会呈现异常的详细信息(类型、消息和跟踪堆栈等),还会出现与当前请求相关的上下文信息
阅读全文
![](https://images.cnblogs.com/cnblogs_com/artech/158198/o_200308031938inside-asp-net-core.png)
摘要:
NuGet包“Microsoft.AspNetCore.Diagnostics”中提供了几个与异常处理相关的中间件。当ASP.NET Core应用在处理请求过程中出现错误时,我们可以利用它们将原生的或者定制的错误信息作为响应内容发送给客户端。在着重介绍这些中间件之前,下面先演示几个简单的实例,从而使读者大致了解这些中间件的作用。
阅读全文
![](https://images.cnblogs.com/cnblogs_com/artech/158198/o_200308031938inside-asp-net-core.png)
摘要:
AOP的本质是方法拦截(将针对目标方法调用劫持下来,进而执行执行的操作),置于方法拦截的实现方案,不外乎两种代码注入类型,即编译时的静态注入和运行时的动态注入,本篇文章列出了几种常用的动态注入方案。这篇文章的目标并不是提供完整的AOP框架的解决方案,而是说明各种解决方案后面的原理,所以我们提供的实例代码会尽可能简单
阅读全文
![](http://images.cnblogs.com/cnblogs_com/artech/158198/r_EnterLib.png)
摘要:
表示路由终结点的RouteEndpoint对象包含以RoutePattern对象表示的路由模式,某个请求能够被成功路由的前提是它满足某个候选终结点的路由模式所体现的路由规则。具体来说,这不仅要求当前请求的URL路径必须满足路由模板指定的路径模式,还需要具体的字符内容满足对应路由参数上定义的约束。
阅读全文
![](https://images.cnblogs.com/cnblogs_com/artech/158198/o_200308031938inside-asp-net-core.png)
摘要:
针对终结点的路由是由EndpointRoutingMiddleware和EndpointMiddleware这两个中间件协同完成的。应用在启动之前会注册若干表示终结点的Endpoint对象(具体来说是包含路由模式的RouteEndpoint对象)。当应用接收到请求并创建HttpContext上下文之后,EndpointRoutingMiddleware中间件会根据请求的URL及其他相关信息从注册的终结点中选择匹配度最高的那个。之后被选择的终结点会以一个特性(Feature)的形式附加到当前HttpContext上下文中,EndpointMiddleware中间件最终提供这个终结点并用它来处理当前请求。[
阅读全文
![](https://images.cnblogs.com/cnblogs_com/artech/158198/o_200308031938inside-asp-net-core.png)