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

企业网站建设需要哪些设备网站建设远程教育大学论文

企业网站建设需要哪些设备,网站建设远程教育大学论文,关于网站建设需要的研究方法,网站建设前端工程师岗位职责一、截止时间概述 截止时间功能让 gRPC 客户端可以指定等待调用完成的时间。 超过截止时间时,将取消调用。 设定一个截止时间非常重要,因为它将提供调用可运行的最长时间。它能阻止异常运行的服务持续运行并耗尽服务器资源。截止时间对于构建可靠应用非…

一、截止时间概述

  1. 截止时间功能让 gRPC 客户端可以指定等待调用完成的时间。
  2.  超过截止时间时,将取消调用。
  3.  设定一个截止时间非常重要,因为它将提供调用可运行的最长时间。
  4. 它能阻止异常运行的服务持续运行并耗尽服务器资源。
  5. 截止时间对于构建可靠应用非常有效,应该进行配置。

二、取消概述

  1. 客户端主动取消不再需要长期运行的调用
  2. 线程故障自动取消
  3. 超出截止时间触发取消操作

三、实战案例

  1. 首先准备一个grpc后端服务
  2. 其次准备一个webapi服务作为客户端,方便HttpContext传递
  3. 客户端工厂配置EnableCallContextPropagation 用于上下文传递截止时间
  4. 传递CancellationTokenSource
  5. 话不多说,通过代码可以更好的看出程序的运行轨迹
// 引入proto文件
// 公共messages.protosyntax = "proto3";option csharp_namespace = "GrpcProject";package grpc.serviceing;// 请求体
message ServerRequest{string name = 1;double height = 2;int32 age = 3;bool flag = 4;float x = 5;float y = 6;float z= 7;repeated string departments = 8;
}message ServerFileRequest{bytes fileBytes = 1;
}// 响应体
message ServerResponse{bool result = 1;
}// 服务dollar.proto文件syntax = "proto3";import "google/protobuf/empty.proto";
import "Protos/messages.proto";option csharp_namespace = "GrpcProject";package grpc.serviceing;service DollarRpc{rpc ServerOne (ServerRequest) returns (ServerResponse);rpc ServerTwo (ServerRequest) returns (google.protobuf.Empty);
}

服务端接口实现:

   public class DollarService : DollarRpc.DollarRpcBase{public override async Task<ServerResponse> ServerOne(ServerRequest request, ServerCallContext context){await Console.Out.WriteLineAsync("-------------------------ServerOne------------------------------\r\n");await Task.Delay(TimeSpan.FromSeconds(8), context.CancellationToken);foreach (var prop in request.GetType().GetProperties()){await Console.Out.WriteLineAsync($"property  name:{prop.Name};value:{prop.GetValue(request)}");}return GetResponse();}public override async Task<Empty> ServerTwo(ServerRequest request, ServerCallContext context){await Console.Out.WriteLineAsync("-------------------------ServerTwo------------------------------\r\n");await Task.Delay(TimeSpan.FromSeconds(8), context.CancellationToken);foreach (var prop in request.GetType().GetProperties()){await Console.Out.WriteLineAsync($"property  name:{prop.Name};value:{prop.GetValue(request)}");}return new();}private ServerResponse GetResponse() => new() { Result = true };}

客户端实现重点:

  1. program注入客户端工厂并启用截止时间配置
  2. 增加拦截器统一设定超时时间
  3. 调用查看结果
// program.csbuilder.Services.AddGrpcClient<DollarRpc.DollarRpcClient>(options =>
{options.Address = new Uri("https://localhost:7188");
}).EnableCallContextPropagation();
//拦截器过滤截止时间[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = false)]public class GrpcFilterAttribute : Attribute, IActionFilter{public void OnActionExecuted(ActionExecutedContext context){}public void OnActionExecuting(ActionExecutingContext context){CancellationTokenSource tokenSource = new();GrpcServerCallContextFeature callContext = new(DateTime.UtcNow.AddSeconds(5), tokenSource.Token);context.HttpContext.Features.Set<IServerCallContextFeature>(callContext);}}public class GrpcServerCallContextFeature : ServerCallContext, IServerCallContextFeature{/// <summary>/// 构造/// </summary>/// <param name="deadline"></param>/// <param name="cancellationToken"></param>public GrpcServerCallContextFeature(DateTime deadline, CancellationToken cancellationToken){DeadlineCore = deadline;CancellationTokenCore = cancellationToken;AuthContextCore = new AuthContext(null, new Dictionary<string, List<AuthProperty>>());}public ServerCallContext ServerCallContext => this;protected override string MethodCore { get; }protected override string HostCore { get; }protected override string PeerCore { get; }protected override DateTime DeadlineCore { get; }protected override Metadata RequestHeadersCore { get; }protected override CancellationToken CancellationTokenCore { get; }protected override Metadata ResponseTrailersCore { get; }protected override Status StatusCore { get; set; }protected override WriteOptions? WriteOptionsCore { get; set; }protected override AuthContext AuthContextCore { get; }protected override ContextPropagationToken CreatePropagationTokenCore(ContextPropagationOptions? options){return base.CreatePropagationToken(options);}protected override Task WriteResponseHeadersAsyncCore(Metadata responseHeaders){throw new NotImplementedException();}}
//调用
// 在相应的类上打上标记   [GrpcFilter][Route("api/[controller]")][ApiController][GrpcFilter] // 设定截止时间过滤public class GrpcTestController : ControllerBase{private readonly DollarRpc.DollarRpcClient _dollarRpcClient;public GrpcTestController(DollarRpc.DollarRpcClient dollarRpcClient) => _dollarRpcClient = dollarRpcClient;[HttpGet("one")]public async Task<string> GetOneResult(){ServerRequest request = new ServerRequest(){Departments = {"one","two","three","four","five"},Age = 10,Flag = true,Height = 10,Name = "zhangsan",X = 10F,Y = 11F,Z = 12F};try{var response = await _dollarRpcClient.ServerOneAsync(request);if (response.Result){return "Success";}return "Fail";}catch (RpcException ex) when (ex.StatusCode == Grpc.Core.StatusCode.DeadlineExceeded){return "dealine timeout.";}catch (RpcException ex){return ($"NoResult:{ex.Message}");}}[HttpGet("two")]public async Task<string> GetTwoResult(){ServerRequest request = new ServerRequest(){Departments = {"one","two","three","four","five"},Age = 10,Flag = true,Height = 10,Name = "zhangsan",X = 10F,Y = 11F,Z = 12F};try{var response = await _dollarRpcClient.ServerTwoAsync(request);return "Success";}catch (RpcException ex) when (ex.StatusCode == Grpc.Core.StatusCode.DeadlineExceeded){return "dealine timeout.";}catch (RpcException ex){return ($"NoResult:{ex.Message}");}}}

四、查看执行结果

服务端One:

客户端One:

 

 swagger:

 另一个Two效果类似。同时服务端任务取消错误,也在截图上有显示。

五、源码地址

链接:https://pan.baidu.com/s/1vleChFc3F6ILs-5ad8xQCA 
提取码:mud0

http://www.15wanjia.com/news/171911.html

相关文章:

  • 网站设计一般多长时间松江区网站建设
  • 中国都有哪些网站高端礼品定制网站
  • 织梦医疗网站源码建设银行网站多少
  • 西部数码网站管理助手v4.0什么网站可以做邮件列表
  • 有什么做衣服的网站吗规划网站开发总体方案
  • 中国空间站有多大手机页面设计软件
  • 白沟网站开发建筑工程网络进度计划备注填写范例
  • 建立内部网站需要多少钱广州市住房建设公租房网站
  • 网站开发的经济可行性简答网站内容建设的时候内链重要性
  • 阜蒙县建设镇官方网站html网站开发心得
  • 网站是怎么被挂马江苏网站建设seo优化
  • 网上做环评立项的网站是哪个中铁建设集团官网
  • 医学网站建设风格wordpress显示的是文件目录
  • 自学建站网wordpress插件 幻灯片
  • 自学网站建设需要什么学历佛山网站营销推广
  • 网站优化招商微信开放平台怎么注销账号
  • 备案网站的黑名单沈阳建设工程信息网官网新网站
  • 团购网站营销方案网页代理软件
  • 家居类企业响应式网站ps手绘网站有哪些
  • 长春建站公众号互联网排行榜
  • 企业用什么做网站陕西建设注册中心网站
  • 网站主题旁边的图标怎么做的个人网页设计教程
  • 网站建设360小象编程官网登录入口
  • 网站怎么连接网用照片做视频的模板下载网站
  • 商务网站设计与制作网络服务中心
  • 网站建设的cms系统网页设计基础考试题库及答案
  • 服装 多语言 网站源码企业网站源码 asp
  • 个人网站搭建步骤同一域名可以做相同网站吗
  • 淘宝数据网站开发wordpress反弹攻击
  • 越烽建设集团有限公司网站怎么做网页版网站