WSDLファイルからWebサービスインターフェイスをリバースエンジニアリングする最良の方法は?
-
04-07-2019 - |
質問
開発およびテストのためにアクセスできないシステム上の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サーバーを作成して実行できます。
RhinoMocks および StructureMap 。
これが役立つかどうかわからない
最近やったことは:
- wsdlツールまたはビジュアルスタジオを使用して.csファイルを生成します
- クラスを部分クラスに変更しました
- 別の部分クラスを作成しましたが、クラスがIWhatEverを実装していることを示す行を追加するだけです
- 生成されたプロキシクラスと同じインターフェイスを作成しました(したがって、プロキシはインターフェイスを完全に実装します)
次に、私の場合、モックフレームワーク(Moq)を使用してWebServiceをモックし、貧弱な人の依存性注入(モックをテスト対象クラスのコンストラクターに渡す)を使用しました。 IWhateverのインスタンス
テストアウェイ..
役立つこと