Как заменить Json на gRP C в Blazor WebAssembly? - PullRequest
0 голосов
/ 21 февраля 2020

Я создал файл .proto, описывающий мой Service API, создал службу et c и gRP C отлично работали - отличный старт.

Затем я подумал, что это здорово для потребления сторонний API (например, Google), но я также пишу Blazor WebAssembly приложение, в котором мои модели имеют код Code * First EF Entities помечены DataAnnotations .

Обновление (Правка) Я посмотрел на protobuf- net .Grp c, и это подразумевает поддержку генерации Code-First .proto. Это совместимо с WebAssembly? Я буду обновлять снова, когда я знаю больше. Если вам известно альтернативное решение, ответьте, пожалуйста.

В Blazor (реализация Json) модель EF можно сериализовать и десериализовать с сервера на клиент с очень небольшим кодом:

Server:
    [HttpGet]
    public MyEntity Get()
    {
        return new MyEntity();
    } 
Client:
    var myEntity = await Http.GetJsonAsync<MyEntity>("MyEntity");

Я надеялся, что gRP C станет прямой заменой Json и автоматически создаст файл .proto из объекта DataAnnotated, чтобы я мог затем вызвать gRP C для этого объекта .

Если это возможно, тогда я могу свободно изменять EF-сущности, и gRP C продолжит функционировать без необходимости зеркального изменения.

Я ожидал, что смогу кодировать gRP C, как показано ниже:

Server:
    public class MyEntityService : MyEntityBase
    {
        public override Task<MyEntity> Get(MyEntityRequest request,
                                           ServerCallContext context)
        {
            return Task.FromResult(new MyEntity{...});
        }
    }

Client:
    var myEntity = await MyEntityClient.Get(new MyEntityRequest {...};);

Очевидно, gRP C DataAnnotations и классы будут необходимы для управления компоновщиком .proto. Например, указание поддерживаемых сигнатур и имен методов.

...