Aracılığıyla paylaş


İstek-Yanıt Bağıntısı

İstek-yanıt bağıntısı, bir Receive/SendReply iş akışı hizmetinde iki yönlü işlem uygulamak için bir çift ve başka bir Send/ReceiveReply Web hizmetinde iki yönlü işlemi çağıran bir çiftle birlikte kullanılır. WCF hizmetinde iki yönlü bir işlem çağrılırken, hizmet geleneksel bir kesinlik temelli kod tabanlı Windows Communication Foundation (WCF) hizmeti olabileceği gibi bir iş akışı hizmeti de olabilir. İstek-yanıt bağıntısını kullanmak için gibi BasicHttpBindingiki yönlü bir bağlama kullanılmalıdır. İster çift yönlü bir işlem çağırın ister uygulayın, bağıntı başlatma adımları benzerdir ve bu bölümde ele alınmıştır.

Receive/SendReply ile İki Yönlü İşlemde Bağıntı Kullanma

Bir Receive/SendReply iş akışı hizmetinde iki yönlü bir işlem uygulamak için çift kullanılır. Çalışma zamanı, yanıtın doğru çağırana gönderildiğinden emin olmak için istek-yanıt bağıntısını kullanır. bir iş akışı, iş akışı hizmetleri için geçerli olan kullanılarak WorkflowServiceHostbarındırıldığında, varsayılan bağıntı başlatma yeterlidir. Bu senaryoda, bir iş akışı tarafından bir Receive/SendReply çift kullanılır ve belirli bir bağıntı yapılandırması gerekmez.

Receive StartOrder = new Receive  
{  
    CanCreateInstance = true,  
    ServiceContractName = OrderContractName,  
    OperationName = "StartOrder"  
};  
  
SendReply ReplyToStartOrder = new SendReply  
{  
    Request = StartOrder,  
    Content = … // Contains the return value, if any.  
};  
  
// Construct a workflow using StartOrder and ReplyToStartOrder.  

İstek-Yanıt Bağıntısını Açıkça Başlatma

Diğer iki yönlü işlemler paralelse, bağıntı açıkça yapılandırılmalıdır. Bu, ve belirterek CorrelationHandle veya içine CorrelationScopeyerleştirilerek Receive/SendReply yapılabilir.RequestReplyCorrelationInitializer Bu örnekte, istek-yanıt bağıntısı bir Receive/SendReply çiftte yapılandırılır.

Variable<CorrelationHandle> RRHandle = new Variable<CorrelationHandle>();  
  
Receive StartOrder = new Receive  
{  
    CanCreateInstance = true,  
    ServiceContractName = OrderContractName,  
    OperationName = "StartOrder",  
    CorrelationInitializers =  
    {  
        new RequestReplyCorrelationInitializer  
        {  
            CorrelationHandle = RRHandle  
        }  
    }  
};  
  
SendReply ReplyToStartOrder = new SendReply  
{  
    Request = StartOrder,  
    Content = … // Contains the return value, if any.  
};  
  
// Construct a workflow using StartOrder and ReplyToStartOrder.  

Bağıntıyı açıkça yapılandırmak yerine bir CorrelationScope etkinlik kullanılabilir. CorrelationScope , içerdiği mesajlaşma etkinlikleri için örtük CorrelationHandle bir sağlar. Bu örnekte, bir Receive/SendReply çift içinde yer alır.CorrelationScope Açık bağıntı yapılandırması gerekmez.

Receive StartOrder = new Receive  
{  
    CanCreateInstance = true,  
    ServiceContractName = OrderContractName,  
    OperationName = "StartOrder"  
};  
  
SendReply ReplyToStartOrder = new SendReply  
{  
    Request = StartOrder,  
    Content = … // Contains the return value, if any.  
};  
  
CorrelationScope s = new CorrelationScope  
{  
    Body = new Sequence  
    {  
        Activities =
        {  
            StartOrder,  
            // Activities that create the reply.  
            ReplyToStartOrder  
        }  
    }  
};  
  
// Construct a workflow using the CorrelationScope.  

Ek bağıntılar gerekiyorsa, istenen CorrelationInitializer türler kullanılarak CorrelationInitializers ilgili mesajlaşma etkinliklerinin özelliği kullanılarak yapılandırılabilirler.

Send/ReceiveReply ile İki Yönlü İşlemde Bağıntı Kullanma

Etkinlik yalnızca tarafından SendWorkflowServiceHostbarındırılan Receive bir iş akışı hizmetinde kullanılabilirken, Send/ReceiveReply çift bir Web hizmetinde bir yöntemi çağırması gereken herhangi bir iş akışında kullanılabilir. İş akışı kullanılarak WorkflowServiceHost barındırılıyorsa, önceki bölümde açıklanan varsayılan bağıntı uygulanır, ancak uygulanmıyorsa, bağıntı açıkça istenen CorrelationInitializer ve CorrelationHandlekullanılarak veya örtük tanıtıcı yönetimi CorrelationScopekullanılarak yapılandırılmalıdır.

İki yönlü işlemleri olan bir hizmette Hizmet Başvurusu Ekle kullanılırken, açıkça belirtilen İstek/Yanıt bağıntısıyla bir Send/ReceiveReply çift etkinliğini dahili olarak sarmalayan etkinlikler oluşturulur.