Makale Özeti

Bu makale dizinsinde COM+'ın ne olduğu, ne işe yaradığını anlatan temel bir dökümanı 9 bölümde inceleyeceğiz. Makale serisinin sonunda COM+ ın temel özellikleri hakkında bilgiye sahip olacak ve kolaylıkla kullanabilir halde olacağız.

Makale

 
Transactionları Takip Etmek
 
Component Services Administrative Tool bize transactionlari izleyebileceğimiz veya DTC’yi başlatıp, durdurabileceğimiz bir kullanıcı arayüzü sunmaktadır.
 
Transaction istatistiklerini takip edebilemek için Component Services Administrative Tool’da component services nodunu genişlettikten sonra Computers nodunu genişletip vede daha sonra transactionlarını izlemek istediğimiz bilgisayarı seşim bunun altındaki Distributed Transaction Coordinator klasörünü seçtiğimizde karşımıza Transaction List ve Transaction Statistics gibi iki item gelecektir. Bunlardan Transaction List bize işlemde olan distributed transactionları gösterirken, Transaction Statistics ise bize DTC nin en son başlatıldığı tarihten itibaren olan transaction istatistiğini gösterecektir. Şimdi bu iki item için açılan pencereleri inceleyelim.
 
Transaction List penceresinde birazöncede bahsedildiği gibi o anda aktif olan transactionlar ve bu transactionlara ait Unit Of Work Id ve transactionun durumunu gösteren bir icon gözükmektedir. Eğer transactionlarla ilgili daha fazla bilgi almak istersek transactionun üzerine sağ tıklayarak View menusunden properties’i seçebiliriz. Donanımsal bazı sorunlar gibi bazı durumlarda transactionlar sona erdirilmeden kalbilirler böyle bir durumla karşılaşıldığında ise aynı pencerede bulunan Resolve menüsünden transactiona ait sonlandırma durumu seçilebilmektedir.
 
Transaction Statistics penceresinde ise karşımıza çıkan grafiksel barlara sahip ekrandaki barların ne anlamlara geldiğini açıklamak yeterli olacaktır.
 
 
 
Active : Şu anda aktif olan transactionların sayısı.
Max Active : Aktif transactionların ulaştığı maximum değer.
In Doubt : Durumu transaction manager tarafından belirlenemeyen transactionlar.
Committed : DTC en son başladığından beri commit edilmiş transactionlar(elle commit edilen transactionlar bu listede yer almaz).
Aborted : DTC en son başladığından beri abort edilmiş transactionlar(elle abort edilen transactionlar bu listede yer almaz).
Forced Commit : DTC en son başladığından beri elle commit edilmiş transactionlar.
Forced Abort : DTC en son başladığından beri elle abort edilmiş transactionlar.
Total : DTC en son başladığından beri toplam transaction sayısı.
Minimum : Başarılı bir şekilde commit edilmiş transactionlardan minimum response süresine ait olanın response süresi.
Maximum : Başarılı bir şekilde commit edilmiş transactionlardan maximum response süresine ait olanın response süresi.
Average : Başarılı bir şekilde commit edilmiş transactionların ortalama response süresi.
 
Transaction Metodları
 
ContextUtil classı bize transactionlarla çalışabilmemiz için gerekli metodları sunmaktadır. Bu metodlar sayesinde transaction bilgisini alabilir ve done ve consistent bit değerlerini ayarlayabiliriz. Transaction durumunu kontrol etmek için bu clastaki IsInTransaction metodunu kullanabiliriz. Bu metod bize bileşenin transaction içinde yer alıp almadığını gösterecektir.
 
Bileşen transaction içindeyken done veya consistent bitlere müdahele edebilmek için bazı metodlar vardır. Şimdi bu metodları ve bit değşkenlerin değerlerinin nasıl değiştirdiklerini inceleyelim.
 
EnableCommit : Bu metodu çalıştırdığımız zaman nesnemizin işinin henüz bitmediğini ancak consistent bir state ifade ettiğini belirtiriz. Dolayısıyla bu metodun çalışması bittikten sonra nesne deaktive olmaz. Bu metodda bit değişkenlerin değerleri ise Done Bit false olurken, Consistent Bit true olacaktır.
 
DisableCommit : Bu metod çalıştığı zaman ise nesnemizin işinin henüz bitmediği ve henüz kararlı yapya ulaşmadığını belirtebiliriz. Bu metodun sonunda ise Done Bit ve Consistent Bit false değerlerini alacaktır.Nesne deaktive edilmeden nesne bir daha çağrılırsa nesne deaktive edilecek ve transaction Abort edilecektir.
 
SetComplete : Bu metodu çalıştırdığımız zaman nesnenin işinin bittiğini ve kararlı yapıda olduğunu belirtebiliriz. Bu belirtme işlemi Done ve Consistent Bit’lerin true yapılmasıyla sağlanır.Transaction başarıyla commit edilebilir.
 
SetAbort : Bu metodu çalıştıdığımız zaman nesnenin işinin bittiğini ancak henüz kararlı yapıya ulaşamadığını belirtmiş oluruz. Obje deaktive edilir ve Abort Bit true değerini alır dolayısıyla transaction Abort edilecektir.Done Bit true değerini alırken Consistent Bit false değerini alacaktır.
 
Aşağıda bu metodların nasıl kullanılacağına dair ufak bir örnek yer almaktadır.
 
Imports System.EnterpriseServices
<Transaction(TransactionOption.Required)> _
Public Class TransactionMethods
    Inherits ServicedComponent
    Public Sub Methodum()
        Try
            '''''''''
            ContextUtil.SetComplete()
        Catch ex As Exception
            ContextUtil.SetAbort()
        End Try
    End Sub
End Class
 
Transaction Propertyleri Ve Attributeleri
 
ContextUtil classı bize bir önceki başlık altında bahsettiğimiz özellikler dışında başka özelliklerde sunmaktadır. DeactivateOnReturn propertysi tek başına done bit değerini kontrol edebilmek için kullanılan bir metoddur. Bu propertynin değerini true veya false yaparak Done Bit’inin değerini true veya false yapmış oluruz. MyTransactionVote  propertysini ise Consistent Bit değerini kontrol etmek için kullanırız. Yine bu propertynin değerini true veya false yaparak Consistent Bit değerini true veya false yapmış oluruz. Şimdi bu iki propertynin nasıl kullanıldığına dair bir örnek yapalım.
 
 
Imports System.EnterpriseServices
<Transaction(TransactionOption.Required)> _
Public Class TransactionProperties
    Inherits ServicedComponent
    Public Sub Methodum()
        Try
            ContextUtil.DeactivateOnReturn = True
            '''''''''
            ContextUtil.MyTransactionVote = TransactionVote.Commit
        Catch ex As Exception
            ContextUtil.MyTransactionVote = TransactionVote.Abort
        End Try
    End Sub
End Class
 
Ayrıca AutoComplete attribute kullanarak SetComplete veya SetAbort metodunun otomatik olarak çağrılmasını sağlayabiliriz. Eğer metodda hata oluşmamışsa SetComplete metodu otomatik olarak çağrılacaktır. Ancak bir exception fırlaması durumunda ise SetAbort metodu çalıştırılacaktır. Şimdi bu attribute’ın nasıl kullanılacağına dair bir örnek yapalım.
 
Imports System.EnterpriseServices
<Transaction(TransactionOption.Required)> _
Public Class TransactionProperties
    Inherits ServicedComponent
    <AutoComplete(True)> _
    Public Sub Methodum()
        Try
            '''''''''
        Catch ex As Exception
            'Exception Firladiginda Calismasini Istedigimiz Kod (Transaction Abort Yazmaya Gerek Yok Otomatik Calisacaktir.)
        End Try
    End Sub
End Class
 
 
 


oztamer@hotmail.com
tamer.oz@yazgelistir.com
oztamer@hotmail.com