c# - ASP.NET Core JSON-RPC
问题描述
我已经创建了核心 WebAPI 项目,虽然 RESTing 执行得非常好,但也需要 JSON-RPC 功能。我看到了这样或这样的东西,但仍然不知道其中哪一个更适合组织服务器和客户端(也是 aspnetcore)作为 WCF 之类的良好替代品。
那么如何以正确的方式用 ASP.NET Core 做 JSON-RPC 呢?
解决方案
你可以从 James Newton-King 那里找到一个很好的例子。
Newtonsoft.Json
创建者创建了一个与 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 调用:
推荐阅读
- r - 当日期和时间在R中的同一列中时如何读取excel文件
- python - 将python字符串“['a','b']”转换为列表
- python - 为什么我的 QFileSystemModel QModelIndex 无法获取子节点信息?
- c++ - C ++ 11 - 可以等待几个不同事件的线程?
- python - 熊猫同时选择最大值和最小值
- c# - 掷骰子游戏陷入循环
- batch-file - if语句中批处理文件中的点的目的是什么?
- rust - 无法移出共享引用后面的 `*h`
- java - Selenium Web 驱动程序 - 在循环中等待 (Java)
- c# - 如何保存 acumatica 创建的自定义表单