WCF 學習總結8 WCF 事務處理

2021-08-25 16:26:23 字數 1404 閱讀 7429

wcf在預定義繫結中實現了標準的wsatomictranscation(ws-at)協議和microsoft專有的oletx協議,這些協議可以用來在訊息中加入事務狀態的資訊。我們可以指定將乙個操作的**放在事務範圍裡執行。

我們需要在binding的配置節裡指定,transcationflow=true

注意:任何被指定的必須在乙個事務範圍裡執行的操作(operationcontract)都不能標記為單向方法(isoneway=true),因為在操作結束時,有關事務狀態的資訊必須傳回給呼叫者。開發者也可以指出,當沒有異常發生時,wcf應該自動為操作提交事務。

namespace wcftranservicelib }

如果需要在服務實現的操作需要自己來提交事務,可以使用wcf的靜態system.servicemodel.operationcontext物件:

public class myservicetype }

而客戶端開發者可以使用system.transcation命名空間提供的語法將服務的操作放進乙個事務範圍內。

using(transcationscope ts = new transcationscope(transcationscopeoption.requirenew))

client.close();

如果服務的操作支援事務,而且也配置了支援傳送有關事務狀態的繫結,那麼客戶端的事務直到服務操作決定提交時才會提交(transcationscope的complete被呼叫)。相反地,服務在客戶端事務範圍裡對事務資源所做的任何操作都將被回滾。(客戶端處理的過程中出現任何異常)

using system; using system.collections.generic; using system.linq; using system.text; using system.transactions; namespace wcftranclient var ps = client.getproducts(null); console.writeline("count of products: ", ps.count); var ss = client.getsuppliers(null); console.writeline("count of suppliers: ", ss.count); client.close(); } catch (exception ex) finally } } }

wcf 學習總結1 -- 簡單例項

wcf 學習總結2 -- 配置wcf

wcf 學習總結3 -- 例項模式

wcf 學習總結4 -- 用duplex實現訊息廣播

wcf 學習總結5 -- 訊息攔截實現使用者名稱驗證

wcf 學習總結6 -- wcf引數與返回值

wcf 學習總結7 -- 流模式實現檔案上傳

wcf 學習總結8 –- wcf 事務處理

Redis學習 事務處理基礎

1.什麼是事務?簡單來說,事務是一組命令的集合,乙個事務中的所有命令要麼全部執行,要麼全不執行。redis保證乙個事務中的所有命令要麼都執行,要麼都不執行,它還能保證乙個事務內的命令依次執行而不被其他命令插入。簡單使用如下 multi告訴redis 下面我給你發的命令屬於同一事務,先不要執行,存起來...

第 8 章 事務處理與鎖

目錄 8.1.for update skip locked 8.2.for share 當使用 for update 時,會鎖住所有where匹配條件的記錄,但有時我們只是修改其中的一條,例如where條件匹配後跟隨limit 1,這時for update會鎖住所有where匹配的記錄,我們使用 s...

MySQL事務處理學習記

關於mysql事務處理學習記 start transaction,commit和rollback語法 start transaction begin work commit work and no chain no release rollback work and no chain no rele...