3 つの xsd ファイルを使用して wsdl を作成したいと考えています。どうやってそれをしますか?
コマンドプロンプトでこれを試しました:
wsdl.exe /language:cs /parameters: c:\myService\Contract\HeaderData.xsd c:\myService\Contract\MyData.xsd c:\myService\Contract\Messages.xsd /out: MyWsdl.wsdl
私は何を間違っていますか?
ここに誤解があると思います。あなたのイラストの は、 Microsoft のツールwsdl.exe
を指している可能性が高く、次のように説明されています。
Web サービス記述言語ツールは、WSDL コントラクト ファイル、XSD スキーマ、および .discomap 検出ドキュメントからXML Web サービスおよび XML Web サービス クライアントのコードを生成します。
出力を WSDL ファイルにするように要求することで暗示されているように見えることから、XSD ファイルから開始して WSDL ファイルを実際に作成しようとしていると推測できます。以下では、なぜそれが簡単にできないのか、どのような選択肢があるのかを説明しようとしています。
以下の図は、WSDL 1.1 仕様の背後にあるモデルを示しています。
XSD は正確に適合し、typesの下にのみ適合します。これは WSDL 用語であり、メッセージを構成するパーツを記述するために使用される型システムを表し、アプリケーション/トランスポート プロトコルにバインドされたポート (抽象インターフェイス) として編成され、最終的に (物理的に) 1 つ以上のネットワーク エンドポイントでサービスとしてアクセスできます。types
XSD から WSDL を生成するには、WSDL を自動的に生成するツールにさらにデータを提供する必要があることに気付きました。たとえば、どの操作を WSDL に記述したいですか? それらのそれぞれについて、入力、おそらく出力、そしておそらく1つ以上の障害は何ですか? それらをどのようにグループ化しますか (portType = インターフェイス)? HTTP、SOAP のどのバインディングを使用しますか? SOAP のバージョンは? SOAP over: HTTP、MQ? SOAPアクション? WSDL ファイルの数: 1 つ、または 3 つ?
一部のツールでは、上記の行に沿って一連の質問 (データ入力/ウィザード) が表示され、WSDL が作成されます。他の人は、XSD スキーマ構造の実装で事前定義されたパターンを使用します (たとえば、IFXには要求/応答要素を定義する特定の方法があります)。これらの仮定に基づいて、QTAssistant (私はそれに関連付けられています) などの特殊なツールはあまり質問しません。 WSDL を作成しながら質問します。
ユーザーが XSD ファイルをアップロードし、いくつかの質問をした後に WSDL を作成できるオンライン ツールを 1 つまたは 2 つ覚えていますが、もう見つけられないようです...このようなもの.. .
この方法では、XSD から WSDL を自動生成することはできません。WSDL を作成するには、新しい WSDL から始めて、この XSD をインポートする必要があります。
XSD は、サービスで使用できるデータのタイプを定義します。一部の XSD は通常 WSDL に埋め込まれ、一部は特別にインポートされます。
別の方法として、C# で XSD を使用してサービスを生成し、そのサービスから具体的な WSDL を抽出することもできますが、多くのチームは最初に Web サービスを契約することを好むため、これは好まれません。
私の理解では、xsd->wsdl には行きませんが、間違っている可能性があります。
ただし、XSD ファイルから WSDL を生成すると、問題が解決する場合があります。