【问题标题】:ASP.NET Core JSON-RPCASP.NET Core JSON-RPC
【发布时间】:2019-07-22 00:00:39
【问题描述】:

我已经创建了核心 WebAPI 项目,虽然 RESTing 性能非常好,但还需要 JSON-RPC 功能。 我看到了诸如thisthis 之类的东西,但仍然不知道其中哪一个更适合组织服务器和客户端(也是aspnetcore)作为WCF 之类的好替代品。

那么如何正确地用 ASP.NET Core 做 JSON-RPC 呢?

【问题讨论】:

    标签: c# asp.net-core asp.net-core-webapi json-rpc


    【解决方案1】:

    你可以从 James Newton-King 那里找到一个很好的例子。

    Newtonsoft.Json creator 制作了一个与 gRPC 和 ASP.NET 完美配合的项目。

    检查这里: https://github.com/aspnet/AspLabs/tree/master/src/GrpcHttpApi

    还有一个自述文件中的示例:

    用法:

    • 添加对 Microsoft.AspNetCore.Grpc.HttpApi 的包引用。

    • 在 Startup.cs 中注册服务AddGrpcHttpApi()

    • 将 google/api/http.proto 和 google/api/annotations.proto 文件添加到您的项目中。

    • 使用 HTTP 绑定和路由在 .proto 文件中注释 gRPC 方法:

    syntax = "proto3";
    
    import "google/api/annotations.proto";
    
    package greet;
    
    service Greeter {
      rpc SayHello (HelloRequest) returns (HelloReply) {
        option (google.api.http) = {
          get: "/v1/greeter/{name}"
        };
      }
    }
    
    message HelloRequest {
      string name = 1;
    }
    
    message HelloReply {
      string message = 1;
    }
    

    SayHello gRPC 方法现在可以作为 gRPC+Protobuf 和 HTTP API 调用:

    【讨论】:

    • 虽然这很有趣,但不鼓励仅链接的答案,因为链接可能会变得无效,整个答案也会如此。考虑加入一些摘要信息来回答问题,和/或在答案本身中引用来源中的相关部分。
    • 我将编辑答案。但是按照你说的逻辑,即使我把代码放在这里,github repo和nuget包也可以删除,所以这段代码就没有用了。
    • 当然,添加信息以使用包并不能阻止包消失。该策略不足以足以防止答案失效,但链接轮换是很常见的事情,因此禁止仅链接答案已成为 Stack Overflow 上的一项策略。例如,许多旧版 microsoft doc 的链接现在都无效了。但是,一切(语言、框架、包)仍在工作。例如,请参阅此 meta post 以了解更多信息。
    猜你喜欢
    • 1970-01-01
    • 2013-09-12
    • 2022-01-25
    • 2011-02-07
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    • 2021-02-24
    • 2011-06-11
    相关资源
    最近更新 更多