-
Notifications
You must be signed in to change notification settings - Fork 0
MS_RPC
- TOP > インフラストラクチャ > 通信技術
RPC(英: remote procedure call、リモートプロシージャコール)
- マイクロソフトがMSRPCの基盤として採用し、DCOMの実装に使った。
- 同じ頃、パロアルト研究所のILUとObject Management GroupのCORBAが登場。
補足: DCE = Distributed Computing Environment(OSF が策定した分散処理基盤)。 Windows の MSRPC はこの DCE/RPC を基にしており、 ドメイン参加や AD 関連の内部通信でも現役で使われている。
DCOMは、COM+としても提供されている(VB6などでも利用可能)。
.NETからは、COM+をEnterprise Servicesとして利用可能だが、
現在は主流ではなくなっており、新規開発では推奨できない技術となっている。
- 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 が受け皿になっている。
さまざまなプラットフォーム上で動作する異なるソフトウェア
同士が相互運用するための標準的な手段を提供するもの。
- HTTPなどのインターネット関連プロトコルを用いメッセージの送受信を行う技術やサービス。
- ほぼ同義語の用語としてWeb APIがある。
- RPCプロトコルの一種
- 1998年、ユーザーランド・ソフトウェアがマイクロソフトと共同で開発
- 以下の技術を採用している。
- エンコード(符号化)にXML
- 転送機構にHTTP
- 非常に単純なプロトコル
- 少数のデータ型やコマンドを定義。
- 仕様は2枚の紙にまとめられる。
- 他のRPCの膨大な規格+実装と比べ、際立った特徴。
-
SOAP
- XML-RPCに新たな機能を追加したものがSOAPへと発展。
- SOAPよりも単純で扱いやすいXML-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 ではない(標準化団体の管理下にない)という意味では原文の指摘も理解できる。
- 参考
補足(追記): 元 Wiki には記載が無いが、 現在の .NET で RPC を実装する際の第一候補は gRPC。 HTTP/2 + Protocol Buffers によるバイナリ RPC で、 ASP.NET Core にサーバー実装(
Grpc.AspNetCore)が同梱されている。 ブラウザから直接呼べない点は gRPC-Web で補う。
(MS_WCF.md)
- Windowsプラットフォーム(.NET)上でのデファクトの通信サブシステム。
- ABCによって、DCE/RPC、Webサービスの様々な
Bindingを用いた通信を定義できる。 - ただし、Web界隈@.NETでは、ASP.NET Web API が主流となっている。
Tags: IT国際標準, プログラミング, 通信技術, .NET開発, .NET Core, ASP.NET, ASP.NET Web API
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。