前言 前文提及到了当我们的配置文件修改了,那么从 configurationRoot 在此读取会读取到新的数据,本文进行扩展,并从源码方面简单介绍一下,下面内容和前面几节息息相关. 正文 先看一下,如果文件修改,那么是否有一个回调函数,可以回调呢? 答案是有的: IChangeToken IConfiguration.GetReloadToken() 这里演示一下: IConfigurationBuilder builder = new ConfigurationBuilder(); build…
前言 介绍一下配置系统中的配置文件,很多服务的配置都写在配置文件中,也是配置系统的大头. 正文 在asp .net core 提供了下面几种配置文件格式的读取方式. Microsoft.extensions.configuration.Ini Microsoft.extensions.configuration.Json Microsoft.extensions.configuration.NewtonsoftJson Microsoft.extensions.configuration.Xml…
前言 在asp .net core 中我们会看到一个appsettings.json 文件,它就是我们在服务中的各种配置,是至关重要的一部门. 不管是官方自带的服务,还是我们自己编写的服务都是用它来实现自己服务的动态配置,这就是约定. 配置文件之所以会成为约定,最主要的原因就是好用,不然可能第三方的配置文件管理的就会出来替代官方的配置文件管理系统,官方也提供了对应的接口来让第三方接入. 正文 官方提供了 Microsoft.Extensions.Configuration.Abstration接…
前言 前文中我们去获取value值的时候,都是通过configurationRoot 来获取的,如configurationRoot["key"],这种形式. 这种形式有一个不好的地方,那就是不方便.那么看下.net core如何将其转换为强类型. 正文 引入:Microsoft.extensions.configuration.Binder 这个包. 配置文件内容如下: { "key1": "IamString", "key2&quo…
前言 前文已经基本写了一下配置文件系统的一些基本原理.本文介绍一下命令行导入配置系统. 正文 要使用的话,引入Microsoft.extensions.Configuration.commandLine 包. 代码: IConfigurationBuilder builder = new ConfigurationBuilder(); builder.AddCommandLine(args); var configurationRoot = builder.Build(); Console.Wr…
前言 市面上已经有很多配置中心集成工具了,故此不会去实践某个框架. 下面链接是apollo 官网的教程,实在太详细了,本文介绍一下扩展数据源,和简单翻翻阅一下apollo 关键部分. apollo 服务配置: https://github.com/ctripcorp/apollo/wiki/.Net客户端使用指南 apollo .net 客户端配置: https://github.com/ctripcorp/apollo.net/tree/dotnet-core/Apollo.Configura…
前言 本来想整理到<<重新整理.net core 计1400篇>>里面去,但是后来一想,整理 .net core 实践篇 是偏于实践,故而分开. 因为是重新整理,那么就从配置开始整理.以下只是个人理解,如有错误,望请指点谢谢. 正文 在我们创建好一个应用的时候,那么出现在我们视野的是一个这样的东西: public class Program { public static void Main(string[] args) { CreateHostBuilder(args).Buil…
前言 本节开始整理日志相关的东西.先整理一下日志的基本原理. 正文 首先介绍一下包: Microsoft.Extengsion.Logging.Abstrations 这个是接口包. Microsoft.Extengsion.Logging 这个是实现包 Microsoft.Extengsion.Logging.Console 这个是扩展包 代码如下: static void Main(string[] args) { IConfigurationBuilder configurationBui…
前言 前面介绍了服务与日志之间的配置,那么我们服务会遇到下面的场景会被遇到一些打log的问题. 前面我提及到我们的log,其实是在一个队列里面,而我们的请求是在并发的,多个用户同时发送请求这个时候我们的日志是错乱的. 如果有一个错误,那么我们只能过知道这个错误是哪里报错了,但是我们不知道触发的流程是什么样的,这对我们的debug不友好. 那么我们这时候就可以设置日志作用域. 正文 日志作用域适合下面的场景: 事务 因为一个事务有多个操作,那么希望这些操作能够有一个标识符,能够展示某一次事务的完整…
前言 什么是结构化呢? 结构化,就是将原本没有规律的东西进行有规律话. 就比如我们学习数据结构,需要学习排序然后又要学习查询,说白了这就是一套,没有排序,谈如何查询是没有意义的,因为查询算法就是根据某种规律得到最佳的效果. 同样日志结构话,能够让我们得到一些好处.如果说容易检索,容易分析,总的来说就是让我们的日志更加有规律. 如果我们的日志结构化了,那么可以使用elasticsearch 这样的框架进行二次整理,再借助一些分析工具. 我们就能做到可视化分析系统的运行情况,做到日志告警.上下文关联…