6

問題

サービスへのRESTfulなアプローチでSOAを構築しています。システムが本番環境に入ると、内部およびサードパーティ システムを含む多くのクライアントがインターフェイスを使用することになります。

次のようなクライアント アプリケーションによって提供される応答情報を消費してエコーできるようにしたいと考えています。

  • セッション ID - Java EE セッション ID またはクライアント固有のものである可能性があります。これは、サポート チームやクライアントの問題をデバッグして、すべてのシステムを通じて問題を追跡するのに役立ちます。
  • トランザクション ID - クライアントがサービスを非同期的に呼び出す場合、または 202 Accepted スタイルの長時間実行プロセスを実装する場合に、クライアントが要求/応答の関連付けを支援するためにクライアントにエコー バックできる要求の一意の識別子。

考えられる解決策

したがって、RESTful な制約に固執すると、HTTP を使用してこれを実装する必要があることが示唆され、実装できるオプションがいくつかあります。

  • pragma header - transaction-id、session-id などの拡張プラグマを実装します。これは、標準の HTTP ヘッダーを使用するため、ソリューションの純粋主義者のように思えますが、私たちが気にすることができないすべてのもののゴミ捨て場になることを懸念しています。適当に考えます。
  • X-My-Header - 必要な各フィールドのカスタム ヘッダー。コアHTTPではなく、プロキシによって削除される可能性があるため、アンチレストを感じます
  • クエリ文字列または XML/JSON 表現 - すべてのリソースにフィールドを追加します。これは操作パラメーターであるため、リソースではなくメタデータとして提供する必要があるように感じます。
  • Cookie - Cookie と Set-Cookie を使用して、カスタム キー値を保持します。ほとんどの実装ではすでに Cookie が使用されているため、セッション ID の場合に役立ちます。クライアント側の相関関係をサポートするために毎回再送信する必要があり、これは Cookie を使用するポイントを無効にします。

答え

これには前例がありますか?私たちは怒っていますか?私のすべての研究で欠けている明らかなものはありますか?サービスが展開されたら、サービスをどのようにサポートするかを実際に気にする人はいませんか? 黙って立ち去るべきですか?

誰かが助けてくれることを願っています。

PSこれがエッセイのビットである場合は申し訳ありませんが、アドバイスは「具体的に」と言っていました....

4

2 に答える 2

2

ああ、これは痛いです。私もそこに行ったことがあります。

まあ、トランザクション、セッションなどのメタデータを使用するアイデアは良い考えです。少なくともロギングについては。

問題は、さまざまな企業のポリシーと SOA インフラストラクチャに準拠したものをセットアップすることです。

HTTP の場合、最適な設計と最大の相互運用性の間にはトレードオフがあります。

安全な方法は、メッセージ自体にメタデータをエンコードすることです。あまり良くありません。そのようなソリューションは、すべてのメッセージのヘッダーを含むエンベロープを持つ SOAP に少し似ています。

トランザクション ID などの情報に X-header を使用することになりました。ただし、あなたが言及したように、プロキシ/b2b-ゲートウェイなどはヘッダーを削除する可能性があり、指定されたすべての開発フレームワーク、COTS アプリケーションなどでそれらを取得できるかどうかは明らかではありません。ソリューションを実行する - 「あればいい」だけです。

クッキーは痛みに他なりません。ブラウザとのやり取りで煩わしく、場合によっては便利な場合もありますが、SOA シナリオでは、これはお勧めできません。多くのことがうまくいかない可能性があり、組織間のデバッグは苦痛です。

また、POST または PUT データと一緒にクエリ文字列を使用することも避けます。HTTPの仕様上、可能です。ただし、ランダム フレームワークでの実装に関してはそうではありません。

于 2012-08-15T05:16:28.027 に答える
0

GUID を使用して、クライアントに GUID を生成させ、ワークフロー/ビジネス プロセスを開始する要求の一部として渡すことができます。この GUID を使用して、ワークフローに参加している複数のコンポーネントを相互に関連付けることができます。

于 2016-11-07T20:05:19.320 に答える