İşlem Akışını Etkinleştirme

Windows Communication Foundation (WCF), işlem akışını denetlemek için son derece esnek seçenekler sağlar. Bir hizmetin işlem akışı ayarları, özniteliklerin ve yapılandırmanın bir bileşimi kullanılarak ifade edilebilir.

İşlem Akışı Ayarlar

İşlem akışı ayarları, aşağıdaki üç değerin kesişimi sonucunda bir hizmet uç noktası için oluşturulur:

  • TransactionFlowAttribute Hizmet sözleşmesindeki her yöntem için belirtilen öznitelik.

  • TransactionFlow Belirli bağlamadaki bağlama özelliği.

  • TransactionFlowProtocol Belirli bağlamadaki bağlama özelliği. TransactionFlowProtocol Bağlama özelliği, bir işlem akışı için kullanabileceğiniz iki farklı işlem protokolü arasından seçim yapmanıza olanak tanır. Aşağıdaki bölümlerde bunların her biri kısaca açıklanmaktadır.

WS-AtomicTransaction Protokolü

WS-AtomicTransaction (WS-AT) protokolü, üçüncü taraf protokol yığınlarıyla birlikte çalışabilirlik gerektiğinde senaryolar için kullanışlıdır.

OleTransactions Protokolü

OleTransactions protokolü, üçüncü taraf protokol yığınlarıyla birlikte çalışabilirlik gerekli olmadığında ve bir hizmetin dağıtıcısı WS-AT protokol hizmetinin yerel olarak devre dışı bırakıldığını veya mevcut ağ topolojisinin WS-AT kullanımını desteklemediğini önceden bildiği senaryolar için kullanışlıdır.

Aşağıdaki tabloda, bu çeşitli birleşimler kullanılarak oluşturulabilecek farklı işlem akışı türleri gösterilmektedir.

Transactionflow

bağlama
TransactionFlow bağlama özelliği TransactionFlowProtocol bağlama protokolü İşlem akışı türü
Zorunlu true WS-AT İşlem birlikte çalışabilir WS-AT biçiminde akmalıdır.
Zorunlu true OleTransactions İşlem WCF OleTransactions biçiminde akmalıdır.
Zorunlu yanlış Uygulanamaz Bu geçersiz bir yapılandırma olduğundan geçerli değil.
İzin Verilir true WS-AT İşlem birlikte çalışabilir WS-AT biçiminde akıtılabilir.
İzin Verilir true OleTransactions İşlem WCF OleTransactions biçiminde akabilir.
İzin Verilir yanlış Tüm değerler Bir işlem akışı yapılmaz.
Notallowed Tüm değerler Tüm değerler Bir işlem akışı yapılmaz.

Aşağıdaki tabloda ileti işleme sonucu özetlemektedir.

Gelen ileti TransactionFlow ayarı İşlem üst bilgisi İleti işleme sonucu
İşlem beklenen protokol biçimiyle eşleşir İzin Verilen veya Zorunlu MustUnderstand eşittir true. İşlem
İşlem beklenen protokol biçimiyle eşleşmiyor Zorunlu MustUnderstand eşittir false. İşlem gerektiğinden reddedildi
İşlem beklenen protokol biçimiyle eşleşmiyor İzin Verilir MustUnderstand eşittir false. Üst bilgi anlaşılmadığından reddedildi
Herhangi bir protokol biçimini kullanan işlem Notallowed MustUnderstand eşittir false. Üst bilgi anlaşılmadığından reddedildi
İşlem yok Zorunlu Yok İşlem gerektiğinden reddedildi
İşlem yok İzin Verilir Yok İşlem
İşlem yok Notallowed Yok İşlem

Bir sözleşmedeki her yöntemin farklı işlem akışı gereksinimleri olabilir ancak işlem akışı protokol ayarının kapsamı bağlama düzeyinde belirlenir. Bu, aynı uç noktayı (ve dolayısıyla aynı bağlamayı) paylaşan tüm yöntemlerin işlem akışına izin veren veya gerektiren aynı ilkeyi ve varsa aynı işlem protokolünü paylaştığı anlamına gelir.

İşlem Akışını Yöntem Düzeyinde Etkinleştirme

İşlem akışı gereksinimleri, bir hizmet sözleşmesindeki tüm yöntemler için her zaman aynı değildir. Bu nedenle WCF, her yöntemin işlem akışı tercihlerinin ifade edilmesine izin veren öznitelik tabanlı bir mekanizma da sağlar. Bu, bir hizmet işleminin işlem üst bilgisini kabul ettiği düzeyi belirten tarafından elde TransactionFlowAttribute edilir. İşlem akışını etkinleştirmek istiyorsanız hizmet sözleşmesi yöntemlerinizi bu öznitelikle işaretlemeniz gerekir. Bu öznitelik, varsayılan değerin TransactionFlowOption olduğu sabit listesi değerlerinden NotAllowedbirini alır. Dışında NotAllowed herhangi bir değer belirtilirse, yöntemin tek yönlü olmaması gerekir. Geliştirici, tasarım zamanında yöntem düzeyinde işlem akışı gereksinimlerini veya kısıtlamalarını belirtmek için bu özniteliği kullanabilir.

İşlem Akışını Uç Nokta Düzeyinde Etkinleştirme

Özniteliğin sağladığı yöntem düzeyi işlem akışı ayarına ek olarak WCF, yöneticilerin TransactionFlowAttribute işlem akışını daha yüksek bir düzeyde denetlemesine olanak sağlayan işlem akışı için uç nokta genelinde bir ayar sağlar.

Bu, bir uç noktanın TransactionFlowBindingElementbağlama ayarlarında gelen işlem akışını etkinleştirmenize veya devre dışı bırakmanıza ve gelen işlemler için istenen işlem protokolü biçimini belirtmenize olanak tanıyan tarafından elde edilir.

Bağlama işlem akışını devre dışı bırakmışsa ancak bir hizmet sözleşmesindeki işlemlerden biri gelen bir işlem gerektiriyorsa, hizmet başlangıcında bir doğrulama özel durumu oluşturulur.

WCF'nin sağladığı ayakta bağlamaların çoğu, belirli bağlamayı transactionFlow gelen işlemleri kabul etmek üzere yapılandırmanızı sağlayan ve transactionProtocol özniteliklerini içerir. Yapılandırma öğelerini ayarlama hakkında daha fazla bilgi için bkz <. bağlama>.

Yönetici veya dağıtıcı, yapılandırma dosyasını kullanarak dağıtım zamanında işlem akışı gereksinimlerini veya kısıtlamalarını yapılandırmak için uç nokta düzeyinde işlem akışını kullanabilir.

Güvenlik

Sistem güvenliğini ve bütünlüğünü sağlamak için, uygulamalar arasında işlem akışı yaparken ileti alışverişlerinin güvenliğini sağlamanız gerekir. İşlem ayrıntılarını aynı işleme katılma hakkı olmayan hiçbir uygulamaya akışla aktarmamalı veya açıklamamalısınız.

Meta veri değişimi kullanarak bilinmeyen veya güvenilmeyen Web hizmetlerine WCF istemcileri oluştururken, bu Web hizmetlerindeki işlemlere yapılan çağrılar mümkünse geçerli işlemi gizlemelidir. Aşağıdaki örnek bunun nasıl yapılacağını göstermektedir.

//client code which has an ambient transaction  
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Suppress))  
{  
    // No transaction will flow to this operation  
    untrustedProxy.Operation1(...);  
    scope.Complete();  
}  
//remainder of client code  

Ayrıca, hizmetler yalnızca kimlik doğrulaması yaptıkları ve yetkilendirdikleri istemcilerden gelen işlemleri kabul etmek üzere yapılandırılmalıdır. Gelen işlemler yalnızca son derece güvenilir istemcilerden geliyorsa kabul edilmelidir.

İlke Onayları

WCF, işlem akışını denetlemek için ilke onaylarını kullanır. İlke onayları, bir hizmetin sözleşmeler, yapılandırma ve öznitelikler toplanarak oluşturulan ilke belgesinde bulunabilir. İstemci, HTTP GET veya WS-MetadataExchange request-reply kullanarak hizmetin ilke belgesini alabilir. İstemciler daha sonra bir hizmet sözleşmesinde hangi işlemlerin işlem akışını destekleyebileceğinizi veya gerektirebileceğini belirlemek için ilke belgesini işleyebilir.

İşlem akışı ilkesi onayları, bir istemcinin bir işlemi temsil etmesi için bir hizmete göndermesi gereken SOAP üst bilgilerini belirterek işlem akışını etkiler. Tüm işlem üst bilgileri ile MustUnderstand eşit trueolarak işaretlenmelidir. Aksi olarak işaretlenmiş üst bilgi içeren tüm ileti SOAP hatasıyla reddedilir.

Tek bir işlemde yalnızca bir işlemle ilgili ilke onayı bulunabilir. Bir işlemde birden fazla işlem onayı olan ilke belgeleri geçersiz kabul edilir ve WCF tarafından reddedilir. Ayrıca, her bağlantı noktası türünün içinde yalnızca tek bir işlem protokolü bulunabilir. Tek bir bağlantı noktası türü içinde birden fazla işlem protokolüne başvuran işlemlere sahip ilke belgeleri geçersiz kabul edilir ve ServiceModel Meta Veri Yardımcı Programı Aracı (Svcutil.exe) tarafından reddedilir. Çıkış iletilerinde veya tek yönlü giriş iletilerinde işlem onayları bulunan ilke belgeleri de geçersiz kabul edilir.