Я создал файл .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. Например, указание поддерживаемых сигнатур и имен методов.