云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

域名交易_阿里云免费体验_代金券

小七 141 0

云服务器商_哪里买_大数据时代什么意思

在本教程中,您将了解gRPC是什么,以及如何在.NETCore3.1中使用它来构建高效的微服务。在整个教程中,您将构建一个服务和一个客户机,它将向您介绍在C#中使用gRPC的详细信息。您可以在这个GitHub存储库中找到最终项目的完整代码。什么是gRPC?gRPC是一个有效连接服务和构建分布式系统的框架。它最初是由Google设计的,现在是一个开源项目,旨在促进服务之间通信的远程过程调用(RPC)模型。它专注于高性能,并使用HTTP/2协议来传输二进制消息。它还依赖于协议缓冲区语言来定义服务契约。协议缓冲区,也称为Protobuf,允许您独立于编程语言定义要在服务到服务通信中使用的接口。许多常用编程语言的工具都可以用来将这些Protobuf接口转换成代码。gRPC框架允许开发人员创建能够有效地相互通信的服务,并且独立于他们首选的编程语言。一旦使用Protobuf定义了一个契约,每个服务都可以使用这个契约来自动生成建立通信基础设施的代码。这一方面简化了服务交互的创建,加上高性能,使gRPC成为创建微服务的理想框架。此外,gRPC还提供了四种不同类型的RPC:一元RPC:这是RPC最简单的形式。在这种情况下,客户机向服务器发送请求消息并接收响应。服务器流式RPC:在这种情况下,客户机向服务器发送请求消息并接收一系列响应。客户端流式RPC:这种情况下,自助建站系统哪个好,客户端发送一系列消息并从服务器接收单个响应。双向流式RPC:在这种情况下,客户端和服务器在两个方向上交换消息。下图总结了基于gRPC的基本系统的总体架构:HTTP Web API和gRPC既然gRPC是如此高效和方便,为什么它没有取代众所周知的httpwebapi技术呢?有几个因素需要考虑。webapi依赖于不同的编程模型,尤其是在REST架构的启发下。gRPC框架提出了RPC模型,这是一个客户端调用将在服务器上执行的远程过程的模型。标准的webapi基于面向资源的方法,这是一种模型,其中客户机请求资源表示并对这些资源应用简单的CRUD操作。此外,webapi基于HTTP协议,而gRPC使用HTTP/2。另外,webapi交换的数据通常是文本的、可读的(通常是JSON),而gRPC使用紧凑的二进制格式。webapi中的交互模型是client-server,而gRPC支持多种模型:从client-server到双向流。最后,淘客链接,webapi支持浏览器,而gRPC不支持。简言之,webapi和gRPC使用不同的通信模型,并且有不同的用例。因此,这两种技术在未来几年将继续共存。gRPC和.NET核心在.NET Core 3.0发布之前,您可以通过使用Grpc核心图书馆。它基本上是用C编写的gRPC核心库的一个C包装器,它在Kestrel和其他托管代码库(如HttpClient)上表现不佳。您也没有任何项目模板来帮助您快速设置gRPC支持的应用程序。从.NET Core 3.0开始,您可以利用grpc dotnet库,该库完全用托管代码编写,并与.NET平台集成良好。它还为您提供了一个特定的项目模板,帮助您快速地设置应用程序,正如您将在本教程中看到的那样。接下来,您将学习如何在.NETCore3.1中使用gRPC,方法是构建一个简单的服务和一个通过一元RPC模型进行通信的客户端。"了解什么是gRPC以及如何使用它在.NET Core 3.1中构建微服务。"在推特上留言先决条件在启动之前,请通过在终端窗口中键入以下命令来确保已安装.NET Core 3.1 SDK:dotnet—版本结果应该是3.1.100或更高。如果没有,您应该下载.NETCore3.1SDK并将其安装到您的计算机上。注意:如果您有最新版本的visualstudio,那么就绑定了.netcore3.1sdk。创建gRPC服务您将在本教程中构建的应用程序是一个微服务,用于评估客户是否有权获得给定金额的信用。稍后,您还将构建一个向该服务发出请求的客户机。首先创建一个文件夹,比如grpcdotnet,它将包含您将在本教程中创建的两个项目。移动到此文件夹并通过在终端窗口中键入以下命令来创建服务器项目:dotnet新grpc-o信用评级服务此命令使用.NET核心gRPC模板在新创建的CreditRatingService文件夹中创建一个示例项目。你马上就要改变这个项目的内容了。定义合同创建微服务的第一步是定义契约,它是服务公开的用于接受客户评估请求的接口。如前所述,在gRPC框架中,这个接口是通过Protobuf定义的。特别是,这个定义托管在一个.proto文件中。所以,进入CreditRatingService/Protos文件夹并删除欢迎。普罗托文件。然后,添加一个名为creditrating的新文件-服务.proto在同一文件夹中,并将以下内容放入其中://协议/信用评级-服务.proto语法="proto3";选项csharp_namespace="信用评级服务";一揽子信用评级;服务信用检查{rpc CheckCreditRequest(CreditRequest)返回(CreditReply);}消息CreditRequest{字符串customerId=1;int32学分=2;}消息CreditReply{bool isAccepted=1;}proto文件的前两行声明要使用的Protobuf语法版本和接口将在其中实现的C#命名空间。然后定义信用评级包。包说明符可防止协议消息类型之间的名称冲突。proto文件中的后续项定义了RPC服务接口和两种消息类型。RPC服务接口名为CreditRatingCheck,包含一个用RPC关键字标记的项。把它看作一个带有方法的类。因此,如果您的服务公开了多个功能,您将拥有多个rpc定义。每个rpc定义都由一个名称、一个输入类型列表和一个输出类型组成。在上面的示例中,您定义了一个名为CheckCreditRequest的rpc,北京大数据研究院,它需要一个CreditRequest类型的消息,并返回一个CreditReply类型的消息。这两种消息类型都在服务定义下定义。消息声明定义了由具有相应类型的字段列表组成的消息结构。可以使用标量类型、枚举或其他消息类型作为每个字段的类型。每个字段都有一个唯一的编号。这些数字被转换成二进制格式后,用于标识消息中的字段。一旦你的申请生效,你就不应该更改这些数字。在上面的示例中,您定义了一个CreditRequest消息,大数据公司,该消息由客户标识符和请求的credit组成,CreditReply消息只包含一个布尔值,用于通信是否接受了信用。一旦您的合同被定义,您需要让您的应用程序知道这个.proto文件。所以,更新信用评级服务.csproj将其内容替换为以下内容:netcoreapp3.1在这里,相关的部分是Protobuf元素的存在,该元素引用您刚刚创建的.proto文件,并将value Server赋给GrpcServices属性。此信息允许构建系统生成支持gRPC通信基础设施所需的C代码。特别是,它将生成服务器端所需的代码。"gRPC框架允许您定义基于契约的分布式系统。"在推特上留言实施服务在定义了契约之后,实现您的服务,而不必担心通信层。只需移动到Services文件夹中,将迎宾服务.cs归档到信用服务.cs,并将其内容替换为以下代码://服务/信用服务.cs使用系统;使用System.Collections.Generic;使用系统线程化任务;使用Grpc核心;使用Microsoft.Extensions.Logging;命名空间CreditRatingService{公共类信用检查服务:CreditRatingCheck.CreditRatingCheckBase{私有只读ILogger\u logger;私有静态只读字典customerTrustedCredit=new Dictionary(){{"id0201",10000},手游返利,{"id0417",5000},{"id0306",15000}};公共信用评级检查服务(ILoggerlogger){_logger=记录器;}public override TaskCheckCreditRequest(CreditRequest,ServerCallContext context){雷图尔