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.
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.
TransactionFlowBelirli bağlamadaki bağlama özelliği.TransactionFlowProtocolBelirli bağlamadaki bağlama özelliği.TransactionFlowProtocolBağ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 senaryolar için kullanışlıdır ve bir hizmetin dağıtıcısı önceden WS-AT protokol hizmetinin yerel olarak devre dışı bırakıldığını veya mevcut ağ topolojisinin WS-AT kullanımını desteklemediğini bilir.
Aşağıdaki tabloda, bu çeşitli birleşimler kullanılarak oluşturulabilecek farklı işlem akışı türleri gösterilmektedir.
| TransactionFlow bağlayıcı |
TransactionFlow bağlama özelliği | TransactionFlowProtocol bağlama protokolü | İşlem akışı türü |
|---|---|---|---|
| Zorunlu | doğru | WS-AT | İşlem, birlikte çalışabilir WS-AT formatında akmalıdır. |
| Zorunlu | doğru | 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 | doğru | WS-AT | İşlem uyumlu WS-AT formatında yönlendirilebilir. |
| İzin Verilir | doğru | OleTransactions | İşlem WCF OleTransactions biçiminde akabilir. |
| İzin Verilir | yanlış | Tüm değerler | Bir işlem akışı yapılmaz. |
| İzin Verilmiyor | 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 | İzin Verilmiyor |
MustUnderstand eşittir false. |
Üst bilgi anlaşılmadığından reddedildi |
| İşlem yok | Zorunlu | Mevcut Değil | İşlem gerektiğinden reddedildi |
| İşlem yok | İzin Verilir | Mevcut Değil | İşlem |
| İşlem yok | İzin Verilmiyor | Mevcut Değil | İş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, hizmet işleminin bir işlem üst bilgisini kabul ettiği düzeyi belirleyen TransactionFlowAttribute tarafından elde 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. Eğer NotAllowed dışında 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ığı mevcut bağlamaların çoğu, belirli bir bağlamayı gelen işlemleri kabul edecek şekilde yapılandırmanıza izin veren transactionFlow 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österir.
//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.
Politika Beyanları
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 istek-yanıt 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, MustUnderstand ve true eşit olacak şekilde 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şlem üzerinde birden fazla işlem iddiası bulunan ilke belgeleri geçersiz sayılır 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.