3

開発およびテストのためにアクセスできないシステム上の Web サービスの WSDL ファイルを継承しました。

その WSDL に準拠する Web サービスを生成する必要があります。ラッパーは .NET ですが、別のプラットフォームでこれを行う簡単な方法があれば、それを検討できるかもしれません。本番 Web サービスは Java ベースです。

これを行う最善の方法は何ですか?

注: 継承された wsdl は、WS-I Basic Profile v1.1 に準拠していないため、 wsdl.exeと互換性がないようです。特に、それを伝えたグループは、Microsoft ツールがサポートしていない別の標準を使用していると述べましたが、明確にはしませんでした。エラーは、必須の「名前」フィールドに関連しています:

エラー: 要素参照 '{namespace}/:viewDocumentResponse' が宣言されました
名前空間 '' のスキーマ タイプ ''
       - 必要な属性「名前」がありません

わかりやすくするために、WSDL ファイルから .NET ラッパー クラスを簡単に作成できることは理解していますが、それは私が必要としているものではありません。こんな感じです:

更新: 元の Web サービスは Axis を使用して作成されました。

利用できない Web サービスとモック Web サービスを示すシステムの図 http://paulw.us/blog/uploads/SO-WSDL-Question2.gif

4

5 に答える 5

5

オプションを使用すると、.NETのコマンド ライン ユーティリティwsdl.exeが役立つ場合があり/serverInterfaceます。ドキュメントによると:

ASP.NET Web サービスのサーバー側実装用のインターフェイスを生成します。WSDL ドキュメントのバインディングごとにインターフェイスが生成されます。WSDL だけが WSDL コントラクトを実装します (インターフェイスを実装するクラスは、クラス メソッドに次のいずれも含めないでください: Web サービス属性または WSDL コントラクトを変更するシリアライゼーション属性)。省略形は「/si」です。

于 2008-10-24T19:40:44.197 に答える
1

私たちはWSCFを使用しています-ThinktectureのWebサービスコントラクトファースト ツールを使用して、最初にXSDスキーマを作成し、次にこのツールを使用してサービスインターフェイスを生成するWebサービス開発を行います。WSDLからサービスインターフェイスを生成すると便利な場合がありますが、私はまだこれを試していません。

于 2008-10-25T01:06:56.050 に答える
1

はい - WSCF を (上記のように) 使用して、サーバー側のコードを生成できます。実際の URL は、使用するテスト URL を指すように上書きできます。

ただし、これはスタブを生成するだけです。実際の実装がどのように機能するかがわからないため、実際の G​​etCustomers() メソッドなどをコーディングする必要があります。

次に、これをモックするか、単純な ASP Web サーバーを作成して実行することができます。

于 2008-10-28T21:22:51.390 に答える
0

RhinoMocksStructureMapを使用してラッパー インターフェイスのモックを作成してみてください。

于 2008-10-24T19:45:31.910 に答える
0

これが役立つかどうかはわかりませんが、

私が最近したことは次のとおりです。

  • wsdl ツールまたはビジュアル スタジオを使用して .cs ファイルを生成する
  • 部分クラスに変更しました
  • 別の部分クラスを作成しました。このクラスでは、クラスが IWhatEver を実装していることを示す行を追加するだけです。
  • 生成されたプロキシ クラスと同じインターフェイスを作成しました (したがって、プロキシはインターフェイスを完全に実装します)。

次に、私の場合はモッキングフレームワーク(Moq)を使用してWebServiceをモックし、貧弱な依存性注入を使用しました(テスト中のクラスのコンストラクターにモックを渡します)..のインスタンスを処理できますIWhatever

離れてテスト..

それが役立つことを願っています

于 2008-10-24T19:52:26.840 に答える