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

多个网站优化怎么做可视化网站后台管理系统

多个网站优化怎么做,可视化网站后台管理系统,大型php网站系统,泉州网站建设哪家好前言上次#xff0c;我们虽然用代码实现了“异步 Request-Reply 模式”#xff0c;但是需要为每一个长时间操作 API 实现一个对应的 AsyncXXX 操作。其实#xff0c;可以尝试用 Source Generators 减少这种重复性劳动。实现思路Controller 类必须是partial,这样才能为它额外… 前言上次我们虽然用代码实现了“异步 Request-Reply 模式”但是需要为每一个长时间操作 API 实现一个对应的 AsyncXXX 操作。其实可以尝试用 Source Generators 减少这种重复性劳动。实现思路Controller 类必须是partial,这样才能为它额外增加新方法为每个长时间操作 API 声明一个 AsyncMethodAttribute这样 Source Generators 才知道为谁实现对应的同步操作;遍历所有声明了 AsyncMethodAttribute 的方法为其编写实现方法。具体代码1.添加 AsyncMethodAttribute向待编译项目加入 AsyncMethodAttribute 代码const string asyncMethodAttributeText  using System;namespace AsyncMethodGenerator {public sealed class AsyncMethodAttribute : Attribute{public AsyncMethodAttribute(){}} } ;context.AddSource(AsyncMethodAttribute, SourceText.From(asyncMethodAttributeText, Encoding.UTF8));2.遍历 AsyncMethodAttribute 声明方法找到声明了 AsyncMethodAttribute 的所有方法private string GenerateMethods(SyntaxListMemberDeclarationSyntax members) {StringBuilder stringBuilder  new StringBuilder();foreach (var member in members){if(member is MethodDeclarationSyntax method  HasAsyncMethodAttribute(method)){stringBuilder.Append(GenerateAsyncMethod(method));}}return stringBuilder.ToString(); }private bool HasAsyncMethodAttribute(MethodDeclarationSyntax method) {var hasAttribute  false;foreach (var attributeList in method.AttributeLists){foreach (var attribute in attributeList.Attributes){if (attribute.Name.ToString().Equals(AsyncMethod)){hasAttribute  true;}}}return hasAttribute; }3.生成 AsyncMethod 代码根据原方法定义生成 AsyncMethod 方法private string GenerateAsyncMethod(MethodDeclarationSyntax method) {var stringBuilder  new StringBuilder();foreach (var attributeList in method.AttributeLists){foreach (var attribute in attributeList.Attributes){if (attribute.Name.ToString().Equals(Route)){stringBuilder.Append($[Route(async/{attribute.ArgumentList.Arguments[0].ToString().Trim()})]);}else{stringBuilder.Append($[{attribute}]);stringBuilder.Append(\r\n);}}}stringBuilder.Append($public async TaskIActionResult Async{method.Identifier} );stringBuilder.Append($({method.ParameterList.Parameters}));stringBuilder.Append(\r\n);stringBuilder.Append(${{string id  Guid.NewGuid().ToString();string responseValue   $/status/{{id}};_cache.SetString(id, responseValue);Task.Factory.StartNew(() {{var result  {GenerateCallingMethod(method)}.Result;_cache.SetString(id  _result, JsonConvert.SerializeObject(result));}});return Accepted(responseValue);}});return stringBuilder.ToString(); }4.使用现在就可以在目标项目中使用 AsyncMethod 方法了:[ApiController] [Route([controller])] public partial class WeatherForecastController : ControllerBase {...[HttpGet][Route(get)][AsyncMethod]public async TaskIEnumerableWeatherForecast Get(){...} }注意 WeatherForecastController 是 partial class结论有了 Source Generators可以让编译器帮我们自动实现“异步 Request-Reply 模式”了想了解更多内容请关注我的个人公众号”My IO“
http://www.sadfv.cn/news/263709/

相关文章:

  • 广州专业网站建设后台管理便捷黄岐建网站
  • 商务网站开发流程有哪三个阶段重庆建设摩托车质量怎么样
  • 网站和网络有什么区别寿光网站建设哪家好
  • 宁波哪个公司建网站东莞市做网络维护的公司
  • 中国建设银行网站首页英文动软代码生成器 做网站
  • 网站建设前就应该进行网站推广工作视频网站 如何做seo
  • 网站开发工程师专业抖音代运营协议合同范本
  • 网站的建设进入哪个科目微信开发服务商
  • wordpress 多站点温州网站设计
  • 上海建设局网站首页云集网站建设公司
  • 在ps中做网站首页的尺寸新建网站建设
  • 专业的深圳网站建设公司哪家好案例学网页设计和网站建设
  • 网站域名注册的相关证书证明文件吉林市做网站
  • emlog做企业网站怎么申请网页域名
  • 网站建设合同属于技术合同吗域名查询权威网站
  • 自己建设的网站怎么赚钱企业网站推广制作教程
  • 网站建设 开发 模板如何用vs2012做网站
  • 重庆网站开发培训wordpress微信编辑器
  • 北京网站建设推荐q479185700上快php制作招聘网站
  • wordpress的ftp設置重庆seo代理计费
  • 网站空间送数据库竞价外包推广
  • 河南中恒诚信建设有限公司网站慈城旅游网站建设策划书
  • 采光板及采光瓦营销型网站建设网站建设业务的销售人员培训文档
  • 网站建设不推广有用吗网站建设的可行性报告研究
  • 蓬莱网站建设联系电话湖州企业网站开发公司
  • 做网站一般几个人wordpress postline继承
  • 网站建设培训视频深圳网站建设公司网络服务
  • 青岛网站制作案例wordpress熊掌号文章提交
  • 网站建设文化方案做设计的一般在什么网站找素材
  • 巨鹿做网站哪家好不同风格的网页