XML-RPC

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ

XML-RPCは、XMLを使用して呼び出しをエンコードし、HTTPをトランスポートメカニズムとして使用するリモートプロシージャコール(RPC)プロトコルです。[1]

歴史

XML-RPCプロトコルは、1998年UserLandSoftwareMicrosoftDaveWinerによって作成されました[2]。Microsoftは、このプロトコルを企業間の電子商取引における取り組みを拡大するための重要な部分と見なしています。[3]新しい機能が導入されると、標準は現在のSOAPに進化しました。[4]

UserLandは、 1998年6月にリリースされたFrontier Webコンテンツ管理システムのバージョン5.1 [4]からXML-RPCをサポートしました。 [5]

HTTPベースの要求と応答のための人間が読み取りおよび書き込み可能でスクリプト解析可能な標準というXML-RPCのアイデアは、AllaireのWeb分散データ交換(WDDX)やwebMethodのWebインターフェイス定義言語(WIDL )などの競合する仕様にも実装されています。 )。[6] COMCORBA、およびJava RMIオブジェクトをXML構文でラップし、HTTPを介してそれらを転送する従来技術も、DataChannelのWebBrokerテクノロジーに存在していました。[7] [8]

リモートプロシージャコール(RPC)でのXMLの一般的な使用は、 2006年4月にPhillip Merrick、 Stewart Allen、Joseph Lappによって特許が取得され、1998年3月に提出された仮出願の利益を主張しました。VA特許は2019年3月23日に失効しました[9]

使用法

XML-RPCでは、クライアントはXML-RPCを実装するサーバーにHTTP要求を送信し、HTTP応答を受信することによってRPCを実行します。呼び出しには、複数のパラメーターと1つの結果を含めることができます。プロトコルは、パラメーターと結果のいくつかのデータ型を定義します。これらのデータ型の一部は複雑です。つまり、ネストされています。たとえば、5つの整数の配列であるパラメーターを持つことができます。

パラメータ/結果の構造とデータ型のセットは、一般的なプログラミング言語で使用されるものを反映することを目的としています。

承認目的でのクライアントの識別は、一般的なHTTPセキュリティ方式を使用して実現できます。基本アクセス認証は、識別と認証に使用できます。

リソース表現(ドキュメント)が転送されるRESTfulプロトコルと比較して、XML-RPCはメソッドを呼び出すように設計されています。実際の違いは、XML-RPCがはるかに構造化されていることです。つまり、共通のライブラリコードを使用してクライアントとサーバーを実装でき、特定のアプリケーションプロトコルの設計と文書化の作業が少なくなります。一般的なRESTfulプロトコルとXML-RPCの顕著な技術的な違いの1つは、RESTfulプロトコルがパラメーター情報にHTTP URIを使用するのに対し、XML-RPCではURIがサーバーを識別するだけであるということです。

JSON-RPCはXML-RPCに似ています。

データ型

一般的なデータ型は、以下に示す値の例を使用して、同等のXMLに変換されます。

名前 タグの例 説明
配列
<array> 
  <data> 
    <value> <i4> 1404 </ i4> </ value> 
    <value> <string>ここに何か</ string> </ value> 
    <value> <i4> 1 </ i4> </値> 
  </ data> 
</ array>
キーを格納しない値の 配列
base64
<base64> eW91IGNhbid0IHJlYWQgdGhpcyE = </ base64>
Base64でエンコードされたバイナリデータ
ブール値
<boolean> 1 </ boolean>
ブール論理値(0または1)
日付時刻
<dateTime.iso8601> 19980717T14:08:55Z </ dateTime.iso8601>
ISO8601形式 の日付と時刻
ダブル
<double> -12.53 </ double>
倍精度浮動小数点数
整数
<int> 42 </ int>

また

<i4> 42 </ i4>
整数、整数
ストリング
<string> Hello world!</ string>

また

こんにちは世界!
文字列。XMLエンコーディングに従う必要があります
構造体
<struct> 
  <member> 
    <name> foo </ name> 
    <value> <i4> 1 </ i4> </ value> 
  </ member> 
  <member> 
    <name> bar </ name> 
    <value> <i4> 2 </ i4> </ value> 
  </ member> 
</ struct>
連想配列
nil
<nil />
識別されたnull値; XML-RPC拡張

典型的なXML-RPCリクエストの例は次のとおりです。

<?xml version = "1.0"?> 
<methodCall> 
  <methodName> examples.getStateName </ methodName> 
  <params> 
    <param> 
        <value> <i4> 40 </ i4> </ value> 
    </ param> 
  </ params> 
</ methodCall>

典型的なXML-RPC応答の例は次のとおりです。

<?xml version = "1.0"?> 
<methodResponse> 
  <params> 
    <param> 
        <value> <string>サウスダコタ</ string> </ value> 
    </ param> 
  </ params> 
</ methodResponse>

典型的なXML-RPC障害は次のとおりです。

<?xml version = "1.0"?> 
<methodResponse> 
  <fault> 
    <value> 
      <struct> 
        <member> 
          <name> faultCode </ name> 
          <value> <int> 4 </ int> </ value> 
        </メンバー> 
        <メンバー> 
          <名前> faultString </ name> 
          <値> <文字列>パラメーターが多すぎます。</ string> </ value> 
        </ member> 
      </ struct> 
    </ value> 
  </ fault> 
</ methodResponse>

批評

XML-RPCに対する最近の批評家(2010年以降)は、RPC呼び出しはプレーンXMLで行うことができ、XML-RPCはXMLに何の価値も加えないと主張しています。XML-RPCとXMLはどちらも、XMLスキーマで定義されているフィールド名やXML-RPCのパラメーター名など、アプリケーションレベルのデータモデルを必要とします。さらに、XML-RPCは、プレーンXMLと比較して約4倍のバイト数を使用して、同じオブジェクトをエンコードします。これは、JSONと比較してそれ自体が冗長です。[10] [11] [12]

も参照してください

参考文献

  1. ^ サイモン・セント・ローラン、ジョー・ジョンストン、エド・ダンビル。(2001年6月) XML-RPCを使用したWebサービスのプログラミング。オライリー。初版。
  2. ^ ボックス、ドン(2001年4月1日)。「SOAPの簡単な歴史」オライリー2010年10月27日取得
  3. ^ Rupley、Sebastian(1999年6月30日)。「XMLの次のステップ」PCマガジン2000年3月4日にオリジナルからアーカイブされました2015年11月17日取得
  4. ^ a b Walsh、Jeff(1999年7月10日)。「Microsoftスピアヘッドプロトコルプッシュ」Infoworld1999年9月14日にオリジナルからアーカイブされました2015年11月17日取得
  5. ^ Walsh、Jeff(1998年6月29日)。「UserLandはFrontier5.1をリリースし、フリーウェアモデルを削除しました」InfoWorld1999年9月15日にオリジナルからアーカイブされました2015年11月17日取得
  6. ^ Udell、Jon(1999年6月7日)。「XML-RPCの調査:DCOM?CORBA?RMI?なぜXML-RPCだけではないのですか?」バイト2000年3月4日にオリジナルからアーカイブされました2015年11月17日取得
  7. ^ Walsh、Jeff(1998年5月25日)。「W3CはDataChannelのWebBrokerにうなずきます」Infoworld20、いいえ。21. 1999年9月10日にオリジナルからアーカイブされました2015年11月17日取得
  8. ^ Vizard、Michael; ウォルシュ、ジェフ(1998年6月29日)。「DataChannelのDavePoolは、さまざまなニーズに合わせてXMLの役割を形作ることについて語っています」Infoworld1999年9月16日にオリジナルからアーカイブされました2015年12月8日取得
  9. ^ メリック; etal。(2006年4月11日)。「米国特許7,028,312」2008年9月18日取得
  10. ^ 「プレーンXMLに対するXML-RPCの利点は何ですか?」スタックオーバーフロー2009年9月9日2011年4月7日取得
  11. ^ 「XmlRpcと代替案のメリットに関する公開投票」intertwingly.net。2006年11月22日2011年4月7日取得
  12. ^ Jon Canady(2010年1月14日)。「RESTをお持ちの場合、なぜXML-RPCなのですか?」joncanady.com。2013年5月11日にオリジナルからアーカイブされました2011年4月7日取得

外部リンク