NET在事務(wù)處理的應(yīng)用論文

時(shí)間:2022-09-18 05:30:00

導(dǎo)語(yǔ):NET在事務(wù)處理的應(yīng)用論文一文來(lái)源于網(wǎng)友上傳,不代表本站觀點(diǎn),若需要原創(chuàng)文章可咨詢客服老師,歡迎參考。

NET在事務(wù)處理的應(yīng)用論文

[摘要]本文論述了.NET事務(wù)處理中的的應(yīng)用。討論了在.NET集成開(kāi)發(fā)環(huán)境中利用MTS與COM+結(jié)合進(jìn)行分布式事務(wù)處理的實(shí)現(xiàn)方法。

[關(guān)鍵詞]NET事務(wù)處理MTSCOM+分布式事務(wù)處理

隨著信息技術(shù)的發(fā)展,廣泛的數(shù)據(jù)交流、共享與協(xié)作在現(xiàn)代商業(yè)信息化實(shí)際應(yīng)用中變得尤為突出,處理的數(shù)據(jù)量不斷增大增加了這種關(guān)系的復(fù)雜性。因此,保證數(shù)據(jù)的完整性與一致性顯得十分重要。

一、事務(wù)處理概述

1.什么是事務(wù)處理

事務(wù)處理就是綁定在一起的一組處理過(guò)程的集合,如果在處理中,這個(gè)集合中的任何過(guò)程出現(xiàn)了問(wèn)題,這個(gè)事務(wù)就會(huì)失敗,集合中的所有過(guò)程都要恢復(fù)到初始狀態(tài)。

2.事務(wù)處理的特性

所有的事務(wù)處理必須滿足ACID特性。

原子性(A):是指事務(wù)處理是有或無(wú)的命題,一旦啟動(dòng),整個(gè)事務(wù)或者提交,或者放棄;一致性(C):是指事務(wù)處理的所有進(jìn)程都不能違背的商務(wù)規(guī)則。這些規(guī)則規(guī)定了數(shù)據(jù)的一致性;隔離性(I):是指多個(gè)事務(wù)處理之間的并發(fā)控制,即保證各個(gè)事務(wù)之間不互相影響;持久性(D):是指一旦完成了事務(wù)處理,事務(wù)處理的結(jié)果就應(yīng)該得到維持。

二、分布式事務(wù)處理

framework與COM+

分布式事務(wù)處理是指地于分布于相同或不同計(jì)算機(jī)上的多個(gè)不同類型數(shù)據(jù)數(shù)據(jù)源進(jìn)行的事務(wù)處理。

在分布式事務(wù)處理中常會(huì)用到已經(jīng)集成到了操作系統(tǒng)中COM+技術(shù),它是COM和MTS的替代技術(shù)。.NETframework是Microsoft的新一代開(kāi)發(fā)平臺(tái),它不僅支持COM+,還依賴COM+完成復(fù)雜的分布式兩階段提交事務(wù)處理,使得使用COM+更加容易。COM+提供了基于MSDTC的強(qiáng)大事務(wù)處理模型,使開(kāi)發(fā)者專注于系統(tǒng)的商務(wù)和應(yīng)用邏輯,不必關(guān)心中間的具體細(xì)節(jié)。它融合了分布式事務(wù)處理和基于組件編程的優(yōu)勢(shì),通過(guò)聲明組件屬性來(lái)實(shí)現(xiàn)自動(dòng)事務(wù)處理。用戶只需在類定義時(shí)聲明事務(wù)處理支持屬性(TSA),COM+可以根據(jù)TSA決定組件的事務(wù)處理行為,基于組件配置TSA,代表組件自動(dòng)與MSDTC進(jìn)行交互,自動(dòng)處理啟動(dòng)、提交或終止事務(wù)的復(fù)雜細(xì)節(jié)。

在.NETframework中提供的用來(lái)在COM+中執(zhí)行的.NET類稱為服務(wù)部件(ServicedComponent)。這些類都直接或間接從定義在System.EnterpriseService命名空間的ServicedComponet基類繼承而來(lái)。而且在此命名空間中定義的一些屬性指出了怎樣在COM+中配置組件,以及使用哪些服務(wù)。2.在.NET中如何建立COM+分布事務(wù)處理

COM+事務(wù)處理支持屬性有下而5種可能的屬性值:

Disabled、NotSupported、Supported、Requied、RequiedNew

前兩種屬性不支持事務(wù)處理。第三種屬性一般用于組件不需要進(jìn)行事務(wù)處理,但運(yùn)行結(jié)果影響到其他需要事務(wù)處理組件。Requied屬性需要事務(wù)處理,若它的創(chuàng)建者已經(jīng)在進(jìn)行事務(wù)處理,COM+就會(huì)將此組件加入到創(chuàng)建者的事務(wù)處理中。若調(diào)用者不存在事務(wù)處理,則COM+為此組件新建一個(gè)事務(wù)處理。RequiedNew屬性表明組件需要進(jìn)行事務(wù)處理,但是不管它的創(chuàng)建者是否存在事務(wù)處理,需要新建一個(gè)事務(wù)處理,并在這個(gè)新事務(wù)處理中運(yùn)行。

為此.NETServicedComponent必須完成的任務(wù):

從ServicedComponent基類繼承而來(lái)的.NET類;將.NET事務(wù)處理支持屬性TransactionAttribute應(yīng)用于類聲明中(即上面提到的5個(gè)屬性值之一);應(yīng)用程序集級(jí)的.NET屬性規(guī)定COM+的應(yīng)用配置;

包括ApplicationNameAttribute(規(guī)定應(yīng)用程序建立的名稱);ApplicationActivatonAttribute(規(guī)定組件在進(jìn)程內(nèi)創(chuàng)建還是在進(jìn)程外創(chuàng)建);ApplicationAccessControlAttribute(規(guī)定了COM+應(yīng)用的安全層次)

(1)建立強(qiáng)命名

(2)注冊(cè)組件

(3)COM+事務(wù)處理的生命周期

Com+事務(wù)處理的4個(gè)階段的生命周期中前三個(gè)階段比較簡(jiǎn)單,完成事務(wù)處理后,有幾種方式可以決定是否提交事務(wù)。可以通過(guò)使用3種技術(shù)顯式控制事務(wù)處理的結(jié)果。

(4)調(diào)用ContextUtil方法:

方法是:SetComplete()、SetAbort()、EnableCommit()、DisableCommit()

設(shè)置ContextUtil屬性:屬性是:DeactiveOnReturn、MyTransactionVote。

在類定義中應(yīng)用AutoComplete屬性

下面用一個(gè)簡(jiǎn)單的例子給出這一種技術(shù)的應(yīng)用(語(yǔ)言為c#,很容易轉(zhuǎn)為別的語(yǔ)言):

調(diào)用ContextUtil方法

usingSystem.EnterpriceServices;

[TransactionAttribute(TransactionOption.Required)]

publicclassAccount:ServicedComponent

//從System.EnterpriceServices.ServicedComponent類繼承

//允許組件使用COM+服務(wù)

publicvoidUpdateAccount()

try

ContextUtil.SetComplete();

catch(Exceptione)

ContextUtil.SetAbort();

Throw(e);

設(shè)置ContextUtil屬性和在類定義中應(yīng)用AutoComplete屬性與此類似。

三、結(jié)束語(yǔ)

隨著整個(gè)社會(huì)信息化進(jìn)程的加快,需要處理的數(shù)據(jù)量越來(lái)越大,數(shù)據(jù)處理一致性、完整性、準(zhǔn)確性對(duì)整個(gè)處理系統(tǒng)的性能具有決定性的影響。隨著新一代開(kāi)發(fā)平臺(tái).NETFramework的逐漸推廣,.NET結(jié)合COM+的分布式事務(wù)應(yīng)用必將得到很大發(fā)展。