Aracılığıyla paylaş


ServiceModel İşlem Öznitelikleri

Windows Communication Foundation (WCF), bir WCF hizmeti için işlemlerin davranışını yapılandırmanıza olanak tanıyan üç standart System.ServiceModel öznitelikte özellikler sağlar:

TransactionFlowAttribute

özniteliği, TransactionFlowAttribute bir hizmet sözleşmesindeki bir işlemin istemciden gelen işlemleri kabul etme istekliliğini belirtir. özniteliği bu denetimi şu özelliğe sahiptir: İşlemler, gelen bir işlemin Mandatory, Allowedveya NotAllowedolup olmadığını belirtmek için numaralandırmayı kullanırTransactionFlowOption.

Bu, hizmet işlemlerini bir istemciyle dış etkileşimlerle ilişkilendiren tek özniteliktir. Aşağıdaki bölümlerde açıklanan öznitelikler, işlemin yürütülmesinde işlemlerin kullanımıyla ilgilidir.

ServiceBehaviorAttribute

özniteliği, ServiceBehaviorAttribute bir hizmet sözleşmesi uygulamasının iç yürütme davranışını belirtir. Bu özniteliğin işleme özgü özellikleri şunlardır:

  • TransactionAutoCompleteOnSessionClose , oturum kapatıldığında tamamlanmamış bir işlemin tamamlanıp tamamlanmayacağını belirtir. Bu özelliğin varsayılan değeridir false. Bu özellik ise trueve gelen oturum ağ veya istemci hataları nedeniyle kapatmak yerine düzgün bir şekilde kapatıldıysa, tamamlanmamış tüm işlemler başarıyla tamamlanır. Aksi takdirde, bu özellik false ise veya oturum düzgün bir şekilde kapatılmamışsa, tamamlanmamış işlemler oturum kapatıldığında geri alınır. Bu özellik ise true, gelen kanalın oturum tabanlı olması gerekir.

  • ReleaseServiceInstanceOnTransactionComplete bir işlem tamamlandığında temel alınan hizmet örneğinin serbest bırakılıp bırakılmayacağını belirtir. Bu özelliğin varsayılan değeridir true. Sonraki gelen ileti, yeni bir temel alınan örneğin oluşturulmasına neden olur ve önceki örneğin tutabileceği işlem başına durum atılır. Hizmet örneğini yayımlamak, hizmetin gerçekleştirilen bir iç eylemdir ve istemcilerin oluşturabileceği mevcut bağlantılar veya oturumlar üzerinde hiçbir etkisi yoktur. Bu işlev, COM+ tarafından sunulan tam zamanında etkinleştirme özelliğine eşdeğerdir. özelliği ise true, ConcurrencyMode değerine eşit Singleolmalıdır. Aksi takdirde, hizmet başlatma sırasında geçersiz bir yapılandırma doğrulama özel durumu oluşturur.

  • TransactionIsolationLevel hizmet içindeki işlemler için kullanılacak yalıtım düzeyini belirtir; bu özellik değerlerden birini IsolationLevel alır. Yerel yalıtım düzeyi özelliği dışında Unspecifiedbir özellikse, gelen bir işlemin yalıtım düzeyi bu yerel özelliğin ayarıyla eşleşmelidir. Aksi takdirde, gelen işlem reddedilir ve bir hata istemciye geri gönderilir. ise trueve hiçbir işlem akışı yapılmazsaTransactionScopeRequired, bu özellik yerel olarak oluşturulan işlem için kullanılacak değeri belirlerIsolationLevel. olarak ayarlanırsa IsolationLevelUnspecifiedIsolationLevelSerializable kullanılır.

  • TransactionTimeout , hizmette oluşturulan yeni bir işlemin tamamlanması gereken süreyi belirtir. Bu süreye ulaşılırsa ve işlem tamamlanmamışsa iptal edilir. TimeSpan, olarak ayarlanmış true ve yeni bir işlemin oluşturulduğu tüm işlemler TransactionScopeRequired için zaman aşımı olarak TransactionScope kullanılır. zaman aşımı, işlemin oluşturulmasından iki aşamalı işleme protokolündeki 1. aşamanın tamamlanmasına kadar izin verilen en uzun süredir. Kullanılan zaman aşımı değeri her zaman özellik ile transactionTimeout yapılandırma ayarı arasındaki TransactionTimeout düşük değerdir.

OperationBehaviorAttribute

OperationBehaviorAttribute özniteliği, hizmet uygulamasındaki yöntemlerin davranışlarını belirtir. İşlemin belirli yürütme davranışını belirtmek için bunu kullanabilirsiniz. Bu özniteliğin özellikleri, hizmet sözleşmesinin Web Hizmeti Açıklama Dili (WSDL) açıklamasını etkilemez ve yalnızca WCF programlama modelinin, geliştiricilerin aksi takdirde kendilerini uygulamak zorunda oldukları ortak özellikleri etkinleştiren öğeleridir.

Bu öznitelik, işleme özgü aşağıdaki özelliklere sahiptir:

  • TransactionScopeRequired bir yöntemin etkin bir işlem kapsamında yürütülmesi gerekip gerekmediğini belirtir. Varsayılan değer: false. OperationBehaviorAttribute Özniteliği bir yöntem için ayarlanmadıysa, yöntemin bir işlemde yürütülmediği anlamına da gelir. İşlem için işlem kapsamı gerekli değilse, ileti üst bilgisinde bulunan herhangi bir işlem etkinleştirilmez ve öğesinin IncomingMessagePropertiesOperationContextöğesi olarak kalır. İşlem için işlem kapsamı gerekiyorsa, işlemin kaynağı aşağıdakilerden birinden türetilir:

    • İstemciden bir işlem akışı yapılırsa, yöntem bu dağıtılmış işlem kullanılarak oluşturulan bir işlem kapsamı altında yürütülür.

    • Kuyruğa alınan aktarımda, iletiyi sıralamak için kullanılan işlem kullanılır. Kullanılan işlemin akışı yapılan bir işlem olmadığını ve iletinin özgün göndereni tarafından sağlanmadığını unutmayın.

    • Özel aktarım, kullanımı TransportTransactionPropertyaracılığıyla bir işlem sağlayabilir.

    • Yukarıdakilerden hiçbiri bir işlem için dış kaynak sağlamazsa, yöntemini çağırmadan hemen önce yeni Transaction bir örnek oluşturulur.

  • TransactionAutoComplete , işlenemeyen özel durumlar oluştuğunda yöntemin yürütüldiği işlemin otomatik olarak tamamlanıp tamamlanmayacağını belirtir. Bu özellik ise true, kullanıcı yöntemi özel durum oluşturmadan döndürürse, çağıran altyapı işlemi otomatik olarak "tamamlandı" olarak işaretler. Bu özellik ise false, işlem örneğe eklenir ve yalnızca istemcisi bu özelliğe eşit trueolan sonraki bir yöntemi çağırırsa veya sonraki bir yöntem açıkça çağırırsa SetTransactionComplete"tamamlandı" olarak işaretlenir. Bu sonuçlardan herhangi birinin gerçekleştirilememesi durumunda işlem hiçbir zaman "tamamlanmaz" ve özelliği olarak ayarlanmadığı truesürece TransactionAutoCompleteOnSessionClose kapsanan iş işlenmez. Bu özellik olarak trueayarlandıysa, oturumu olan bir kanal kullanmanız ve olarak InstanceContextMode ayarlanması PerSessiongerekir.