【讀書筆記】C#進階編程 第二十五章 交易處理

來源:互聯網
上載者:User

標籤:tom   工作   blog   service   str   讀書   pen   筆記   lin   

(一)簡介

事務的主要特徵是,任務要麼全部完成,要麼都不完成。

 

 

(二)概述

事務由交易管理員來管理和協調。每個影響事務結果的資源都由一個資源管理員來管理。交易管理員與資源管理員通訊,以定義事務的結果。

 

1、交易處理階段

啟用階段:在這個階段建立事務。

準備階段:在這個階段,每個資源管理員都可以定義事務的結果。

提交階段:當所有的資源管理員都成功準備好了,就開始這個階段。

 

2、ACID屬性

事務的特徵可以用術語ACID來定義:

Atomicity(原子性):表示一個工作單元。

Consistency(一致性):事務開始前的裝態和事務完成後的狀態必須有效。

Isolation(隔離性):表示並發進行的事務獨立於狀態,而狀態在交易處理過程中可能發生變化。

Durability(持久性):在事務完成後,它必須以可持久的方式儲存起來。

Ps:並不是每個事務都需要這4個屬性(例:記憶體的事務不需要持久性)。

 

 

(三)傳統的事務

1、ADO.NET事務

public async Task AddCourseAsync(string connectionStr, string sql){    var connection = new SqlConnection(connectionStr);    SqlCommand courseCommand = connection.CreateCommand();    courseCommand.CommandText = sql;    await connection.OpenAsync();    SqlTransaction tx = connection.BeginTransaction();    try    {        courseCommand.Transaction = tx;        await courseCommand.ExecuteNonQueryAsync();        tx.Commit();    }    catch (Exception ex)    {        Console.WriteLine("Error:" + ex.Message);        tx.Rollback();        throw;    }    finally    {        connection.Close();    }}

 

 

2、System.EnterpriseServices

通過System.EnterpriseServices使用事務的優點是,不需要顯式地進行交易處理,運行庫會自動建立事務,只需要給有交易處理要求的類添加[Transaction]特性即可。[AutoComplete]特性把方法標記為自動化佈建事務的狀態位:如果該方法成功,就設定成功位,因此可以提交事務。如果發生異常,就終止事務。

[Transaction(TransactionOption.Required)]public class CourseData: ServicedComponent{    [AutoComplete]    public async Task AddCourseAsync(string connectionStr, string sql)    {        var connection = new SqlConnection(connectionStr);        SqlCommand courseCommand = connection.CreateCommand();        courseCommand.CommandText = sql;        connection.Open();        try        {            courseCommand.ExecuteNonQuery();        }        finally        {            connection.Close();        }    }}

用System.EnterpriseServices建立事務的一大優點是,多個對象能輕鬆地運行在同一個事務中,事務還可以自動登記。缺點是它需要COM+主機模型,使用這個技術的類必須派生自基類ServicedComponent。

 

 

事務參考:http://www.cnblogs.com/leslies2/archive/2012/01/05/2289106.html

【讀書筆記】C#進階編程 第二十五章 交易處理

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.