web-dev-qa-db-ja.com

データ交換のためのさまざまなデータ形式(XML、JSON、SOAP)の問題を解決する方法は?

JSON、XML、およびSOAPのデータ交換をサポートしています。データフローの鳥瞰図は次のようになります。

  • パートナー1は、XMLデータを含む一部のデータのリクエストを送信します
  • パートナー2はJSONでリクエストを送信します
  • パートナー3はSOAPでリクエストを送信します

すべてのパートナーに一般的なアプローチをとること。パートナーのパラメーターと対応するパラメーターを定義するファイルを、パートナーごとに作成しました。

必要なデータを取得したら、データを処理して応答を生成します。この応答は、それぞれの形式でパートナーに再度送信する必要があります。そのために、テンプレートに応答データを入力し、それをパートナーに送信するテンプレートがあります。

通常、この問題をどのように解決しますか?

私は何に取り組んでいますか?パートナーの要求を、パラメーターを持つファイルの助けを借りて必要な形式に変換する汎用パーサーを作成しています。

4
Vamsidhar

あなたは非常に有効なアプローチを使用していますが、あなたの質問は非常に広範です。それを処理する方法はたくさんあります。正しい答えは、既存のアーキテクチャに大きく依存します。

私の最初の推測は:

  • フォーマット依存の解析には 戦略パターン を使用します。
  • 回答を生成するためにもう一度戦略を使用します(テンプレートアプローチではもはや十分ではない場合)
  • 必要に応じて、パーサーの出力要求にフォーマットセレクターを配置して、回答の返信に使用される出力フォーマットを追跡します。

アドホックパーサーでは不十分な場合は、そのままのパーサーを使用し、さまざまな解析イベントを処理して、同種のフォーマットに依存しないリクエストオブジェクトを作成できます(つまり、リクエストは コマンドを使用して実装できますパターン 、これは実行時に要求を実行し、回答を生成します)。

PS:私はあなたのシステムが何らかのトランザクション処理を実行し、解析が複雑なリクエストの複雑な解析よりもトランザクションのパラメータ/引数を取得することの方が多いことを理解しています。 インタープリターパターン を提案しなかったのはこのためです。

4
Christophe