3

私はいくつかのサービス用に SOAP サーバー API を持っていますが、クライアントの 1 人は、少なくとも WS-I Basic Profile 準拠バインディングを提供しないサービスとは統合しないと言っていました。

質問は、ドキュメント/リテラル​​または RPC/リテラル​​ バインディングをサポートする Delphi のバージョンはどれかということです。

編集: RemObjects は Document/literal または RPC/literal をサポートしているようです。

4

2 に答える 2

0

私は最近、MS Exchange Server WDSL (SOAP 1.1 の "ドキュメント/リテラル​​ ラップ" のようです) を使用できなかったため、Delphi コードに夢中になりました。
私はこれの専門家ではありませんが、Delphi XE2 ユニット Soap.OPToSOAPDomConv で次のコードに出くわしましたが、これは正しくないように見えます。

if not IsRPC then
begin
  if IsBareLiteral then
  begin
    [snip]
  end
  else
  begin
    // IsWrappedLiteral !

function TSOAPDomConvHelper.IsRPC: Boolean;
begin
  Result := not (soDocument in Options);
end;

function TSOAPDomConvHelper.IsBareLiteral: Boolean;
begin
  Result := Options * [soDocument, soLiteralParams] = [soDocument, soLiteralParams];
end;

function TSOAPDomConvHelper.IsWrappedLiteral: Boolean;
begin
  Result := Options * [soDocument, soLiteralParams] = [soDocument];
end;

あなたの質問は WSDL の生成に関するものですが (消費に関するものではありません)、上記は「ドキュメント/リテラル​​のラップ」が適切にサポートされていないことを示唆しています。

1月

于 2012-11-19T09:56:01.100 に答える
0

MSDNから(2003 年 4 月):

WS-I Basic Profile と RPC/literal

残念ながら、WS-I Basic Profile では、document/literal と RPC/literal の両方の使用が明示的に許可されています。上記の分析を考えると、2 つのメッセージ形式を持つことは不要であり、最終的に相互運用性には役立たないと思います。すべてではないにしてもほとんどの Web サービス開発者が RPC/literal を無視し、必要なフィードバックを WS-I に提供して、基本プロファイルの将来のバージョンでこれを修正することを願っています。

したがって、RPC/literal を完全に無視することをお勧めします。

またhttp://en.wikipedia.org/wiki/WS-I_Basic_Profileは WS-I Basic の異なるバージョンを示しています - 1.2 (2010 年 11 月に完成) と 2.0 (2010 年 11 月に公開) が最新バージョンのようです。あなたのコミュニケーション パートナーから期待されるバージョン レベルを確認します。


解決

Web サービスを Delphi から WS-I 準拠のフレームワークに移動します。Delphi は引き続きロジックを提供しますが、新しいフレームワークを使用して IPC を介して内部的に通信します。

ウィキペディアの記事にリストされている準拠フレームワークの大部分はオープン ソースであり、適切なドキュメントがあり、膨大な数のユーザー ベースがインストールされているため、すぐに運用でき、安定しています。

長い目で見れば、準拠したフレームワークを使用すると混乱や回避策が少なくなり、追加作業をほとんど行わずに他の WS-I 標準をサポートすることもできます。

于 2012-11-19T11:28:24.790 に答える