4

SOAサービスは自己完結型のサービスである必要がありますが、実際には、ビジネス/プロセスを実行するためにこれらのサービスを調整する必要があります。

ここで、プロセスとデータの一貫性を保つには、すべてのサービスが実行されるか、何も実行されないようにする必要があります。

実装する1つの方法は、各サービスに「補正」ロジックを実装し、プロセス/前のサービスで問題が発生した場合にそれを呼び出すことです。

トランザクションコンテキストを取り出して2フェーズコミットのようなものを実装するなど、同じことを行うためのより良い方法や標準はありますか?

4

2 に答える 2

2

アクセスしているサービスによって異なります。補償を実行する方法がない場合もあれば、トランザクションを制御する方法がない場合もあります。また、代替手段がまったくない場合もあります。

補償ハンドラーと2フェーズコミット(XAトランザクション)はどちらも、トランザクションを管理するための有効なメカニズムです。

インターフェースするサービスと、それらが提供するサポートの種類を検討してください。たとえば、多数のWebサービスがある場合、XAが提供するトランザクション制御を持っていない可能性がありますが、それらには操作を元に戻すためのメカニズムがある可能性があります。

完璧な世界では、必要な報酬を減らす2フェーズコミットがありますが、インターフェイスはインターフェイスであり、人と人のように、コミュニケーションはさまざまであり、完璧なソリューションは1つではありません。

インターフェイスを設計するときは、インターフェイス設計の一部としてトランザクション制御と報酬の回復を考慮してください。有用なインターフェイスを作成したことで賞賛されます(または少なくとも批判されません)。

于 2012-04-17T23:00:04.260 に答える
0

WS-BPEL 2.0仕様(Webサービス間の相互作用を記述および調整する方法を提供する標準)で定義されている障害ハンドラーと補償ハンドラーを使用して、ビジネスロジックを補償ロジックから標準的な方法で分離できます。

  • BPEL仕様のエラー処理へのリンク
  • BPELで報酬ハンドラーを作成する方法に関するブログ投稿
于 2012-04-17T11:11:04.320 に答える