BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース JSON-RPCについて

JSON-RPCについて

原文(投稿日:2017/12/14)へのリンク

読者の皆様へ: ノイズを減らして、重要なものを見逃さないために、私たちは一連の機能を実装した。興味のあるトピックを選択してEメールとWeb通知を受け取る

昨日のLanguage Server Protocol Support for Visual Studioに対するレポートにおいて、私たちはLCPがJSON-RPC 2.0上に構築されていると述べた。これは10年以上前に作成されたものだが、SOAPやRESTほどは知られていない。

名前の通りJSON-RPCはJSONを使ったリモートプロシージャーコールに使われる。哲学的にはRESTとはRESTがデータ中心である点で異なっている; 主にドキュメントやレコード作成、編集、抽出などの用語でコードを記述する。RPCは外部プログラムに存在する関数の呼び出しを重視する。もちろん関数はドキュメントを操作することもあるかもしれないし、REST呼び出しも単純にいくつかのデータを保存するだけでないかもしれない。

多くの点でJSON-RPC 2.0はSOAPの計量版と考えられる。SOAPのようにメッセージが最終的にどう見えるかが主な関心である。(stdio, sockets, HTTP, 名前付きパイプなど)のトランスポート層はプロトコルの範囲外である。

JSON-RPCはメッセージキューのように非同期転送にも使用できる。これはそれぞれのリクエストには相関Idを含めることが必要であるため実現できる。複数の接続をすることなく、同時に複数の要求保留にできるため、通常のHTTPよりも効果的な通信が可能となる。

もうひとつの便利なJSON-RPCの機能はバッチ処理のサポートである。つまり、ひとつのメッセージには配列で無制限に要求を含めることができる。応答は任意の順序かもしれないし、ひとつかもしれないし、配列かもしれないので、相関Idは重要なのである。

JSON-RPCはまた「notification」と呼ばれるものをサポートしている。Notificationsは要求と似ているが相関Idが含まれない。そのため、クライアントにエラーを通知するだけでサーバーは応答を返すことができない。したがって、notificationsの使用はお勧めできない。

注: MicrosoftはLanguage Server Protocolにおいてnotificationsを保留中の要求をキャンセルするためにだけ使われる。それでも、言語サーバーはそれらを遵守する必要はない。

エラーはコードとメッセージの両方を仕様して報告される。エラーコードは-32000から-32768の間がプロトコルで予約されており、「メソッドが見つかりません」や「パラメータが不正です」などの例外によって使われる。

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT