Başkasının rehberinden alıntı yapacağım: Gerçek geliştirme çalışmasında, bir olay çalıştırın ve ardından başka bir arayüz çağırarak veri eklediniz; işlem mantığında bir istisna varsa, daha önce eklenen veri gereksiz veriye dönüşür, İstediğimiz şey, tüm yöntemi bir işlem olarak tanımlayabilmek ve TransactionScope sınıfı, işlemle etkileşime girmek zorunda kalmamanızı sağlayan basit bir yöntem sağlar. bir kod bloğunu işlemde yer alan olarak işaretlemek. TransactionScope nesnesi bir işlem oluşturur ve işlemi İşlem sınıfının Güncel özelliğine ayarlar.
1. TransactionScope'un Avantajları 1. Kullanımı daha kolay. TransactionScope, işlemleri dikkate almadan veri erişim katmanı kodu yazabilmeniz ancak iş katmanındaki işlemleri kontrol etmenizi sağlayan örtük işlemleri uygulayabilir. 2. Veritabanları çapraz veya MSMQ gibi dağıtık işlemler uygulanabilir.
2. İşlem Kapsamı'nın Dezavantajları 1. Maliyet performansı yüksek değildir. Örneğin, "Kapsam"da sadece bir kütüphanenin işlemlerini kontrol edersiniz. "TransactionScope" kullanmak biraz israf. 2. Normal koşullarda, "TransactionScope" kullandığınız sürece MSDTC'yi yapılandırmanız, bir güvenlik duvarı kurmanız ve 139 numaralı portu açmanız gerekir. Bu port değiştirilemez
3. Dağıtık işlemler kullanmak zorundaysanız, bunu düşünmelisiniz 1. Bu işlemin işlemi dahil olması gerekiyor mu? Bu adım tamamlanmazsa veya başarısız olursa, tüm işlemi geri almak değer mi? Zarif bir tazminat veya hata toleransı ölçümü yok mu? 2. Dağıtık işlemler kaç puan içerir? Büyük bir gerçek zamanlı işlem dizisi olmalı mı? Bazı noktaları bildirim işlemleriyle sadeleştiremez misiniz? 3. Dağıtık bir işlem başlattıktan sonra, bu işlemler işlemle ilgili olmayan işlemler yapmaya devam ettiniz mi? (örneğin, veri okuma, hesaplama, kullanıcının mesaj döndürmesini beklemek, diğer modüllerin çağrı dönüşünü beklemek vb.) 4. İşlemde bazı okuma işlemlerini saymadın mı? İşleme seçilmiş bir operasyon dahil ettiğinizde bu kolayca yapılacak bir hatadır. 5. Tüm işlemler tamamlandıktan sonra operasyonunuzun bazı adımları gerçekleştirilebilir. Bu tür bir işlemin belirgin bildirim özellikleri vardır. Bildirim işlemleri şöyle diyor: Size bir bildirim veriyorum ve bildirimin size ulaşacağını garanti ediyorum; Bu bildirimi almalı ve işlenmiş olduğundan emin olmalısın, ancak ben size bildirir bildirmez bununla uğraşmak zorunda değilsiniz. Bu operasyon elbette başka bir görevle yapılabilir.
4. Dağıtılmış işlemler kullanılırken aşağıdaki noktalara dikkat edin 1: İşleme katılan makinenin dağıtık işlem desteğini etkinleştirdiğinden emin olun. 2: Eğer makinede güvenlik duvarı açıksa, msdtc sürecini istisna olarak ayarlamanız gerekir. 3: İşleme katılan makine alan sınırını geçemez (eğer alanlar arası ise, Microsoft şu anda kesin bir çözüme sahip değildir); 4: Dağıtık işlemleri yalnızca birden fazla veritabanınız olduğunda kullanın, aynı veritabanı ise SqlTransaction kullanmak en iyisidir. 1. Önce System.Transactions referansını ekleyin (Net assembly eklemeniz gerekiyor)
C# çağrısındaki kod şöyledir:
Bu dağıtık işlem sınıfını açıklayan blogların adresi çok açıktır:http://www.cnblogs.com/artech/archive/2010/01/31/1660356.html
2. Web sunucusu ve SQL sunucu ortamı yapılandırmasını ayarlayın
Kontrol Paneli - > Sistemleri ve Güvenlik - > Yönetim Araçları - > Bileşen Hizmetleri (Bu hem WEB hem de SQL sunucuları için gereklidir)
Kontrol Paneli - > Sistemler ve Güvenlik - > Yönetim Araçları - > Hizmetleri
(Bu hem WEB hem de SQL sunucuları için gereklidir)
Kontrol Paneli - > Sistem ve Güvenlik - Windows Güvenlik Duvarı >
(Bu hem WEB hem de SQL sunucuları için gereklidir)
3. MSSQL yapılandırması
Sunucu bağlantıları için, sağ tıklayın - > özellikler
4. Hostları yapılandırmak (sadece WEB sunucusunu yapılandırmak, değilse SQL sunucusunda da yapılandırmak)
C:\Windows\System32\drivers\etc hosts dosyası, Notepad ile açılır (SQL sunucu bilgisi WEB sunucusunda Hosts dosyasında yapılandırılmalıdır) (Test başarısız olursa, web sunucusunun bilgilerini SQL sunucusunda Hosts dosyasında yapılandırın)
|