- PR -

Document/Literal or RPC/Encoded

投稿者投稿内容
kan
ベテラン
会議室デビュー日: 2002/11/28
投稿数: 55
投稿日時: 2004-11-29 23:30
(現在の)自動生成したスタブを利用している限りは変わりませんが、
型に限らず、XMLの持つ拡張性をそのままSOAPでも利用できるのが、
Document/Literalのメリットの一つかと思います。
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2004-12-01 15:31
ありがとうございました。

平行して色々調べてみて、以前よりはだいぶ
わかってきました。

またよろしくお願いします。
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2004-12-10 17:38
こんにちわ。

このスレッドに関わることなので、これを使います。

本スレッドでAPの自動生成スタブを使用している限りに
おいてはDocument/Literalの利点を最大活用できないと
認識はしました。

Webで色々調べてみたのですが、Document/Literalを使用
した具体的な実装例などがなかなか見つかりません。


書籍・Webのポインタでも良いのでどなたかご存知の方
いらっしゃないでしょうか?

スタブを使わない方法で言うと、Documentを自作して
送ることになるような気がしますが、JAX-RPCを使用
すればそういうことになるのでしょうか。
# JAX-RPCは使用したことがなく、まだ知識不足でもあります

よろしくお願いします。
kan
ベテラン
会議室デビュー日: 2002/11/28
投稿数: 55
投稿日時: 2004-12-11 00:31
例えばUDDIの仕様はdocument/literalです。
http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=uddi-spec

LibertyのID-WSFもそうですね。
http://www.projectliberty.org/resources/specifications.php#box2

Content Reference Forumとか、SRW/SRUとか、
http://www.crforum.org/、http://www.loc.gov/z3950/agency/zing/srw/

この手の標準化されているものはdoucment/literalが多いと思います。
茅井太郎
会議室デビュー日: 2004/07/13
投稿数: 8
投稿日時: 2004-12-12 19:27
パラメータのエンコード方式については、
encoded: SOAP1.1仕様「5. SOAP符号化」にもとづき、パラメータ値を符号化する方式
literal: 任意のXMLスキーマを使用して、パラメータ値を符号化する方式

WS-I basic profile1.0では、
SOAP1.1での符号化方式が古く、XML Schemaの仕様と合わない箇所があるため
encodedでなく、literalが奨励されているようです。
(encodedだとパラメータの型指定が、XML要素の属性としてつくので、
パラメータ数が多いとメッセージサイズが膨大になりますし、
サーバ側、クライアント側でWSDLを共有している場合、SOAPメッセージに
型情報を乗っける意味はないですし)

SOAPメッセージボディ部の書式については、
rpc,documentいずれでもよいとの勧告だったかと。

参考)URL http://www.ws-i.org/Profiles/BasicProfile-1.0-2004-04-16.html


ここからは私の想像ですが、SOAPとWSDLは同時に仕様が策定されてきたわけではないので、SOAPの初期のころはWSDLの共有無しでサーバ、クライアント間が通信し、SOAPメッセージに付与された型情報から、データ型への変換を行うことを考えたためencodedのような仕様があるのではないでしょうか?






[ メッセージ編集済み 編集者: 茅井太郎 編集日時 2004-12-12 19:38 ]
茅井太郎
会議室デビュー日: 2004/07/13
投稿数: 8
投稿日時: 2004-12-12 19:48
>Webで色々調べてみたのですが、Document/Literalを使用
>した具体的な実装例などがなかなか見つかりません。

サーバではMicrosoftのSOAPサーバはdocument/literalがデフォルトだったかと。
クライアント側だと、Visual Studio .NET, Office SOAP-Toolkit,AXIS wsdl2javaあたりは
document/literal,rpc/encodedの両方に対応していたはずです。


>スタブを使わない方法で言うと、Documentを自作して
>送ることになるような気がしますが、
上記のクライアントではSOAPのプロキシクラスのメソッドを呼び出すといった
感じです。

サーバ、クライアントが両形式に対応していれば、
利用者としては、気にする必要はないのでは
(多量のパラメータがある場合は、パフォーマンス上の問題点が
でてきますが)
kan
ベテラン
会議室デビュー日: 2002/11/28
投稿数: 55
投稿日時: 2004-12-12 21:37
忘れてました。以下に様々なWebサービスのリストがあります。
http://www.xmethods.net/

「DOC」というのが、document/literalです。
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2004-12-15 11:08
色々回答ありがとうございます。

返信遅れました。



Document/Literalを使用することはXMLの持つ拡張性を存分に使用できる

という点が利点の一つだと思っていたのですが、結局JAX-RPCにしろ市場
にあるコーディングスタイルは全てスタブを使用しています。

ということは、文書を送っているという感覚はユーザには与えにくく、自由
なXML文書を送れることによる拡張性の利点はあまりないのかな、と思って
しまいました。
# 拡張性拡張性と言うけれど、具体的に拡張性ってどのようなイメージかは
# あまりわかっていなかったりしますが。


今何故RPC/EncodedからDocument/Literalへ仕様が傾いているのかが、いまいち
コレと言った点がわからずにこのような質問をしていました。

茅井太郎さんの言っている、XMLの仕様と合わないであるとか、根本的な理由と
いうのはそういうところなのでしょうか。

スキルアップ/キャリアアップ(JOB@IT)