[[Open棟梁Project>http://opentouryo.osscons.jp/]] - [[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]
「[[マイクロソフト系技術情報 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]]に置き換えられ、現在は主流ではなくなっている。
-現在、[[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を好む人もいる。
-[[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で行なうようなイメージだが、厳密な仕様が決まっていない。
--[[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の代替は必要か~
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

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


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS