この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 25464|答える: 0

[出典] .net/C# 分散トランザクションスコープ

[リンクをコピー]
掲載地 2018/05/05 10:53:17 | | | |
他の人のガイドを引用すると:
実際の開発作業では、イベントを実行してから別のインターフェースを呼び出してデータを挿入します。処理ロジックに例外がある場合、以前に挿入されたデータはジャンクデータになります。
私たちが望むのは、メソッド全体をトランザクションとして定義できることであり、TransactionScopeクラスはトランザクション自体とやり取りしなくて済むシンプルなメソッドを提供します。
コードブロックをトランザクションに参加しているとマークするために。 TransactionScopeオブジェクトはトランザクションを作成し、トランザクションクラスのCurrentプロパティにトランザクションを設定します。

1. トランザクションスコープの利点
1. 使いやすくなる。 TransactionScopeは暗黙のトランザクションを実装できるため、トランザクションを考慮しずにデータアクセス層のコードを書く一方で、ビジネス層でトランザクションを制御できます。
2. クロスデータベースやMSMQなどの分散トランザクションの実装が可能です。

2. トランザクションスコープの欠点
1. コストパフォーマンスは高くない。 例えば、「Scope」ではライブラリのトランザクションのみを制御できます。 「TransactionScope」を使うのは少し無駄です。
2. 通常、「TransactionScope」を使う限り、MSDTCの設定、ファイアウォールの設置、ポート139の開放が必要です。 このポートは変更できません

3. 分散トランザクションを使う必要がある場合は、よく考える必要があります
1. この操作はトランザクションに含めていなければならないか? このステップが完了しなかったり失敗した場合、取引全体をロールバックする価値はありますか? 洗練された補償やフォールトトレランス対策はないのでしょうか?
2. 分散トランザクションには何ポイントが関わるか? リアルタイム操作の連続が大量に必要ですか? 通知操作でポイントを効率化できないのですか?
3. 分散トランザクションを開始した後、トランザクションに依存しない操作を行いましたか?これらの操作はトランザクションとは無関係でしたが。 (例:データの読み取り、計算、ユーザーのメッセージ返答待ち、他のモジュールの呼び出し返り待ちなど)
4. 取引中に読書操作をいくつか含めていなかったよね? これはトランザクションに選択操作を導入した際に犯しやすいミスです。
5. すべての操作が完了した後に、いくつかの操作を実行できます。 この種の操作には明らかな通知特性があります。 通知オペレーターは「通知を出します。必ず届くことを保証します」と言います。
この通知を受け取り、処理されるようにしてください。ただし、私が通知した直後に対応する必要はありません。 この操作は明らかに別のタスクで行うことができます。

4. 分散トランザクションを使用する際は以下の点に注意してください
1: トランザクションに参加するマシンが分散トランザクションサポートを有効にしていることを必ず確認してください。
2: マシンにファイアウォールがオンになっている場合、MSDTCプロセスを例外として設定する必要があります。
3: トランザクションに参加するマシンはドメインを越えることができません(もしドメインを越えている場合、Microsoftは現時点で正確な解決策を持っていません);
4: 分散トランザクションは複数のデータベースがある場合のみ使用してください。同じデータベースの場合はSqlTransactionを使うのが最適です。
1. System.Transactionsの参照を先に追加する(Netアセンブリを追加する必要があります)

C#コールのコードは以下の通りです:

この分散トランザクションクラスを説明するブログのアドレスは非常に明確です:http://www.cnblogs.com/artech/archive/2010/01/31/1660356.html

2. ウェブサーバーおよびSQLサーバー環境の設定

コントロールパネル - >システム&セキュリティ - >管理ツール - >コンポーネントサービス
(これはWEBサーバーとSQLサーバーの両方で必要です)





コントロールパネル - >システム&セキュリティ - >管理ツール - >サービス
(これはWEBサーバーとSQLサーバーの両方で必要です)




コントロールパネル - >システム&セキュリティ - > Windowsファイアウォール
(これはWEBサーバーとSQLサーバーの両方で必要です)




3. MSSQL 構成

サーバー接続については、右クリックでプロパティ>




4. ホストの設定(WEBサーバーのみを設定し、設定しない場合はSQLサーバーでも設定)

C:\Windows\System32\drivers\etc
ホストファイルはNotepadで開きます
(SQLサーバーの情報はWEBサーバーのHostsファイルで設定する必要があります)
(テストに失敗した場合は、SQLサーバーのHostsファイルでウェブサーバーの情報を設定してください)






先の:Discuz Xフォーラムの投稿への外部リンク nofollow属性を追加
次に:C#で小数点以下の2桁を保持する関数とその使い方
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com