API Web Moderne avec
GRPC
Florian Bernard
Constat API Web
● Tous les projets utilisent une API web
● Utilisation de REST (Json + HTTP 1.1 )
● Centrer sur les ressources (CRUD)
● Pas de contrat de service “Standard”
● Développement et maintenance du code pour chaque plateforme
(Android, iOS, Web)
Historique API Web
● Corba (Common Object Request Broker Architecture)
● Java RMI (Remote Method Invocation)
● SOAP (Simple Object Access Protocol)
● REST (Representational State Transfer)
GRPC : https://grpc.io/
● Google Remote Procedure Call
● Version Open source de Stubby ( utiliser en interne)
● HTTP2 pour le transport (multiplexing et streaming bidirectionnel)
● Protocol Buffer : description des interfaces et format des données
● Supporte de nombreux langages (C++, Java, Python, Go, Ruby, C#,
Node, Swift, PHP, Dart ...)
HTTP 2
● Multiplexing (1 connexion plusieurs requêtes)
● Server Push
● Pipelining des requêtes
● Transport des données en binaires (frame)
● Compression des Headers
Multiplexing
Protocol Buffers
● Description du format indépendamment du langage de programmation
● Sérialisation / Désérialisation rapide
● Encodage binaire
Protocol Buffers
message Personne {
string prenom = 1;
string nom = 2 ;
}
Demo
GRPC Web
● HTTP2 pas totalement implémenté côté navigateur
● Protocol Spécifique basé sur HTTP et/ou Websocket
● Utilisation d’un “Proxy”
Alternatives
● Thrift : https://thrift.apache.org/
● Cap’n Proto : https://capnproto.org/
● RSocket : http://rsocket.io/
Merci
https://github.com/appstud/grpc-fullstack-demo

API Web Moderne avec GRPC

  • 1.
    API Web Moderneavec GRPC Florian Bernard
  • 2.
    Constat API Web ●Tous les projets utilisent une API web ● Utilisation de REST (Json + HTTP 1.1 ) ● Centrer sur les ressources (CRUD) ● Pas de contrat de service “Standard” ● Développement et maintenance du code pour chaque plateforme (Android, iOS, Web)
  • 3.
    Historique API Web ●Corba (Common Object Request Broker Architecture) ● Java RMI (Remote Method Invocation) ● SOAP (Simple Object Access Protocol) ● REST (Representational State Transfer)
  • 4.
    GRPC : https://grpc.io/ ●Google Remote Procedure Call ● Version Open source de Stubby ( utiliser en interne) ● HTTP2 pour le transport (multiplexing et streaming bidirectionnel) ● Protocol Buffer : description des interfaces et format des données ● Supporte de nombreux langages (C++, Java, Python, Go, Ruby, C#, Node, Swift, PHP, Dart ...)
  • 5.
    HTTP 2 ● Multiplexing(1 connexion plusieurs requêtes) ● Server Push ● Pipelining des requêtes ● Transport des données en binaires (frame) ● Compression des Headers
  • 6.
  • 7.
    Protocol Buffers ● Descriptiondu format indépendamment du langage de programmation ● Sérialisation / Désérialisation rapide ● Encodage binaire
  • 8.
    Protocol Buffers message Personne{ string prenom = 1; string nom = 2 ; }
  • 9.
  • 10.
    GRPC Web ● HTTP2pas totalement implémenté côté navigateur ● Protocol Spécifique basé sur HTTP et/ou Websocket ● Utilisation d’un “Proxy”
  • 11.
    Alternatives ● Thrift :https://thrift.apache.org/ ● Cap’n Proto : https://capnproto.org/ ● RSocket : http://rsocket.io/
  • 12.