Protoc.Gateway
0.0.1-rc6
See the version list below for details.
dotnet add package Protoc.Gateway --version 0.0.1-rc6
NuGet\Install-Package Protoc.Gateway -Version 0.0.1-rc6
<PackageReference Include="Protoc.Gateway" Version="0.0.1-rc6" />
paket add Protoc.Gateway --version 0.0.1-rc6
#r "nuget: Protoc.Gateway, 0.0.1-rc6"
// Install Protoc.Gateway as a Cake Addin #addin nuget:?package=Protoc.Gateway&version=0.0.1-rc6&prerelease // Install Protoc.Gateway as a Cake Tool #tool nuget:?package=Protoc.Gateway&version=0.0.1-rc6&prerelease
Protoc.Gateway
Runtime gateway library from grpc to rest.
!> В разработке
Что это
Библиотека, которая парсит ассамблею, находит все grpc-клиентов
и создает rest-обработчиков
под каждый найденный rpc
.
Поддерживает все типы rpc
:
unary
server-stream
client-stream
duplex-stream
Поддерживает функционал авторизации в 3 вариациях:
jwt
(с возможностью ограничения доступа кrpc
на основании клаймов в токене)basic
none
Также генерирует swagger
(openapi
) для всех намапленных в rest
rpc
.
А зачем это нужно
Мы ее используем в 3 сценариях:
- Базис для
rest-gateway
решения вgrpc
окружении - Для локальной отладки при разработке
grpc-сервисов
черезswagger
- Для автоматического тестирования
api
grpc-сервисов
с помощьюrest
А как этим пользоваться
Устанавливаем nuget
пакет
Добавляем grpc-клиентов
в di
:
builder.AddGrpcClients(typeof(MyGrpcExampleService).Assembly);
Где MyGrpcExampleService
- любой тип из ассамблеи, содержащей grpc
сервисы.
Добавляем swagger
, собранный из этих этих grpc-клиентов
:
builder.Services.AddSwagger(builder.Configuration, typeof(MyGrpcExampleService).Assembly, true);
Где MyGrpcExampleService
- любой тип из ассамблеи, содержащей xml
документацию для сгенерированных rpc
.
Объявляем обработчиков для всех rpc
и swagger
:
app.UseSwagger();
app.UseSwaggerUI(c => c.SwaggerEndpoint("v1/swagger.yaml", "GrpcClients"));
app.MapGrpcClients();
Роадмап
- Описать как использовать конфигурировать переменные окружения
- Описать как использовать
proto
расширения - Описать как пользоваться
jwt
авторизаций - Описать как пользоваться
basic
авторизаций - Описать как использовать
FileChunk
- Перевести все это на кодогенерацию (в далеком будущем)
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net7.0
- Grpc.AspNetCore (>= 2.53.0)
- Microsoft.OpenApi (>= 1.6.9)
- Newtonsoft.Json (>= 13.0.3)
- Serilog.AspNetCore (>= 7.0.0)
- Swashbuckle.AspNetCore.SwaggerGen (>= 6.5.0)
- Swashbuckle.AspNetCore.SwaggerUI (>= 6.5.0)
- System.IdentityModel.Tokens.Jwt (>= 6.15.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.