首页 > 编程语言 >ASP.NET Web Api 中 Grpc 的简单使用

ASP.NET Web Api 中 Grpc 的简单使用

时间:2024-03-18 20:35:13浏览次数:29  
标签:Web ASP package Grpc add Greeter message logger

服务端

添加Nuget包

dotnet add package Grpc.AspNetCore

编写Protobuf文件

syntax = "proto3";

option csharp_namespace = "GrpcGreeter";

package greet;

// The greeting 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;
}

引入Protobuf文件

<Protobuf Include="greet.proto" GrpcServices="Server" />

重写Greeter的SayHello方法

using Grpc.Core;
using GrpcGreeter;

//Greeter.GreeterBase由greet.proto自动生成
public class GreeterService : Greeter.GreeterBase
{
    private readonly ILogger<GreeterService> _logger;
    public GreeterService(ILogger<GreeterService> logger)
    {
        _logger = logger;
    }

    public async Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)
    {
        return await Task.FromResult(new HelloReply
                                     {
                                         Message = request.Name + " Hello"
                                     });
    }
}

Program注册

//注册Grpc
builder.Services.AddGrpc();

//注册GreeterService
app.MapGrpcService<GreeterService>();

设置项目为Https

app.UseHttpsRedirection();

占位 https://www.cnblogs.com/Ar4te-blog/p/18076260

客户端

添加Nuget包

dotnet add package Google.Protobuf
dotnet add package Grpc.Net.Client
dotnet add package Grpc.Tools

复制服务端的Protobuf文件并引入

<Protobuf Include="greet.proto" GrpcServices="Client" />

调用测试

[HttpGet]
public async Task<string> TestGrpc()
{
    // https://localhost:52841 为服务端地址
    using var channel = GrpcChannel.ForAddress("https://localhost:52841");
    var client = new Greeter.GreeterClient(channel);
    var reply = await client.SayHelloAsync(new HelloRequest
                                           {
                                               Name = "GreeterClient
                                           });
    return await Task.FromResult(reply.Message);
}

标签:Web,ASP,package,Grpc,add,Greeter,message,logger
From: https://www.cnblogs.com/Ar4te-blog/p/18076260

相关文章

  • Web安全常见漏洞原理、危害及其修复建议
    一、SQL注入漏洞原理指web应用程序对用户输入的数据合法性没有判断,导致攻击者可以构造不同的sql语句来对数据库数据库的操作。(web应用程序对用户输入的数据没有进行过滤,或者过滤不严,就把sql语句带进数据库中进行查询)。Sql注入漏洞的产生需要满足两个条件:①参数用户可控......
  • Web渗透各种漏洞原理
    SQL注入漏洞原理参数是用户可控的,也就是前端传入后端的参数的内容是用户可以控制的;参数被带入数据库进行查询,也就是传入的参数被拼接到SQL语句中,并且被带入到数据库进行查询;xss漏洞原理由于程序员在编写代码时,未对用户输入的数据进行处理、或者处理不当,从而导致恶意paylo......
  • 常见web漏洞原理,危害,防御方法_常见web漏洞原理及危害和防御方法
    一暴力破解概述:在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。危害:用户密码被重置,敏感目录.参数被枚举防......
  • SpringWeb
    文章目录SpringWeb概述特点运行流程组件SpringWeb搭建接收数据获取请求数据四种方法返回json中文乱码处理拦截器SpringWeb概述SpringWeb是Spring框架中的一部分,是对java后端web层进行了封装,和Spring框架可以无缝对接,是基于ServletAPI的实现。特点与IOC容器等无......
  • toapi,一个强大的 Python Web API库!
    目录前言什么是PythonToapi库?核心功能使用方法 1.安装Toapi库 2.创建Toapi应用 3.定义规则和过滤器 4.运行Toapi应用实际应用场景 1.数据提取与分析 2.自动化爬虫和数据抓取 3.构建自定义搜索引擎高级功能和进阶用法 1.动态页面渲染......
  • Web_Bugku_WriteUp | 聪明的php
    题目分析翻译一下题目:传递一个参数,也许标志文件的文件名是随机的:>于是随便传个参数?a,出现php代码:<?phpinclude('./libs/Smarty.class.php');echo"passaparameterandmaybetheflagfile'sfilenameisrandom:>";$smarty=newSmarty();//new一个Smarty模......
  • 如何使用缓存来提高Web应用的性能?
    一、如何使用缓存来提高Web应用的性能? 使用缓存是提高Web应用性能的一种有效方法。缓存可以在多个层面上实现,包括浏览器缓存、代理服务器缓存、数据库查询缓存以及应用层面的缓存等。以下是一些关于如何使用缓存来提高Web应用性能的建议:浏览器缓存:通过设置HTTP缓存头(如Ca......
  • Web 开发模式演进过程
    作为初学者,要了解Web开发模式的演进过程,并从这些演进过程中看到变化,这样有利于开发者的思路提升。什么是Web开发Web:网页,可以通过浏览器访问的资源Web开发:基于网页载体的软件开发,以网页提供给用户进行业务功能操作Web应用:由多个静态和动态web资源组成,如:HTML、CS、......
  • protobuf和gRPC
    目录一、grpc介绍1.1RPC介绍1.2Protobuf介绍null二、下载生成proto工具三、下载go的依赖包四、快速使用4.1编写proto4.2生成go脚本4.3编写main.go4.4修改proto,加入更多参数4.5重新生成4.6修改代码五、完整的客户端服务端5.1proto文件5.2生成go脚本5.3server.go5.4cl......
  • gRPC的四种通信模式
    目录gRPC的四种通信模式一、RPC(UnaryRPC)二、服务端流RPC三、客户端流RPC四、双向流RPC五、综合案例5.1新建streamdemo.proto5.2执行命令,生成go文件5.3客户端5.4服务端六、总结gRPC的四种通信模式gRPC有四种通信⽅式,分别是:简单RPC(UnaryRPC)、服务端流式RPC(Serverstrea......