İş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 true
olarak 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.