当前位置: 首页 > news >正文

产品网站建设方案网站设置反爬虫的常用方法有哪些

产品网站建设方案,网站设置反爬虫的常用方法有哪些,觉 网站,浪味仙儿 wordpress微软在.NET Core里设计出了全新的配置体系#xff0c;并以非常灵活、可扩展的方式实现。从其源码来看#xff0c;其运行机制大致是#xff0c;根据其Source#xff0c;创建一个Builder实例#xff0c;并会向其添加Provider#xff0c;在我们使用配置信息的时候#xff0… 微软在.NET Core里设计出了全新的配置体系并以非常灵活、可扩展的方式实现。从其源码来看其运行机制大致是根据其Source创建一个Builder实例并会向其添加Provider在我们使用配置信息的时候会从内存中获取相应的Provider实例。.NET Core采用了统一的调用方式来加载不同类型的配置信息并通过统一的抽象接口IConfigurationSource对配置源进行管理这也是刚刚所说的灵活。而其扩展性就是我们可以自己自定义新的Provider实例而不会改变其原来的调用方式。接下来的文章将会基于Consul扩展一个新的Provider实例。在ASP.NET Core 中我们的应用配置是基于IConfigurationProvider的键值对。 我们先看一下思维导图基于上图我们可以看到主要有键值对源有多种分别是 环境变量命令行参数各种形式的配置文件内存对象用户自定义扩展源 在介绍.NET Core配置功能之前先简要说明一下Microsoft.Extensions.Configuration.Abstractions该组件抽象了.NET Core的配置功能并对自定义扩展制定了新的标准。以下介绍的四个核心对象全部来自于该组件。IConfiguration该接口表示一组键/值应用程序配置属性应用程序使用配置时的入口对象.NET Core对其有多种扩展其派生类包括位于统一类库的IConfigurationSection以及Microsoft.Extensions.Configuration类库中的ConfigurationRoot、ConfigurationSection、IConfigurationRoot。我们可以通过DI获取IConfiguration实例。它主要有以下三个方法GetChildren()获取直接子配置子节GetReloadToken()返回一个IChangeToken可用于确定何时重新加载配置GetSection(String)获取指定键的子节点我们来看一下源码通常我们要求配置文件要有足够的灵活性尤其是我们所扩展的配置信息存放在了其他服务器当修改的时候我们很需要一套监控功能以及时灵活的应对配置信息的修改。现在.NET Core为我们提供了这样一个功能我们只需要自定义少量代码即可完成配置信息的同步。这个方法就是GetReloadToken()其返回值是IChangeToken。此处对配置信息的同步只做一个引子后面的文章会详细说明。由于ConfigurationRoot、ConfigurationSection聚集于IConfiguration接口此处也对这两个类进行讨论方便我们对.NET Core的配置功能有个更加形象的印象。这两个接口本质上就是.NET Core关于配置信息的读取方式。XML是使用比较广泛的一种数据结构我们在配置XML时一般会使用根节点、父节点、子节点之类的术语此处也一样。ConfigurationRoot是配置的根节点也实现了IConfigurationRoot此接口只有一个方法其主要功能就是实现对配置信息的重新加载另外还包括一个IConfigurationProvider类型的集合属性。其源码如下通过源码我们知道如果调用了Reload()方法所有类型的Provider都会重新加载。前面有ConfigurationRoot表示配置的根节点那么ConfigurationSection则表示非跟节点毕竟父节点、子节点都是相对所以此处使用非根节点。ConfigurationSection继承于IConfigurationSection该接口只有三个只读属性分别表示配置信息的Key、Value以及路径信息需要指出的是此处的路径信息主要指从根节点到当前节点的路径以表示当前节点的位置类似于A:B:C可以表示节点C的位置其中A、B、C都是ConfigurationSection的Key。以下是ConfigurationSection的源码IConfigurationBuilder该接口主要用于创建IConfigurationProvider其派生类包括Microsoft.Extensions.Configuration.ConfigurationBuilder。其成员包括两个只读属性Properties获取可用于在IConfigurationBuilder之间共享数据的键/值集合Sources该属性用于缓存不同的配置源以用于相对应的Provider的创建两个方法Add(IConfigurationSource source)新增IConfigurationSource并添加到属性中Sources中Build()该方法遍历Sources属性并调用IConfigurationSource的Build()方法通过获取Provider集合最终创建IConfigurationRoot对象ConfigurationBuilder源码如下此处令人感慨颇多我们最终调用 ConfigurationRoot 的构造函数究其原因是Provider提供了统一的数据访问方式不管是基于何种类型的Provider我们都可以调用其Load()方法加载配置项。此外IConfigurationBuilder本身有很多的扩展方法来注册数据源比如AddJsonFile()扩展方法。我们来看一下我们常见的写法 IConfigurationSource该接口表示应用程序配置的键值对。其派生类包括Microsoft.Extensions.Configuration.ChainedConfigurationSource、Microsoft.Extensions.Configuration.Memory.MemoryConfigurationSource。另外该派生类还会在文件类配置场景下依赖Microsoft.Extensions.Configuration.FileExtensions组件。它是所有配置源的抽象表示包括JSON、XML、INI、环境变量等等。通过上文我们也知道了IConfigurationBuilder会注册多个IConfigurationSource实例。它只有一个方法就是Build()方法并返回IConfigurationProvider由此可见IConfigurationProvider的创建依赖于IConfigurationSource这也是一一对应的关系。所有不同的源最终都会转化成统一的键值对表示。以下是MemoryConfigurationSource的源码 IConfigurationProvider通过上文的介绍我们可以知道IConfigurationProvider是统一的对外接口对用户提供配置的查询、重新加载等功能。其派生类包括Microsoft.Extensions.Configuration.ConfigurationProvider、Microsoft.Extensions.Configuration.ChainedConfigurationProvider、Microsoft.Extensions.Configuration.Memory.MemoryConfigurationProvider。另外该派生类还会在文件类配置场景下依赖Microsoft.Extensions.Configuration.FileExtensions组件。以下是Microsoft.Extensions.Configuration.ConfigurationProvider的源码 通过源码我们可以知道ConfigurationProvider以字典类型缓存了多个Provider对象有需要的时候从内存中获取即可配置的加载通过Load()方法实现在ConfigurationRoot里我们介绍了其Reload并且说明其方法是在循环调用ConfigurationProvider的Load方法但是此处只提供了一个虚方法其目的是要交给其他具体的Provider比如环境变量、JSON、XML等这些具体的Provider可以从相应的配置源中获取配置信息。所有的子节点KEY通过GetChildKeys方法实现其重新加载方式通过ConfigurationReloadToken实例完成。另外需要说明一下在ConfigurationProvider构造函数里对字典进行了初始化并同时设置了字典Key不受大小写限制这是一个需要注意的细节。通过查看.NET配置功能的源码所有依赖均基于Microsoft.Extensions.Configuration.Abstractions在其上有一层实现即Microsoft.Extensions.Configuration其内部也多数是抽象实现并提供了多个虚方法交给其派生组件比如环境变量、命令行参数、各种文件型配置等当然各种文件型配置还要依赖Microsoft.Extensions.Configuration.FileExtensions组件。以下是.NET Core 3.0预览版里的Configuration各个组件的结构图原文地址https://www.cnblogs.com/edison0621/p/10854215.html.NET社区新闻深度好文欢迎访问公众号文章汇总 http://www.csharpkit.com
http://www.zqtcl.cn/news/446950/

相关文章:

  • 网站设计模板之家南宁seo外包平台
  • 免费舆情网站遵义市双控体系建设网站
  • 企业做网站得多少钱wordpress get_posts
  • 轻淘客网站怎么做申请个人网址
  • 新的网站的建设步骤购物网站首页源码
  • 龙岗网站建设费用明细中山 灯饰 骏域网站建设专家
  • 做catalog的免费网站网站开发一般采用什么框架
  • 网站建设海淀区网站特殊字体
  • 电子商务网站建设情况国风网页设计欣赏
  • 海拉尔网站建设+网站设计徐州模板建站定制网站
  • 做网站诱导充值犯法吗折叠分类目录模板wordpress
  • 企业网站建设的平台怎样建网站买东西
  • 免费推广工具有哪些上海优化营商环境
  • 模板网站怎么修改下载的字体如何安装到wordpress
  • 中国建设资格注册中心网站杭州市建设信用网官网
  • 国外网站搭建平台wordpress+行间距插件
  • 做网站买那种服务器wordpress商店插件
  • dw网站开发流程做影视网站怎么
  • 建好的网站在哪里免费的app软件大全
  • 建设银行信用卡境外网站盗刷电子商务专业是学什么的
  • asp.net做电商网站设计徐州做网站费用
  • 网站怎么发布做微商wordpress 主页显示多图
  • 国外做宠物用品的网站安徽网新科技有限公司官网
  • 辣条类网站建设规划书南阳网站推广优化公司
  • 帝国网站做地域标签seo关键词排名查询
  • 西安网站建设xs029免费代理ip最新
  • 网站建设不挣钱海盐建设局网站
  • 潍坊做网站张家口最近一个月的热点事件
  • 套模板的网站多少钱公司付的网站费怎么做分录
  • 做ps找图的网站有哪些响应式设计是什么意思