Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ad alanı, System.Transactions bu ad alanı kullanılarak oluşturulan işlem nesneleri ile COM+ aracılığıyla oluşturulan işlemler arasında birlikte çalışabilirliği destekler.
COM+ ile birlikte çalışabilirlik düzeyini belirtmek için yeni bir EnterpriseServicesInteropOption örneği oluşturduğunuzda TransactionScope numaralandırmasını kullanabilirsiniz.
Varsayılan olarak, uygulama kodunuz statik Current özelliği denetlediğinde, System.Transactions aksi takdirde geçerli olabilecek bir işlemi veya TransactionScopeCurrent olduğunu belirten bir nesnesini aramaya çalışır. Bunlardan birini bulamazsa, System.Transactions işlem için COM+ bağlamını sorgular. System.Transactions COM+ bağlamından bir işlem bulabilir, unutmayın ki System.Transactions için yerel olan transaksiyonları yine de tercih eder.
Birlikte çalışabilirlik düzeyleri
Numaralandırma aşağıdaki EnterpriseServicesInteropOption birlikte çalışabilirlik düzeylerini tanımlar—NoneFull ve Automatic.
Bu sınıf, TransactionScope parametresini kabul eden oluşturucular sağlar EnterpriseServicesInteropOption.
Noneadından da anlaşılacağı gibi, bağlamlar ve işlem kapsamları arasında System.EnterpriseServices birlikte çalışabilirlik olmadığını belirtir. TransactionScope kullanarak bir None nesnesi oluşturulduktan sonra, Current üzerinde yapılan değişiklikler COM+ bağlamında yansıtılmaz. Benzer şekilde, COM+ bağlamındaki işlemde yapılan değişiklikler Current yansıtılmaz. Bu, ek eşitleme gerektiremediğinden için System.Transactions en hızlı işlem modudur. None değeri, TransactionScope parametresini almayan tüm oluşturucularla birlikte EnterpriseServicesInteropOption tarafından kullanılan varsayılan değerdir.
Ortamdaki işleminizi System.EnterpriseServices işlemlerle birleştirmek istiyorsanız, ya Full ya da Automatic kullanmanız gerekir. Bu değerlerin her ikisi de bileşenleri olmayan hizmetler adlı bir özelliği kullanır ve bu nedenle bunları kullanırken Windows XP Service Pack 2 veya Windows Server 2003 üzerinde çalışıyor olmanız gerekir.
Fullve System.Transactions için System.EnterpriseServices ortam işlemlerinin her zaman aynı olduğunu belirtir. Yeni bir System.EnterpriseServices işlem bağlamı oluşturulmasına ve TransactionScope için geçerli olan işlemin bu bağlamda geçerli olmasına yol açar. Bu nedenle Current içindeki işlem, Transaction içindeki işlemle tamamen eşitleniyor. Yeni COM+ bağlamlarının oluşturulması gerekebileceğinden bu değer bir performans cezasına neden olur.
Automatic aşağıdaki gereksinimleri belirtir:
İşaretlendiğinde Current , System.Transactions varsayılan bağlam dışında bir bağlamda çalıştığını algılarsa COM+ bağlamındaki işlemleri desteklemelidir. Varsayılan bağlamın bir işlem içeremeyeceğini unutmayın. Bu nedenle, varsayılan bağlamda, Automatic hizmetine rağmen, System.Transactions tarafından kullanılan iş parçacığı yerel depolamasında depolanan işlem Current için döndürülür.
Yeni TransactionScope bir nesne oluşturulursa ve oluşturma varsayılan bağlam dışında bir bağlamda gerçekleşirse, nesne için TransactionScope geçerli olan işlem COM+ içinde yansıtılmalıdır. Bu durumda, Automatic yeni bir COM+ bağlamı oluşturması bakımından Full gibi davranır.
Ayrıca, Current hem Full hem de Automatic içinde ayarlandığında, bu modların her ikisi de Current'in doğrudan ayarlanamayacağını belirtir. Bir Current oluşturma dışında, TransactionScope'yu doğrudan ayarlama girişimleri bir InvalidOperationException ile sonuçlanır. EnterpriseServicesInteropOption Numaralandırma değeri, hangi değerin kullanılacağını açıkça belirtmeyen yeni işlem kapsamları tarafından devralınır. Örneğin, TransactionScope ile yeni bir Full nesne oluşturur ve ardından ikinci bir TransactionScope nesne oluşturur, ancak bir EnterpriseServicesInteropOption değeri belirtmezseniz, ikinci TransactionScope nesnede de bir Full bulunur.
Özetle, yeni bir işlem kapsamı oluştururken aşağıdaki kurallar geçerlidir:
Current bir işlem olup olmadığını görmek için denetlendi. Bu denetim şu sonuçlara neden olur:
Kapsam olup olmadığını görmek için bir kontrol.
Kapsam varsa, kapsam ilk oluşturulduğunda geçirilen EnterpriseServicesInteropOption numaralandırmanın değeri kontrol edilir.
EnterpriseServicesInteropOption Nümerasyon olarak ayarlanırsa Automatic, COM+ işlemi (System.EnterpriseServices İşlem), yönetilen iş parçacığı yerel depolamada System.Transactions işlemden önce gelir.
Değer None olarak ayarlandığında, yönetilen iş parçacığı yerel depolamadaki System.Transactions işlemi öncelik kazanır.
Değer ise Full, yalnızca bir işlem vardır ve bu bir COM+ işlemidir.
Oluşturucu tarafından TransactionScopeOption geçirilen numaralandırmanın değeri TransactionScope denetlendi. Bu, yeni bir işlem oluşturulması gerekip gerekmediğini belirler.
Yeni bir işlem oluşturulacaksa aşağıdaki değerler EnterpriseServicesInteropOption şu şekilde sonuçlanır:
Full: COM+ bağlamıyla ilişkilendirilmiş bir işlem oluşturulur.
None: bir System.Transactions işlem oluşturulur.
Automatic: COM+ bağlamı varsa, bir işlem oluşturulur ve bağlama eklenir.
Aşağıdaki tabloda Enterprise Services (ES) bağlamı ve EnterpriseServicesInteropOption numaralandırmasının kullanılmasıyla bir işlem gerektiren işlem kapsamı gösterilmektedir.
| ES Bağlamı | Hiç kimse | Otomatik | Tamamen dolu |
|---|---|---|---|
| Varsayılan bağlam | Varsayılan bağlam | Varsayılan bağlam | Yeni oluştur işlem bağlamı |
| Varsayılan olmayan bağlam | Müşterinin bağlamını korumak | Yeni işlem bağlamı oluşturma | Yeni işlem bağlamı oluşturma |
Aşağıdaki tabloda, belirli bir System.EnterpriseServices bağlamda ve EnterpriseServicesInteropOption sabit listesi belirtilerek işlem gerektiren bir işlem kapsamı verildiğinde ortam işleminin ne olduğu gösterilmektedir.
| ES Bağlamı | Hiç kimse | Otomatik | Tamamen dolu |
|---|---|---|---|
| Varsayılan bağlam | ST | ST | ES |
| Varsayılan olmayan bağlam | ST | ES | ES |
Yukarıdaki tabloda:
ST, kapsamın ortam işleminin, mevcut olabilecek herhangi bir System.Transactions bağlamındaki işlemden ayrı olarak, System.EnterpriseServices tarafından yönetileceği anlamına gelir.
ES, kapsamın ortam işleminin bağlamın işlemiyle System.EnterpriseServices aynı olduğu anlamına gelir.