As tecnologias são cíclicas: gRPC vs HTTP APIs

7 views
Skip to first unread message

Hugo Ferreira

unread,
Nov 19, 2019, 9:14:19 AM11/19/19
to ri...@googlegroups.com
Olá grupo,

Acompanho os blogs da Microsoft do .NET e ASP.NET e agora deparei-me com isto: https://devblogs.microsoft.com/aspnet/grpc-vs-http-apis
De facto o primeiro comentário diz tudo (bem como a resposta).
Recordo-me de:
Usar SOAP no inicio
Depois fui para RPC (um salto qualitativo gigantesco)
Depois REST (senti que estava melhor que SOAP mas bem pior que REST mas pronto, o mundo ditou que REST é que era e acabei por me habituar pois é fácil habitar para melhor mas para pior não)
Agora voltamos ao RPC :)

Cristovão Morgado

unread,
Nov 19, 2019, 9:45:48 AM11/19/19
to Riapt
Não é bem a mesma coisa.
o gRPC tenta melhorar coisas que o REST/JSON que por tendo por base JS são problema em certos casos (quem não se partiu todo com as datas, ou numeros e a sua precisão).
Tem a vantagem de criar um client strongly typed que rest/json tenta resolver com OpenAPI/Swagger mas devido ao JSON fica à quem ... exemplo ... como tratar um null e um empty?

Passamos de SOAP para REST/JSON pois o payload era muito verbosed.... e permitiu micro serviços.
Nunca usei RPC por ser XML sobre HTTP ... usei logo REST+JSON ... 
 

Além de tudo mais.... isto são literalmente canais ... se o software for bem feito... distribuis em qq canal... com esforço mínimo....

--
Recebeu esta mensagem porque subscreveu ao grupo "Mailing List da Comunidade Portuguesa de Rich Internet Applications - www.riapt.org" do Grupos do Google.
Para anular a subscrição deste grupo e parar de receber emails do mesmo, envie um email para riapt+un...@googlegroups.com.
Para ver este debate na Web, visite https://groups.google.com/d/msgid/riapt/CAAAuht1GW29nSXg-a_1etCigY2EtH1ChU80sUXfyjsL_L3ZDrA%40mail.gmail.com.

Hugo Ferreira

unread,
Nov 19, 2019, 9:51:54 AM11/19/19
to ri...@googlegroups.com
Efetivamente datas e decimais são um problema, quando o parâmetro vem no url.
Para contornar isso uso datas no formato YYYYMMDD e decimais como inteiros (por exemplo 10021 como sendo 100.21).
Assim não há como enganar.
Um null é um problema e caracteres especiais também. Nesse caso não envie os dados no url.

Cristovão, não eras tu que era o adepto de Xamarin :D
Ainda usas ?



Cristovão Morgado

unread,
Nov 19, 2019, 11:59:39 AM11/19/19
to Riapt
Na verdade o que sugeres para datas e numeros é uma martelada que depois tens de ter cuidado com os settings regionais no servidor ... é um pessegada.

Sim continuo a rolar com Xamarin ... mas agora há outro menino lindo,.... o Flutter .... 

Cristovão Morgado

unread,
Nov 19, 2019, 12:00:16 PM11/19/19
to Riapt

Hugo Ferreira

unread,
Nov 19, 2019, 12:10:40 PM11/19/19
to ri...@googlegroups.com
Curioso o que dizes porque a ideia até nem foi minha.
Tinha de me ligar a uma Api de um serviço de pagamentos conhecido e é assim que funcionam.
Já me liguei a outras Apis e é o mesmo.
Por um lado concordo com o que dizes e por outro não. Portanto concordo, desconcordando :D
Mas já agora, como é que passas parâmetros de data e decimais num URL ?

Bem me parecia que eras tu que falavas do Xamarin.

Tive de fazer uma App Mobile e as 2 opções foram Xamarin e Flutter (depois de excluir outras coisas mais esotéricas).
Uma das muitas razões de não ter optado pelo Flutter foi por ser ainda muito jovem.
Acabou por se revelar na opção certa pois tenho de ligar a uma conjunto de devices que têm suporte oficial para Xamarin (SDK's) e nada para Flutter.

Hugo Ferreira

unread,
Nov 19, 2019, 12:12:19 PM11/19/19
to ri...@googlegroups.com
Sim, agora vai-se começar a ouvir falar muito nisso.
Vi no blog do ASP.NET e é uma novidade no .NET Core 3, portanto é natural que começem a aparecer mais blogs sobre isso.

Cristovão Morgado

unread,
Nov 19, 2019, 12:14:14 PM11/19/19
to Riapt
Parabens pela App,


Sobre passar parametros via URL/Querystring isso é outro campeonato onde tens de antever essa salsada de formatos... no body é outra questão.
Normalmente no URL evito tais dados. 

Hugo Ferreira

unread,
Nov 19, 2019, 12:20:33 PM11/19/19
to ri...@googlegroups.com
Obrigado.

Então estamos a falar do mesmo e em concordância.
Existem serviços simples que necessitam de poucos parâmetros e são de dimensão curta e dá jeito usar-se via URL (querystring), onde pode vir uma data ou valor.

Assim que se envolvem objectos complexos, strings que podem ter dimensão longa ou mesmo (e principalmente) ficheiros, tem de ser enviado pelo body e ai não há qualquer problema se usares um backend decente.
Via body, nem sequer tenho de me preocupar com isso. Uso .NET no backend e isso é tratado tudo automaticamente (mas quem é que anda a serializar à mão em 2019 :D)


Reply all
Reply to author
Forward
0 new messages