Aracılığıyla paylaş


Bağıntı Genel Bakış

Bağıntı, iş akışı hizmet iletilerini birbiriyle veya ilk isteği yanıtlama veya belirli bir sipariş kimliği gibi bir sipariş işleme iş akışının kalıcı durumuna ilişkin uygulama örneği durumuyla ilgili mekanizmadır. Bu konu, bağıntıya genel bir bakış sağlar. Bu bölümdeki diğer konular, her bağıntı türü için ek bilgi sağlar.

Bağıntı Türleri

Bağıntı protokol tabanlı veya içerik tabanlı olabilir. Protokol tabanlı bağıntılar, iletiler arasındaki eşlemeyi sağlamak için ileti teslim altyapısı tarafından sağlanan verileri kullanır. Protokol tabanlı bağıntı kullanılarak bağıntılı iletiler, bellekteki bir nesne kullanılarak (örneğin RequestContext, veya aktarım protokolü tarafından sağlanan bir belirteçle) birbirleriyle ilişkilendirilir. İçerik tabanlı bağıntılar, uygulama tarafından belirtilen verileri kullanarak iletileri birbiriyle ilişkilendirebilir. İçerik tabanlı bağıntı kullanılarak bağıntılı iletiler, iletideki müşteri numarası gibi bazı uygulama tanımlı veriler tarafından birbiriyle ilişkilendirilir.

Bağıntıya katılan etkinlikler, mesajlaşma etkinliklerini birbirine bağlamak için bir CorrelationHandle kullanır. Örneğin, Send bir hizmeti çağırmak için kullanılan bir ve hizmetten geri çağırma almak için kullanılan bir sonraki Receive , aynı CorrelationHandlepaylaşın. Bu temel desen, bağıntının içerik tabanlı mı yoksa protokol tabanlı mı olduğu fark etmeksizin kullanılır. Bağıntı tutamacı her etkinlikte açıkça ayarlanabilir veya etkinlikler bir CorrelationScope etkinlikte yer alabilir. içinde CorrelationScope bulunan etkinliklerin bağıntı tanıtıcıları tarafından CorrelationScope yönetilir ve açıkça ayarlanmasını gerektirmez CorrelationHandle . Kapsam CorrelationScope , istek-yanıt bağıntısı ve ek bir bağıntı türü için yönetim sağlar CorrelationHandle . kullanılarak WorkflowServiceHost barındırılan iş akışı hizmetleri, etkinlikle aynı varsayılan bağıntı yönetimine CorrelationScope sahiptir. Bu varsayılan bağıntı yönetimi genellikle birçok senaryoda, bir CorrelationScope veya bir iş akışı hizmetindeki mesajlaşma etkinliklerinin, paralel olarak iki etkinlik veya iki etkinlik ve ardından iki ReceiveSendReceive etkinlik gibi birden çok mesajlaşma etkinliği paralel veya çakışmadığı sürece bunların ayarlanmasını gerektirmediği CorrelationHandle anlamına gelir. Varsayılan bağıntı hakkında daha fazla bilgi, bu bölümdeki her bir bağıntı türünü kapsayan konularda sağlanır. Mesajlaşma etkinlikleri hakkında daha fazla bilgi için bkz . Mesajlaşma Etkinlikleri ve Nasıl yapılır: Mesajlaşma Etkinlikleri ile İş Akışı Hizmeti Oluşturma.

Protokol Tabanlı Bağıntı

Protokol tabanlı bağıntı, iletileri birbiriyle ve uygun örnekle ilişkilendirmek için aktarım mekanizmasını kullanır. Sistem tarafından sağlanan bazı protokol bağıntıları istek-yanıt bağıntısını ve bağlam tabanlı bağıntıyı içerir. İstek-yanıt bağıntısı, tek bir mesajlaşma etkinliği çiftini ilişkilendirmek için kullanılır ve bir ile eşleştirilmiş veya ile eşlenmiş SendReplybir gibi Send iki yönlü bir ReceiveReplyReceive işlem oluşturur. Visual Studio İş Akışı Tasarım Aracı, bu düzeni hızla uygulamak için bir dizi etkinlik şablonu da sağlar. Bağlam tabanlı bağıntı, .NET Bağlam Değişimi Protokolü Belirtimi'nde açıklanan bağlam değişimi mekanizmasını temel alır. Bağlam tabanlı bağıntıyı kullanmak için, gibi BasicHttpContextBindingWSHttpContextBinding bağlam tabanlı bir bağlama veya NetTcpContextBinding uç noktada kullanılmalıdır.

Protokol bağıntısı hakkında daha fazla bilgi için bkz . Dayanıklı Çift Yönlü ve İstek-Yanıt. Visual Studio İş Akışı Tasarım Aracı etkinlik şablonlarını kullanma hakkında daha fazla bilgi için bkz. Mesajlaşma Etkinlikleri. Örnek kod için bkz . NetContextExchangeCorrelation örneği.

İçerik Temelli Bağıntı

İçerik tabanlı bağıntı, iletideki bazı bilgileri belirli bir örnekle ilişkilendirmek için kullanır. Protokol tabanlı bağıntıdan farklı olarak, içerik tabanlı bağıntı, uygulama yazarının bu verilerin ilgili her iletide nerede bulunabileceğini açıkça belirtmesini gerektirir. İçerik tabanlı bağıntı kullanan etkinlikler, MessageQuerySetkullanarak bu ileti verilerini belirtir. İçerik tabanlı bağıntı, gibi BasicHttpContextBindingbağlam bağlamalarından birini kullanmayan hizmetlerle iletişim kurarken kullanışlıdır.

Ayrıca bkz.