Aracılığıyla paylaş


İstemci Davranışlarını Yapılandırma

Windows Communication Foundation (WCF), davranışları iki şekilde yapılandırıyor: davranış yapılandırmalarına başvurarak ( bir istemci uygulama yapılandırma dosyasının <behavior> bölümünde tanımlanan) veya çağıran uygulamada program aracılığıyla. Bu konuda her iki yaklaşım da açıklanmaktadır.

Yapılandırma dosyası kullanılırken davranış yapılandırması, yapılandırma ayarlarının adlandırılmış bir koleksiyonudur. Her davranış yapılandırmasının adı benzersiz olmalıdır. Bu dize, uç nokta yapılandırmasının behaviorConfiguration özniteliğinde uç noktayı davranışa bağlamak için kullanılır.

Örnek 1

Aşağıdaki yapılandırma kodu, myBehavioradlı bir davranışı tanımlar. İstemci uç noktası bu davranışa behaviorConfiguration özniteliğinde başvurur.

<configuration>  
    <system.serviceModel>  
        <behaviors>  
            <endpointBehaviors>  
                <behavior name="myBehavior">  
                    <clientVia />  
                </behavior>  
            </endpointBehaviors>  
        </behaviors>  
        <bindings>  
            <basicHttpBinding>  
                <binding name="myBinding" maxReceivedMessageSize="10000" />  
            </basicHttpBinding>  
        </bindings>  
        <client>  
            <endpoint address="myAddress" binding="basicHttpBinding" bindingConfiguration="myBinding" behaviorConfiguration="myBehavior" contract="myContract" />  
        </client>  
    </system.serviceModel>  
</configuration>  

Davranışları Program Aracılığıyla Kullanma

Ayrıca, istemciyi açmadan önce uygun Behaviors özelliğini Windows Communication Foundation (WCF) istemci nesnesinde veya istemci kanalı fabrika nesnesinde bularak davranışları program aracılığıyla yapılandırabilir veya ekleyebilirsiniz.

Örnek 2

Aşağıdaki kod örneği, kanal nesnesini oluşturmadan önce Behaviors özelliğinden döndürülen ServiceEndpointEndpoint özelliğine erişerek program aracılığıyla bir davranışın nasıl ekleyebileceğinizi gösterir.

public class Client
{
  public static void Main()
  {
    try
    {
      // Picks up configuration from the config file.
      ChannelFactory<ISampleServiceChannel> factory
        = new ChannelFactory<ISampleServiceChannel>("WSHttpBinding_ISampleService");

      // Add the client side behavior programmatically to all created channels.
      factory.Endpoint.Behaviors.Add(new EndpointBehaviorMessageInspector());

      ISampleServiceChannel wcfClientChannel = factory.CreateChannel();

      // Making calls.
      Console.WriteLine("Enter the greeting to send: ");
      string greeting = Console.ReadLine();
      Console.WriteLine("The service responded: " + wcfClientChannel.SampleMethod(greeting));

      Console.WriteLine("Press ENTER to exit:");
      Console.ReadLine();

      // Done with service.
      wcfClientChannel.Close();
      Console.WriteLine("Done!");
    }
    catch (TimeoutException timeProblem)
    {
      Console.WriteLine("The service operation timed out. " + timeProblem.Message);
      Console.Read();
    }
    catch (FaultException<SampleFault> fault)
    {
      Console.WriteLine($"SampleFault fault occurred: {fault.Detail.FaultMessage}");
      Console.Read();
    }
    catch (CommunicationException commProblem)
    {
      Console.WriteLine("There was a communication problem. " + commProblem.Message);
      Console.Read();
    }
  }
Public Class Client
    Public Shared Sub Main()
        Try
            ' Picks up configuration from the config file.
            Dim factory As New ChannelFactory(Of ISampleServiceChannel)("WSHttpBinding_ISampleService")

            ' Add the client side behavior programmatically to all created channels.
            factory.Endpoint.Behaviors.Add(New EndpointBehaviorMessageInspector())

            Dim wcfClientChannel As ISampleServiceChannel = factory.CreateChannel()

            ' Making calls.
            Console.WriteLine("Enter the greeting to send: ")
            Dim greeting As String = Console.ReadLine()
            Console.WriteLine("The service responded: " & wcfClientChannel.SampleMethod(greeting))

            Console.WriteLine("Press ENTER to exit:")
            Console.ReadLine()

            ' Done with service. 
            wcfClientChannel.Close()
            Console.WriteLine("Done!")
        Catch timeProblem As TimeoutException
            Console.WriteLine("The service operation timed out. " & timeProblem.Message)
            Console.Read()
        Catch fault As FaultException(Of SampleFault)
            Console.WriteLine("SampleFault fault occurred: {0}", fault.Detail.FaultMessage)
            Console.Read()
        Catch commProblem As CommunicationException
            Console.WriteLine("There was a communication problem. " & commProblem.Message)
            Console.Read()
        End Try
    End Sub

Ayrıca bkz.