2011-06-20 16 views
0

WSDLは型定義のセクションを指定しているので、メッセージの内容が要求された型と一致しないときにメッセージ交換が失敗するように、この型定義がどのように強制されるのだろうか。WSDLと型検証

私が読んだところによると、WebサービスはWSDLなしで存在することができます(wsdlを使用しないWebサービスのクイック検索のみ)。理想的な状況ではありませんが、それが起こる可能性があり、消費者がメッセージの構造を知っている限り、Webサービスは引き続き使用できます。これが当てはまる場合、WSDLで定義されている型は単なる情報に過ぎません。 WSDLの型定義を実際の型検証と結びつける自動メカニズムはないようです。これに関しては、WSDL documentationは何も言わないようです。

通常、タイプ検証はどのようにWebサービスで実行されますか?そのような検証を提供し、何か問題が生じた場合に障害メッセージを返すのはサーバーの責任ですか?タイプバリデーションに関してクライアントの責任は何ですか?

答えて

1

WSDLはサービスを記述し、サービス記述の一部はクライアントとサービスの間で交換されるデータの定義です。データは、各メッセージの正確なフォーマットを定義するXMLスキーマ(XSD)によって記述されます(例えば、xsd:anyの定義が使用されるまれな使用例を除く)。 XMLスキーマはXML文書を記述する標準的な方法であり、これらの文書を検証するために使用されます。一般的なXMLパーサーでは、指定されたスキーマでXML文書を検証できます。

WSDLなしでWebサービスを作成できます。実際にはWSDLは主にSOAPサービス用に使用されますが、WSDLなしでSOAPサービスを定義することはできますが、XSDスキーマで記述できる明確なデータしか使用できません。 XMLサービスやRESTサービス(XMLを渡す)のような他のタイプのWebサービスも、XSDで記述されたデータを交換することができます。

検証が使用されているかどうかは、消費者によって異なります。 XML文書の検証は時間がかかり、システムのスループットを低下させる可能性があります。検証がどのように使用されるかは、APIに依存します。いくつかのAPIまたはツールは、これをすぐに提供するもので、受信したメッセージを手動で傍受し、利用可能なXMLパーサーで検証を実行する必要があります。

+0

ありがとうございます。しかし、私にとっては1つの点は不明である。あなたは「検証が使用されるなら消費者に依存します」と言う。これは、サービスのプロバイダが検証を行わないことを意味しますか? (私はそうは思わない、しかし...)それはどういう意味ですか? –

+0

@ジョン:申し訳ありませんが、私は明確ではありませんでした。消費者はクライアントではなく、メッセージ受信者です。クライアントがリクエストを送信すると、受信者はサービスであり、メッセージを検証するとサービス開発者がサービスを受けます。クライアントとサービスの両方を制御できる社内アプリケーションでは、XML検証はほとんど行われません。サービスが応答を返すと、クライアントは受信者になり、XML検証が使用されている場合はクライアントの開発者が行います。場合によっては、XML検証はスキップされ、逆シリアル化されたデータは代わりに検証されます。 –

+0

今はっきりしています。ありがとうございました。 –