「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>通信技術]]

* 目次 [#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

**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]
-JSON-RPC - Wikipedia~
https://ja.wikipedia.org/wiki/JSON-RPC
-JSON-RPC 2.0 Specification~
https://www.jsonrpc.org/specification

-JSON-RPCとは、ざっくり以下の様なものらしい。

--[[XML-RPC(SOAP)>#fdad3f1c]]を[[JSON]]で行なうようなイメージだが、厳密な仕様が決まっていない。

--[[REST]] APIは疎結合で、不特定多数の開発者を相手にする場合は優れた方法だが、~
[[REST]]ではRPCライクな処理ができない(対応できないケースがある)。
---SPAで一覧更新した結果データを送信する場合。
---データを非同期で押し出さなければならない場合。
---バイナリプロトコル(例:IoTデバイスからの最適化されたメッセージ転送)
--RESTful (RESTafarians) に疲れたらJSON-RPCを使う。

--当然、[[ASP.NET Web API]]で実装可能。

-参考
--JSON-RPC - Wikipedia~
https://ja.wikipedia.org/wiki/JSON-RPC
--JSON-RPC 2.0 Specification~
https://www.jsonrpc.org/specification

--REST vs JSON-RPC? - Stack Overflow~
http://stackoverflow.com/questions/15056878/rest-vs-json-rpc
--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

--infoq.com
---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
---JSON-RPCについて~
https://www.infoq.com/jp/news/2017/12/JSON-RPC

**[[WCF]] (Windows Communication Foundation) [#f3a54d6e]
-Windowsプラットフォーム(.NET)上でのデファクトの通信サブシステム。
-ABCによって、[[DCE/RPC>#e49c6a83]]、[[Webサービス>#i434485e]]の様々な[[Binding>Binding (ネットワーク)]]を用いた通信を定義できる。
-ただし、Web界隈@.NETでは、[[ASP.NET Web API]]が主流となっている。

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

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS