[[Open棟梁Project>http://opentouryo.osscons.jp/]] - [[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]] -[[戻る>通信技術]] * 目次 [#x47864f3] #contents *概要 [#kacf7438] RPC(英: remote procedure call、リモートプロシージャコール) *色々なRPC [#o8d11410] **DCE/RPC [#e49c6a83] -マイクロソフトがMSRPCの基盤として採用し、DCOMの実装に使った。 -同じ頃、パロアルト研究所のILUとObject Management GroupのCORBAが登場。 ***DCOM [#z23b05db] DCOMは、COM+としても提供されている(VB6などでも利用可能)。~ .NETからは、COM+をEnterprise Servicesとして利用可能だが、 現在は主流ではなくなっており、新規開発では推奨できない技術となっている。 -参考 --.NET における Enterprise Services (COM+) について~ http://msdn.microsoft.com/ja-jp/library/ms973847.aspx --.NET で COM+ サービスを使用する~ http://msdn.microsoft.com/ja-jp/library/ms973809.aspx ***.NET Remoting [#j1bf476c] -Windowsプラットフォーム上でRPC機能を提供する。 -現在、[[WCF]]に置き換えられ、現在は主流ではなくなっており、~ 新規開発では推奨できない技術となっている。 -現在では、.NET 3.0より提供され始めた [[WCF]]で置き換えられており、~ .NET 4 以降で「既存のアプリケーションとの下位互換性~ のために残されているレガシ テクノロジ」に位置づけられた。~ -参考 --Microsoft .NET Remoting Framework の概要~ http://msdn.microsoft.com/ja-jp/library/ms973864.aspx --.NET リモート処理から Windows Communication Foundation (WCF) へ~ http://msdn.microsoft.com/ja-jp/library/aa730857.aspx --リモート処理の例 : 非同期リモート処理~ https://msdn.microsoft.com/ja-jp/library/0sa925ka.aspx --.NET Framework 3.0新技術の使い分け指針 - @IT~ http://www.atmarkit.co.jp/fdotnet/special/dotnetfx3002/dotnetfx3002_02.html ***[[WCF]] (Windows Communication Foundation) [#f3a54d6e] -Windowsプラットフォーム(.NET)上でのデファクトの通信サブシステム。 -Web界隈では、[[ASP.NET Web API]]が主流となっている。 **Webサービス [#i434485e] さまざまなプラットフォーム上で動作する異なるソフトウェア~ 同士が相互運用するための標準的な手段を提供するもの。 -HTTPなどのインターネット関連プロトコルを用い~ メッセージの送受信を行う技術やサービス。 -ほぼ同義語の用語としてWeb APIがある。 ***XML-RPC [#fdad3f1c] https://ja.wikipedia.org/wiki/XML-RPC -RPCプロトコルの一種 --1998年、ユーザーランド・ソフトウェアがマイクロソフトと共同で開発 --以下の技術を採用している。 ---エンコード(符号化)にXML ---転送機構にHTTP --非常に単純なプロトコル ---少数のデータ型やコマンドを定義。 ---仕様は2枚の紙にまとめられる。 ---他のRPCの膨大な規格+実装と比べ、際立った特徴。 -SOAP --XML-RPCに新たな機能を追加したものがSOAPへと発展。 --SOAP よりも単純で扱いやすいXML-RPCを好む人もいる。 ***JSON-RPC [#g8bee649] https://ja.wikipedia.org/wiki/JSON-RPC -[[ASP.NET Web API]]で実装可能。 -JSON-RPCとは、ざっくり以下の様なものらしい。 --XML-RPC(SOAP)をJSONで行なうようなイメージだが、厳密な仕様が決まっていない。 --[[REST]] APIは疎結合で、不特定多数の開発者を相手にする場合は優れた方法だが、~ [[REST]]ではRPCライクな処理ができない(対応できないケースがある)。 ---SPAで一覧更新した結果データを送信する場合。 ---データを非同期で押し出さなければならない場合。 ---バイナリプロトコル(例:IoTデバイスからの最適化されたメッセージ転送) --RESTful (RESTafarians) に疲れたらJSON-RPCを使う。 -参考 --REST vs JSON-RPC? - Stack Overflow~ http://stackoverflow.com/questions/15056878/rest-vs-json-rpc --RESTの代替は必要か~ https://www.infoq.com/jp/news/2014/01/rest-alternatives --Microsoft REST APIガイドラインはRESTfulではない~ https://www.infoq.com/jp/news/2016/07/microsoft-rest-api --REST APIに消耗したらJSON RPCを試そう - タオルケット体操~ http://hachibeechan.hateblo.jp/entry/try-json-rpc-great-good --RESTとJSON-RPC - 廃墟~ http://d.hatena.ne.jp/hagino_3000/20101209/1291831632 ---- Tags: [[:通信技術]], [[:.NET開発]], [[:.NET Core]], [[:ASP.NET]], [[:ASP.NET Web API]]