Skip to content
nishi_74322014 edited this page Aug 3, 2026 · 1 revision

RPC

概要

RPC(英: remote procedure call、リモートプロシージャコール)

色々なRPC

DCE/RPC

  • マイクロソフトがMSRPCの基盤として採用し、DCOMの実装に使った。
  • 同じ頃、パロアルト研究所のILUとObject Management GroupのCORBAが登場。

補足: DCE = Distributed Computing Environment(OSF が策定した分散処理基盤)。 Windows の MSRPC はこの DCE/RPC を基にしており、 ドメイン参加や AD 関連の内部通信でも現役で使われている。

DCOM

DCOMは、COM+としても提供されている(VB6などでも利用可能)。
.NETからは、COM+をEnterprise Servicesとして利用可能だが、
現在は主流ではなくなっており、新規開発では推奨できない技術となっている。

.NET Remoting

  • Windowsプラットフォーム上でRPC機能を提供する。
  • 現在、WCF(MS_WCF.md)に置き換えられ、現在は主流ではなくなっており、
    新規開発では推奨できない技術となっている。
  • 現在では、.NET 3.0より提供され始めた WCF で置き換えられており、
    .NET 4 以降で「既存のアプリケーションとの下位互換性のために残されているレガシ テクノロジ」に位置づけられた。

補足(最新化): .NET Remoting は .NET Framework 限定であり、 .NET Core 以降には移植されていない(BinaryFormatter 依存もあり .NET 9 で無効化)。 現行の RPC 用途では gRPC か HTTP ベースの Web API を使う。 WCF 自体もクライアント側のみ(System.ServiceModel)が移植され、 サーバー側は OSS の CoreWCF が受け皿になっている。

Webサービス

さまざまなプラットフォーム上で動作する異なるソフトウェア
同士が相互運用するための標準的な手段を提供するもの。

  • HTTPなどのインターネット関連プロトコルを用いメッセージの送受信を行う技術やサービス。
  • ほぼ同義語の用語としてWeb APIがある。

XML-RPC

  • RPCプロトコルの一種
    • 1998年、ユーザーランド・ソフトウェアがマイクロソフトと共同で開発
    • 以下の技術を採用している。
      • エンコード(符号化)にXML
      • 転送機構にHTTP
    • 非常に単純なプロトコル
      • 少数のデータ型やコマンドを定義。
      • 仕様は2枚の紙にまとめられる。
      • 他のRPCの膨大な規格+実装と比べ、際立った特徴。
  • SOAP
    • XML-RPCに新たな機能を追加したものがSOAPへと発展。
    • SOAPよりも単純で扱いやすいXML-RPCを好む人もいる。
  • 参考

JSON-RPC

  • JSON-RPCとは、ざっくり以下の様なものらしい。
    • XML-RPC(SOAP)JSON で行なうようなイメージだが、厳密な仕様が決まっていない。
    • REST APIは疎結合で、不特定多数の開発者を相手にする場合は優れた方法だが、
      REST ではRPCライクな処理ができない(対応できないケースがある)。
      • SPAで一覧更新した結果データを送信する場合。
      • データを非同期で押し出さなければならない場合。
      • バイナリプロトコル(例:IoTデバイスからの最適化されたメッセージ転送)
    • RESTful (RESTafarians) に疲れたらJSON-RPCを使う。
    • 当然、ASP.NET Web API で実装可能。

移行メモ(補足): 原文は「厳密な仕様が決まっていない」としているが、 JSON-RPC には 2.0 の仕様(jsonrpc.org)があり、 リクエスト/レスポンス/通知/バッチ/エラーコードまで規定されている。 RFC ではない(標準化団体の管理下にない)という意味では原文の指摘も理解できる。

gRPC

補足(追記): 元 Wiki には記載が無いが、 現在の .NET で RPC を実装する際の第一候補は gRPC。 HTTP/2 + Protocol Buffers によるバイナリ RPC で、 ASP.NET Core にサーバー実装(Grpc.AspNetCore)が同梱されている。 ブラウザから直接呼べない点は gRPC-Web で補う。

WCF (Windows Communication Foundation)

MS_WCF.md

  • Windowsプラットフォーム(.NET)上でのデファクトの通信サブシステム。
  • ABCによって、DCE/RPCWebサービスの様々な
    Bindingを用いた通信を定義できる。
  • ただし、Web界隈@.NETでは、ASP.NET Web API が主流となっている。

Tags: IT国際標準, プログラミング, 通信技術, .NET開発, .NET Core, ASP.NET, ASP.NET Web API

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally