Web API 在处理一些耗时的请求时,往往不能让客户端一直等待响应,否则会造成连接超时或资源浪费的问题。
为了解决这个问题,一种常见的设计模式是“异步轮询模式”。这种模式的基本思路是:
Just So So ...
Web API 在处理一些耗时的请求时,往往不能让客户端一直等待响应,否则会造成连接超时或资源浪费的问题。
为了解决这个问题,一种常见的设计模式是“异步轮询模式”。这种模式的基本思路是:
.NET 从 5.0 开始支持了 console formatter,首次支持了 json console, 自定义 console 日志也变得可能,可以参考之前的介绍 .net 5.0 中的 JsonConsole
然而 .NET 里的 json console 里的 json 编码要求是比较严格的,有一些特殊符号和特殊编码会有点问题,我们需要使用 JavaScriptEncoder.UnsafeRelaxedJsonEscaping
才能正常显式,于是想着直接基于 newtonsoft json 来实现一个 console log formatter
ASP.NET Core 从 .NET 6 开始支持了 Minimal API, 对于 Minimal API 的的集成测试,之前一直并没有太多的关注,之前看到了这个 issue
https://github.com/pengweiqhca/Xunit.DependencyInjection/issues/86,大体上想使用 xunit DependencyInjection 来实现对 Minimal API 的集成测试,起初使用 WebApplicationFactory
写了一个示例,但是后来发现并不是人家想要的,提 issue 的同学希望在 test case 中的依赖注入和实际 web 是一个 DI,前两天后来研究了一下 WebApplicationFactory
是如何实现支持 Minimal API 的,最后在 xunit dependency injection 中提供了支持
之前写过一篇 “基于 Activity 来实现后台服务的日志追踪”,我们的服务里基本也是这样做的,前段时间发现有时间日志里会没有 traceId, 即使有 parentId 也可能没有 traceId, 后来发现这些没有 traceId 的数据基本都是 parentId 没有被采样的,而在测试环境之前我们设置的是始终采样所以在测试环境之前没有这个问题,起初的想法是解决当有 parentId 的时候,保证创建的 activity
不为 null
至于没有 parentId 也没有被采样的就不关心了,但是后面又想了一下觉得即使没有被采样,activity
也不应该为 null
我们不仅仅依赖它做 tracing 还依赖它做 logging,tracing 可以没有,但是 logging 要有,不然一些日志就没有办法串联起来了
当前我们的应用原来越多的使用异步方法,而异步方法通常会有一个 CancellationToken
的参数以及时取消我们的异步操作,那我们如何获取一个应用退出的 CancellationToken
呢,我们只需要使用一个 CancellationTokenSource
在应用退出的时候将其 Cancel 即可