asp.netcore3.1 grpc学习系列(一)Grpc简介

What is Grpc?

官网首页给出的解释:A high-performance, open source universal RPC framework(高性能,开源通用RPC框架)
支持 Go C++ Java Python C#等语言
今天的学习主要针对asp.netcore3.1,那么我们选择c#

gRPC简介

gRPC和协议缓冲区简介。

该页面向您介绍gRPC和协议缓冲区。gRPC可以将协议缓冲区用作其接口定义语言(IDL)和其基础消息交换格式。如果您不熟悉gRPC和/或协议缓冲区,请阅读本章!如果您只是想深入了解gRPC的实际效果,请 选择一种语言,然后尝试使用其快速入门。

总览

在gRPC中,客户端应用程序可以直接在其他计算机上的服务器应用程序上调用方法,就好像它是本地对象一样,这使您更轻松地创建分布式应用程序和服务。与许多RPC系统一样,gRPC围绕定义服​​务的思想,指定可通过其参数和返回类型远程调用的方法。在服务器端,服务器实现此接口并运行gRPC服务器以处理客户端调用。在客户端,客户端具有一个存根(在某些语言中仅称为客户端),提供与服务器相同的方法。
在这里插入图片描述

从Google内部的服务器到您自己的台式机,gRPC客户端和服务器可以在各种环境中运行并相互通信,并且可以使用gRPC支持的任何语言编写。因此,例如,您可以使用Go,Python或Ruby的客户端轻松地用Java创建gRPC服务器。此外,最新的Google API的接口将具有gRPC版本,可让您轻松地在应用程序中内置Google功能。

使用协议缓冲区
默认情况下,gRPC使用协议缓冲区,这是Google成熟的用于序列化结构化数据的开源机制(尽管它可以与其他数据格式(例如JSON)一起使用)。这里是它的工作原理的快速介绍。如果您已经熟悉协议缓冲区,请随时跳到下一部分。

使用协议缓冲区的第一步是为要在原始文件中序列化的数据定义结构:这是带有.proto扩展名的普通文本文件。协议缓冲区数据被构造为 消息,其中每个消息都是信息的小逻辑记录,其中包含一系列称为字段的名称/值对。这是一个简单的例子:

message Person {
  string name = 1;
  int32 id = 2;
  bool has_ponycopter = 3;
}

然后,一旦指定了数据结构,就可以使用协议缓冲区编译器protoc从原型定义中以首选语言生成数据访问类。这些为每个字段(例如name()和)提供了简单的访问器set_name(),以及将整个结构序列化为原始字节或从原始字节中解析出整个结构的方法。因此,例如,如果您选择的语言是C ++,则在上面的示例中运行编译器将生成一个名为的类Person。然后,您可以在应用程序中使用此类来填充,序列化和检索Person协议缓冲区消息。

您可以在普通的原始文件中定义gRPC服务,并使用RPC方法参数和返回类型指定为协议缓冲区消息:

// The greeter service definition.
service Greeter {
  // Sends a greeting
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

// The request message containing the user's name.
message HelloRequest {
  string name = 1;
}

// The response message containing the greetings
message HelloReply {
  string message = 1;
}

gRPCprotoc与特殊的gRPC插件一起使用,可从您的原型文件生成代码:您将生成生成的gRPC客户端和服务器代码,以及用于填充,序列化和检索消息类型的常规协议缓冲区代码。您将在下面看到一个示例。

要了解有关协议缓冲区的更多信息,包括如何protoc使用所选语言与gRPC插件一起安装,请参阅协议缓冲区文档。。

协议缓冲区版本
而协议缓冲区开源用户已经使用了一段时间,该站点上的大多数示例都使用协议缓冲区版本3(proto3),该协议的语法略有简化,提供了一些有用的新功能,并且支持更多语言。Proto3当前可用于Java,C ++,Dart,Python,Objective-C,C#,精简版运行时(Android Java),Ruby和JavaScript,可从 协议缓冲区GitHub存储库中获取,以及golang / protobuf GitHub存储库中的Go语言生成器 ,正在开发更多语言。您可以在proto3语言指南中找到更多信息和参考文件适用于每种语言。参考文档还包含正式规范用于.proto文件格式。

通常,虽然您可以使用proto2(当前的默认协议缓冲区版本),但我们建议您将proto3与gRPC一起使用,因为它可以使用gRPC支持的所有语言,并且可以避免与proto2客户端通信时的兼容性问题proto3服务器,反之亦然。

总结

gRPC源自google,是一种新式的高性能远程过程调用(remote process call)框架,在应用程序级别,它简化了客户端和后端服务之间的消息传送。

优点:

1.高性能,基于协议的API开发
2.支持客户端、服务器、全双工通信,流式处理
3.提供了最常见开发堆栈(包括 Java、JavaScript、c#、switch、Swift和NodeJS)的全面支持
4.gRPC是轻型且高性能的。与JSON序列化相比,与JSON 序列化相比,速度有提升。

缺点

需要HTTP2协议,可能现有许多应用程序仍然没有采用这个协议
————————————————
版权声明:本文为CSDN博主「老邬的日常」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44429140/article/details/109109902

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
.NET Core 3.1是微软开发的一种跨平台的开发框架,可以用于构建各种应用程序,包括Web应用、移动应用、桌面应用等。它具有高性能、可扩展、易于维护等特点,被广泛应用于各个领域。 API(Application Programming Interface)是一种软件架构,用于不同系统之间的互操作和通信。通过使用API,我们可以将不同的应用程序和服务连接起来,实现数据交互和功能共享。 MySQL是一种常用的开源关系型数据库管理系统。它具有高性能、稳定性和安全性,并支持多平台。在.NET Core 3.1中,我们可以通过使用MySQL数据库提供程序来操作MySQL数据库。 在.NET Core 3.1 API中使用MySQL数据库,我们可以按照以下步骤进行: 1. 首先,我们需要安装MySQL数据库,并创建一个数据库,用于存储数据。 2. 接着,我们需要在.NET Core 3.1项目中安装MySQL数据库提供程序。可以使用NuGet包管理器或在项目文件中添加对MySQL提供程序的引用。 3. 在项目中添加对MySQL数据库的连接字符串的配置,包括服务器地址、用户名、密码和数据库名称等。 4. 创建一个数据模型,用于定义数据库中的表和字段。 5. 使用Entity Framework Core来执行数据库操作,包括查询、插入、更新和删除等。 6. 在API的控制器中编写相应的接口,用于处理客户端的请求并与数据库进行交互。 7. 在启动文件中配置Web API的路由和Authentication。 通过以上步骤,我们就可以在.NET Core 3.1的API中使用MySQL数据库。使用MySQL数据库可以提供数据存储和检索的功能,使我们的API可以处理和管理数据。同时,由于.NET Core 3.1的跨平台特性,我们可以在不同的操作系统上部署和运行我们的API,实现应用程序的跨平台和多设备支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

金士顿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值