0

Web サービスは入力データを検証し、データベースに書き込む必要があります。後で、他のサービスがデータを読み取り、そこから xml ファイルを作成する必要があります。

したがって、サービスはデータの転送と変換を行うだけです (WS-* パラメータ => データベース)。

「動的」Web サービスには、パラメータの可変セット (「コンテナ」) も含まれている必要があります。これにより、クライアントが大幅に迅速に変更され、インターフェイスと基礎となる実装が変更されてはなりません。

検証を行う方法と場所は?

最初のアイデア:

  • ファイルを添付ファイルとして送信し、「固定」部分の .xsd スキーマと「コンテナー」部分の .xsd スキーマを使用して Web サービスで検証するだけです。変数部分が変更された場合、検証用の「コンテナー」.xsd のみを変更する必要があります。コンテナーは、base64 でエンコードされた xml にすることができます。検証エラーが発生した場合、Web サービスはエラーで応答します。

  • すべての標準項目を WSD パラメーターとして使用し、base64 でエンコードされたコンテナーを渡します。WS-* は標準パラメーターの検証を行い、コンテナーのみが別の .xsd に対して検証されます。

後で行う必要がある、値の論理的/意味的評価はありません。フィールド タイプの検証のみが必要です。

コンテナーは次のような xml である必要があります。

 ... standard elements xml ...
 <embeddedContainer>
  <customItemsFromWSClientOne>
   <reallyCustomItemA>
    <substructure>
     <itemABC></itemABC>
   </substructure>
   <anotherStructure></anotherStructure>
   </reallyCustomItemA>
 </customItemsFromWSClientOne>
</embeddedContainer>
... standard elements xml ...

別のクライアントは、完全に異なる構造を持つ「customItemsFromWSClientTwo」などの他のパラメーターを送信する場合があります。そのため、サービスは非常に一般的になります。

4

1 に答える 1

1

検証には主に 2 つのタイプがあります。

  1. フィールド タイプの検証 - 送信された値が正しいタイプと形式であることを確認します (つまり、フィールド userName に文字列が含まれているか、id に数字が含まれているかなどを確認します)。これは Web サービス パーサー/FW によって処理されます。したがって、ユーザーが間違ったタイプを送信すると、パーサーはエラーをスローします。
  2. 論理的な検証 - 実際の値に対していくつかのビジネス ロジックを実行します。

    if(value==null){//何かをする} else{//何か他のことをする}

必要な検証はわかりませんが、私が理解していることから、「コンテナ」は非常に動的でなければならないため、おそらく次のようなものが含まれます。

<paramName>someParamName</paramName>
<paramValue>someValue</paramValue>
 ...

その場合、XSD 検証はあまり役に立ちません。おそらく、それを理解するためにいくつかのロジックを記述する必要があります。

構造について完全に間違っている可能性があります。その場合は、例を投稿して理解を深めてください。

編集:

「コンテナ」にあらゆる種類の XML 構造を含めることができるようにするには、コンテナをxsd:anyとして定義する必要があります。processContents属性を定義することができstrict、正しい名前空間が定義されている場合、Web サービス パーサーはそれを検証できるはずです。詳細については、こちらをご覧ください。

別のオプションとして、グループを使用することもできます。こちらをご覧ください。

于 2012-07-16T12:54:28.017 に答える