WSDLファイルからWebサービスインターフェイスをリバースエンジニアリングする最良の方法は?

StackOverflow https://stackoverflow.com/questions/234945

質問

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

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

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

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

Error: Element Reference '{namespace}/:viewDocumentResponse' declared in
schema type '' from namespace ''
       - the required attribute 'name' is missing

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

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

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

役に立ちましたか?

解決

WSCF-Web Services Contract First ツールを使用しています最初にXSDスキーマを作成し、このツールを使用してサービスインターフェイスを生成するWebサービス開発を行うためのThinktecture。 WSDLからサービスインターフェースを生成すると便利かもしれませんが、私はまだこれを試していません。

他のヒント

コマンドラインユーティリティ / serverInterface オプションを使用した.NETのwsdl.exe 。ドキュメントによると:

  

サーバー側のインターフェースを生成します   ASP.NET Webの実装   サービス。インターフェースが生成されます   WSDLドキュメントの各バインディング。   WSDLのみがWSDLを実装します   コントラクト(を実装するクラス   インターフェースには、   クラスメソッドについては次のとおりです。   Webサービス属性または   変更されるシリアル化属性   WSDLコントラクト)。短い形式は   「/ si」。

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

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

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

これが役立つかどうかわからない

最近やったことは:

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

次に、私の場合、モックフレームワーク(Moq)を使用してWebServiceをモックし、貧弱な人の依存性注入(モックをテスト対象クラスのコンストラクターに渡す)を使用しました。 IWhateverのインスタンス

テストアウェイ..

役立つこと

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top