İşlem Yönetimi Yükseltme

Windows, birlikte bir işlem yöneticisi oluşturan bir dizi hizmeti ve modülü barındırıyor. İşlem yönetimi yükseltmesi, bir işlemi işlem yöneticisinin bileşenlerinden birinden diğerine geçirme işlemini açıklar.

System.Transactions en çok, tek bir dayanıklı kaynak veya birden çok geçici kaynak içeren bir işlemi koordine eden bir işlem yöneticisi bileşeni içerir. İşlem yöneticisi yalnızca uygulama içi etki alanı çağrılarını kullandığından en iyi performansı verir. Geliştiricilerin doğrudan işlem yöneticisiyle etkileşim kurması gerekmez. Bunun yerine, arabirimleri, ortak davranışı ve yardımcı sınıflarını tanımlayan ortak bir altyapı ad alanı tarafından System.Transactions sağlanır.

İşlemi aynı bilgisayardaki başka bir uygulama etki alanındaki bir nesneye (işlem ve makine sınırları arasında dahil) sağlamak istediğinizde, System.Transactions altyapı işlemi Microsoft Dağıtılmış İşlem Düzenleyicisi (MSDTC) tarafından yönetilecek şekilde otomatik olarak yükseltir. Başka bir kalıcı Kaynak Yöneticisi listeleme yükseltme de oluşur. İlerletildiğinde, işlem tamamlanıncaya kadar yükseltilmiş durumunda yönetilir.

System.Transactions İşlem ve MSDTC işlemi arasında, Yükseltilebilir Tek Aşamalı Liste (PSPE) aracılığıyla kullanılabilir hale gelen bir aracı işlem türü vardır. PSPE olan başka bir önemli yönteminde System.Transactions performansını iyileştirme için. Farklı bir uygulama etki alanında, işlemde veya bilgisayarda bulunan uzak dayanıklı kaynağın bir MSDTC işlemine yükseltilmesine neden olmadan bir System.Transactions işleme katılmasını sağlar. PSPE hakkında daha fazla bilgi için bkz . Bir İşlemde Kaynakları Katılımcı Olarak Listeleme.

Yükseltme nasıl başlatılır

MSDTC ayrı bir işlemde bulunduğundan ve bir işlemin MSDTC'ye iletilmesi işlem genelinde ileti gönderilmesine neden olduğundan işlem yükseltme performansı azaltır. Performansı geliştirmek için MSDTC'ye yükseltmeyi geciktirmeli veya bundan kaçınmalısınız; bu nedenle, yükseltmenin nasıl ve ne zaman başlatıldığını bilmeniz gerekir.

Altyapı geçici kaynakları ve tek aşamalı bildirimleri destekleyen en fazla bir dayanıklı kaynağı işlediği sürece System.Transactions , işlem altyapının System.Transactions sahipliğinde kalır. İşlem yöneticisi yalnızca aynı uygulama etki alanında bulunan ve günlüğe kaydetmenin (işlem sonucunu diske yazmanın) gerekli olmadığı kaynaklara erişim sağlar. Altyapının System.Transactions işlemin sahipliğini MSDTC'ye aktarmasına neden olan bir yükseltme şu durumlarda gerçekleşir:

  • Tek aşamalı bildirimleri desteklemeyen en az bir dayanıklı kaynak işleme eklenir.

  • Tek aşamalı bildirimleri destekleyen en az iki dayanıklı kaynak işleme eklenir. Örneğin, SQL Server 2005 ile tek bir bağlantının listelenmesi, bir işlemin yükseltilmesine neden olmaz. Ancak, veritabanının listelenmesine neden olan bir SQL Server 2005 veritabanına ikinci bir bağlantı açtığınızda, System.Transactions altyapı işlemin ikinci dayanıklı kaynağı olduğunu algılar ve bunu bir MSDTC işlemine iletir.

  • İşlemi farklı bir uygulama etki alanına veya farklı bir işleme "hazırlama" isteği çağrılır. Örneğin, bir uygulama etki alanı sınırında işlem nesnesinin seri hale getirilmesi. İşlem nesnesi değere göre sıralanmış durumdadır; başka bir deyişle, bir uygulama etki alanı sınırından (aynı işlemde bile) geçirme girişimi işlem nesnesinin seri hale getirilmesiyle sonuçlanır. Parametre olarak alan Transaction uzak bir yöntemde çağrı yaparak işlem nesnelerini geçirebilir veya uzak işlem hizmet veren bir bileşene erişmeyi deneyebilirsiniz. Bu işlem nesnesini serileştirir ve uygulama etki alanı genelinde bir işlem serileştirilirken olduğu gibi bir yükseltmeyle sonuçlanır. Dağıtılıyor ve yerel işlem yöneticisi artık yeterli değil.

Aşağıdaki tablo yükseltme sırasında oluşturulan tüm olası özel durumları listeler.

Özel durum türü Koşul
InvalidOperationException yalıtım düzeyine eşit Snapshotbir işlemi yükseltme girişimi.
TransactionAbortedException İşlem yöneticisi çalışmıyor.
TransactionException Yükseltme başarısız olur ve uygulama durduruldu.