- - PR -
Document/Literal or RPC/Encoded
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-11-29 23:30
(現在の)自動生成したスタブを利用している限りは変わりませんが、
型に限らず、XMLの持つ拡張性をそのままSOAPでも利用できるのが、 Document/Literalのメリットの一つかと思います。 |
|
投稿日時: 2004-12-01 15:31
ありがとうございました。
平行して色々調べてみて、以前よりはだいぶ わかってきました。 またよろしくお願いします。 |
|
投稿日時: 2004-12-10 17:38
こんにちわ。
このスレッドに関わることなので、これを使います。 本スレッドでAPの自動生成スタブを使用している限りに おいてはDocument/Literalの利点を最大活用できないと 認識はしました。 Webで色々調べてみたのですが、Document/Literalを使用 した具体的な実装例などがなかなか見つかりません。 書籍・Webのポインタでも良いのでどなたかご存知の方 いらっしゃないでしょうか? スタブを使わない方法で言うと、Documentを自作して 送ることになるような気がしますが、JAX-RPCを使用 すればそういうことになるのでしょうか。 # JAX-RPCは使用したことがなく、まだ知識不足でもあります よろしくお願いします。 |
|
投稿日時: 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-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-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のプロキシクラスのメソッドを呼び出すといった 感じです。 サーバ、クライアントが両形式に対応していれば、 利用者としては、気にする必要はないのでは (多量のパラメータがある場合は、パフォーマンス上の問題点が でてきますが) |
|
投稿日時: 2004-12-12 21:37
忘れてました。以下に様々なWebサービスのリストがあります。
http://www.xmethods.net/ 「DOC」というのが、document/literalです。 |
|
投稿日時: 2004-12-15 11:08
色々回答ありがとうございます。
返信遅れました。 Document/Literalを使用することはXMLの持つ拡張性を存分に使用できる という点が利点の一つだと思っていたのですが、結局JAX-RPCにしろ市場 にあるコーディングスタイルは全てスタブを使用しています。 ということは、文書を送っているという感覚はユーザには与えにくく、自由 なXML文書を送れることによる拡張性の利点はあまりないのかな、と思って しまいました。 # 拡張性拡張性と言うけれど、具体的に拡張性ってどのようなイメージかは # あまりわかっていなかったりしますが。 今何故RPC/EncodedからDocument/Literalへ仕様が傾いているのかが、いまいち コレと言った点がわからずにこのような質問をしていました。 茅井太郎さんの言っている、XMLの仕様と合わないであるとか、根本的な理由と いうのはそういうところなのでしょうか。 |