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

网站做404好处网站哪家公司做的最好

网站做404好处,网站哪家公司做的最好,青岛网页设计招聘,网站侧导航写在前面Web服务开发过程中我们经常有这样的需求#xff1a;某些功能我必须我修改了配置才启用#xff0c;比如新用户注册送券等#xff1b;某个功能需到特定的时间才启用#xff0c;过后就失效#xff0c;比如春节活动等#xff1b;某些功能#xff0c;我想先对10%的用… 写在前面Web服务开发过程中我们经常有这样的需求某些功能我必须我修改了配置才启用比如新用户注册送券等某个功能需到特定的时间才启用过后就失效比如春节活动等某些功能我想先对10%的用户开放验证没问题后再逐步全量开放等这就是功能开关。日常开发中功能开关我们一般是写到配置文件里的根据不同的配置做不同的逻辑但其实.net core是对功能开关有官方支持的但因为跟Azure集成比较好所以文档不在.net core的文档里面而是在Azure的文档这边https://docs.microsoft.com/en-us/azure/azure-app-configuration/Asp.net Core中集成Asp.net Core的功能开关(Feature Flag)是直接仅根据配置文件方式使用和集成Azure配置中心使用的我们来看看区别本地配置文件方式1、先安装包install-package Microsoft.FeatureManagement.AspNetCore2、注入服务net6builder.Services.AddFeatureManagement();3、配置文件写几个配置appsettings.jsonFeatureManagement: { //简单功能开关Beta: true,v1: true,v2: true,}以上配置对应以下的枚举public enum MyFeatureFlags{Beta,V1,V2,PercentageFlag,TimeWindowFlag,CustomFeatureFlag}其实不用枚举直接用字符串也是可以的4、使用功能开关1、创建一个FeatureFlagController注入服务private readonly IFeatureManager _featureManager;public FeatureFlagController(IFeatureManager featureManager) {_featureManager  featureManager; }简单功能开关/// summary /// 当启用beta版本的时候接口有效 /// /summary /// returns/returns [FeatureGate(MyFeatureFlags.Beta)] [HttpGet] public async TaskIActionResult Beta() {var beta  await _featureManager.IsEnabledAsync(nameof(MyFeatureFlags.Beta));if (beta){//beta版本特有逻辑}return Success(Beta, beta); //这里Success是封装的大家可以改成返回Ok() }/// summary /// 当启用v1版本的时候接口有效 /// /summary /// returns/returns [FeatureGate(MyFeatureFlags.V1)] [HttpGet] public async TaskIActionResult V1() {return Success(V1); }/// summary /// 当启用v2版本的时候接口有效 /// /summary /// returns/returns [FeatureGate(MyFeatureFlags.V2)] [HttpGet] public async TaskIActionResult V2() {return Success(V2); }由于我们上面的配置都是开启的... //简单功能开关 Beta: true, v1: true, v2: true,可以看到image-20220804104253051接口都可以访问我们把v1改成false试试image-20220804104401620马上404了这里清晰的看到功能开关在多版本Api上线下某个版本时候确实方便基于过滤器的功能开关基于过滤器的功能开关是有一定逻辑的功能开关a、百分率功能开关/// summary /// 启用百分率的功能开关 /// /summary /// returns/returns [FeatureGate(MyFeatureFlags.PercentageFlag)] [HttpGet] public async TaskIActionResult PercentageFlag() {return Success(PercentageFlag); }builder.Services.AddFeatureManagement().AddFeatureFilterPercentageFilter();添加配置FeatureManagement节点下//百分率功能开关 PercentageFlag: {EnabledFor: [{Name: Percentage,Parameters: {Value: 30}}] },这里的配置参数值代表30%的概率启用次功能我们试试image-20220804105858780分别是不启用和启用状态b、时间窗口功能开关/// summary /// 启用时间窗口的功能开关 /// /summary /// returns/returns [FeatureGate(MyFeatureFlags.TimeWindowFlag)] [HttpGet] public async TaskIActionResult TimeWindowFlag() {return Success(TimeWindowFlag); }builder.Services.AddFeatureManagement().AddFeatureFilterTimeWindowFilter();添加配置//时间窗口功能开关 TimeWindowFlag: {EnabledFor: [{Name: TimeWindow,Parameters: {Start: 2022/08/03 08:00:00 00:00, //这里是UTC时间End: 2022/08/03 09:00:00 00:00}}] },这个开关在2022年8月3日 下午16时(北京时间)和17时这个世界窗口内才启用对应的Start就是生效时刻End失效时刻c、自定义功能开关ok以上都是系统内置的功能开关我们来根据自己需求创建一个自定义的需求某个功能只有在客户端是手机或者平板的情况下启用pc端不启用创建一个自定义功能开关过滤器类CustomFeatureFilter[FilterAlias(CustomFeature)] public class CustomFeatureFilter : IFeatureFilter {private readonly IHttpContextAccessor _httpContextAccessor;public CustomFeatureFilter(IHttpContextAccessor httpContextAccessor){_httpContextAccessor  httpContextAccessor;}public Taskbool EvaluateAsync(FeatureFilterEvaluationContext context){//这里参数模拟平台实际业务会有实际业务的逻辑var platform  _httpContextAccessor.HttpContext.Request.Query[platform].ToString();var allowPlatform  context.Parameters.GetCustomFeatureFilterSettings();return Task.FromResult(allowPlatform.AllowedPlatforms.Any(c  c  platform));} }public class CustomFeatureFilterSettings {public string[] AllowedPlatforms { get; set; } }/// summary /// 自定义功能开关 /// /summary /// returns/returns [FeatureGate(MyFeatureFlags.CustomFeatureFlag)] [HttpGet] public async TaskIActionResult CustomFeatureFlag(string platform) {return Success(CustomFeatureFlag); }builder.Services.AddFeatureManagement().AddFeatureFilterCustomFeatureFilter();添加配置//自定义功能开关 CustomFeatureFlag: {EnabledFor: [{Name: CustomFeature,Parameters: {AllowedPlatforms: [ //这里配置运行启用功能的平台phone,pad//pc]}}] }我们来测测image-20220804111012239可以看到仅在设置运行的平台下启用验证ok集成Azure配置中心App Configuration方式1、添加配置ConnectionStrings: {AppConfig: your app connection string},具体可参考我之前的文章《微软Azure配置中心 App Configuration (一)轻松集成到Asp.Net Core》2、启用Azure功能开关var connectionString  builder.Configuration.GetConnectionString(AppConfig);builder.Host.ConfigureAppConfiguration((hostingContext, config)  {//配置不同功能config.AddAzureAppConfiguration(options {启用功能开关特性options.Connect(connectionString)//启用功能开关特性.UseFeatureFlags(options {options.CacheExpirationInterval  TimeSpan.FromSeconds(30); //配置FeatureFlag缓存本地时间默认就是30});}); });UseFeatureFlags启用后本地配置文件的方式失效builder.Services.AddAzureAppConfiguration(); //注入服务3、在Azure 配置中心后台配置好功能开关(代替本地配置文件)基本功能开关配置创建配置image-20220804115402160填写配置信息image-20220804122451808OK以上是基本的配置配置好后可以直接在列表页面勾选启用配置与否image-20220804123400869基于过滤器的开关配置百分率功能开关image-20220804123721457时间窗口功能开关image-20220804123801220这里的Start date,和Expiry date就对应前面配置文件的Start,End;自定义功能开关image-20220804123835703这里的过滤器的**Name:**CustomFeature ,要跟代码标签 [FilterAlias(CustomFeature)]一致AllowedPlatforms也要跟代码里面的配置一致[phone,pad]这个是数组的写法总结1、启用集成到Azure的UseFeatureFlags后本地配置文件的方式失效2、Azure这套功能开关还是有可选之处的我尤其喜欢其接口标签[FeatureGate]另外定义了的标准配置项与Azure配置中心无缝集成香。源码https://github.com/gebiWangshushu/Hei.Azure.Test[参考]https://docs.microsoft.com/en-us/azure/azure-app-configuration/overview
http://www.yutouwan.com/news/235949/

相关文章:

  • 哪个公司网站备案快建筑工程招标网
  • 联想网站建设与分析1网站免费建站
  • 织梦模板网站好吗网页微信能不能传文件
  • 检测WordPress主题的网站怎么建立一个网站能够与讯飞云对话
  • 网站的基本价格建设网站建设安全培训平台
  • 网站菜单分类怎么做的wordpress开发单页面跳转
  • 区县12380网站建设情况肥城房产网
  • 免费公司网站模版论坛网站开发开题报告
  • 青岛网站设计系统网站的背景图怎么做的
  • 做网站和做app的区别温州百度推广公司
  • 个人网站做联盟营销锦州网站建设哪家好
  • 设计网站注意哪些问题厦门建设工程招标中心网站
  • 青浦网站制作永久免费个人域名注册
  • 广东省网站集约化建设通知重庆网站建设方案书
  • 桂林哪里学建设网站网站哪里可以做
  • 网站建设在线推广昆山住房与城乡建设局网站
  • 公司网站建设上海为什么自己做的网站uc打不开
  • 简易动漫网站模板最近alexa排名查询
  • 学校网站建设学生文明上网遂宁网站建设略奥网络
  • 免费网站空间申请教程贵阳网站制作计划
  • 网站推广的主题假快递单制作软件app
  • 上海 企业seo服务销售招聘
  • 上海专业网站建设价北京网站seo优化排名公司
  • 企业设计网站建设可以做生存分析的网站
  • 建网站企划书网站怎么加代码
  • 免费下载网站软件想接外包做网站
  • 这几年做那些网站致富郑州seo线上推广技术
  • 中山企业做网站莱芜吧莱芜贴吧
  • 旅行社手机网站建设成常见网络营销工具
  • 海报模板免费下载网站烟台百度网站建设