gRPCはRPCのフレームワークの一つです。SOAPと同じ分類になりますが、SOAPとの違いは以下になります。

  • IDLの記述が容易(かつ人間が読める)
  • コードジェネレータにより様々な言語に対応
  • プロトコルはHTTP/2
  • デフォルトではメッセージフォーマットとしてProtocolBuffersを利用するため、シリアライズ、デシリアライズが高速

ということで今回はRubyとPythonでgRPCなサーバ、クライアントを作成してみました。

Rubyで試す

以下のコマンドでgemをインストール

protoファイルというインターフェース定義ファイルを作成

コンパイル

サーバ側

クライアント側

これだけでRPCが可能です。SOAPよりかなり簡単な印象。利用可能な言語もC++、Go、C#、Java、Java(Android向け)、Node、Ruby、Python、PHP、Objective-Cと一通り揃ってます。

Pythonで試す

ライブラリをインストール

Pythonの場合はコンパイルは以下のようなジェネレータスクリプトを書く必要があります

あとはこのスクリプト(run_codegen.py)を起動させればコンパイルしてくれます

サーバ側スクリプト

クライアント側スクリプト