2

トランザクション コーディネーターは、1) SQL Server 2) Oracle 3) MSMQ 4) ファイル システムなどのさまざまな種類のリソース間のトランザクションを調整するために使用されることを知っています。リソースが失敗した場合、WCF 内の他のすべてのリソースのトランザクションをロールバックする必要があります。

a) 選択するトランザクション コーディネーターとその理由を知りたいです。b) トランザクション コーディネーターを単独で選択できますか、または次の条件で wcf 自体によって自動的に選択されます :-

1) wcf が同じ Microsoft テクノロジ (Microsoft SQL Server & Microsoft Message Queue) のトランザクションを使用する場合

2) wcf が異なるデータベース テクノロジ (Microsoft SQL Server、Oracle、および MySQL) のトランザクションを使用する場合

3) wcf が異なるテクノロジ (Microsoft SQL Server、Oracle、ファイル システムなど) を使用するすべての異なるタイプのリソースに対してトランザクションを使用する場合

4

2 に答える 2

1

このような異種環境で DTC を使用しないことを強くお勧めします。複数のリスクが伴います。将来の選択肢を制限しているのはそのうちの 1 つだけです。トランザクションに登録できないファイル システム (ネットワーク ファイル共有など) を使用する必要がある場合はどうすればよいでしょうか。それともクラウドフロントエンド?それともサードパーティのサービスですか?

また、DTC はシステムの一部を非常にうまく結合しません。空間的、時間的、さらにはプラットフォームなど、あらゆる種類の結合が関係しています (誰もが特定の DTC に参加する方法を知っている必要があるため)。

パフォーマンス ( DTC を使用しない場合よりも何千倍も悪い) の側面にもかかわらず、DTC は機能しなくなるまではうまく機能します。DTC を使用する場合は、「トランザクションが疑わしい」状況やあらゆる種類のトラブルシューティングに備える必要があります。そして、それはあなたのデザインの一部であるべきです。

システム内のいくつかのまれな特定のケースでDTC が必要になる場合がありますが、トランザクションと DTC を聖なる金槌のように見る状況に陥った場合 (トランザクションを開始するだけで、何かが失敗した場合は「ただ」すべてをロールバックします) 今すぐ停止することをお勧めします。ここでやめれば、時間、バグ、神経、お金、リソースを大幅に節約できます。

DTC を必要としない適切な設計を行う方が、より論理的で優れていると思います。覚えておいてください: ビジネスはロールバックしません。私たちはプログラマーです。お金がある口座から別の口座に送金されている場合 (別の銀行で可能)、DTC は関係ありません。それらはロールバックせず、補償します。それを適切に行うためのパターンと方法があります。トランザクションで全世界をラップすることはできません。

したがって、自律的に動作し、互いに自然に通信できる独立したコンテキストに対してシステムを設計すると、はるかに優れた世界にいることに気付くでしょう:)

于 2013-12-05T11:01:57.667 に答える
0

Windows サーバーでアプリケーションを実行している場合、Ms DTC はネイティブ Windows サービスとして既に OS の一部であるため、最も自然な選択です。http://blogs.msdn.com/b/florinlazar/archive/2004/03/04/what-is-msdtc-and-why-do-i-need-to-care-about-it.aspx

カスタムソフトウェアプロジェクトでWCFサービスに使用したことがありますが、それでうまくいきます。私だったら、特に理由がない限り、新しいプロジェクトにもう一度使用します。

于 2013-12-02T12:19:40.337 に答える