Udostępnij za pośrednictwem


Wiele punktów końcowych

W przykładzie MultipleEndpoints pokazano, jak skonfigurować wiele punktów końcowych w usłudze i jak komunikować się z każdym punktem końcowym z klienta. Ten przykład jest oparty na rozpoczynaniu pracy. Konfiguracja usługi została zmodyfikowana w celu zdefiniowania dwóch punktów końcowych, które obsługują ICalculator kontrakt, ale każdy pod innym adresem przy użyciu innego powiązania. Konfiguracja klienta i kod zostały zmodyfikowane w celu komunikowania się z obydwoma punktami końcowymi usługi.

Uwaga

Procedura instalacji i instrukcje kompilacji dla tego przykładu znajdują się na końcu tego tematu.

Plik Web.config usługi został zmodyfikowany w celu zdefiniowania dwóch punktów końcowych, z których każdy obsługuje ten sam ICalculator kontrakt, ale pod różnymi adresami przy użyciu różnych powiązań. Pierwszy punkt końcowy jest definiowany na adresie podstawowym przy użyciu basicHttpBinding powiązania, które nie ma włączonego zabezpieczeń. Drugi punkt końcowy jest definiowany w lokalizacji {baseaddress}/secure przy użyciu wsHttpBinding powiązania, które jest domyślnie bezpieczne przy użyciu zabezpieczeń WS-Security z uwierzytelnianiem systemu Windows.

<service
    name="Microsoft.ServiceModel.Samples.CalculatorService"
    behaviorConfiguration="CalculatorServiceBehavior">
  <!-- This endpoint is exposed at the base address provided by host:
       http://localhost/servicemodelsamples/service.svc  -->
  <endpoint address=""
            binding="basicHttpBinding"
            contract="Microsoft.ServiceModel.Samples.ICalculator" />
  <!-- secure endpoint exposed at {base address}/secure:
       http://localhost/servicemodelsamples/service.svc/secure -->
  <endpoint address="secure"
            binding="wsHttpBinding"
            contract="Microsoft.ServiceModel.Samples.ICalculator" />
  ...
</service>

Oba punkty końcowe są również konfigurowane na kliencie. Te punkty końcowe otrzymują nazwy, aby obiekt wywołujący mógł przekazać żądaną nazwę punktu końcowego do konstruktora klienta.

<client>
  <!-- Passing "basic" into the constructor of the CalculatorClient
       class selects this endpoint.-->
  <endpoint name="basic"
            address="http://localhost/servicemodelsamples/service.svc"
            binding="basicHttpBinding"
            contract="Microsoft.ServiceModel.Samples.ICalculator" />
  <!-- Passing "secure" into the constructor of the CalculatorClient
       class selects this endpoint.-->
  <endpoint name="secure"
            address="http://localhost/servicemodelsamples/service.svc/secure"
            binding="wsHttpBinding"
            contract="Microsoft.ServiceModel.Samples.ICalculator" />
</client>

Klient używa obu punktów końcowych, jak pokazano w poniższym kodzie.

static void Main()
{
    // Create a client to the basic endpoint configuration.
    CalculatorClient client = new CalculatorClient("basic");
    Console.WriteLine("Communicate with basic endpoint.");
    // call operations
    DoCalculations(client);

    // Close the client and release resources.
    client.Close();

    // Create a client to the secure endpoint configuration.
    client = new CalculatorClient("secure");
    Console.WriteLine("Communicate with secure endpoint.");
    // Call operations.
    DoCalculations(client);

    // Close the client and release resources.
    client.Close();

    Console.WriteLine();
    Console.WriteLine("Press <ENTER> to terminate client.");
    Console.ReadLine();
}

Po uruchomieniu klienta wyświetlane są interakcje z obydwoma punktami końcowymi.

Communicate with basic endpoint.
Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714
Communicate with secure endpoint.
Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714

Press <ENTER> to terminate client.

Aby skonfigurować, skompilować i uruchomić przykład

  1. Upewnij się, że wykonano procedurę instalacji jednorazowej dla przykładów programu Windows Communication Foundation.

  2. Aby skompilować wersję rozwiązania w języku C# lub Visual Basic .NET, postępuj zgodnie z instrukcjami w temacie Building the Windows Communication Foundation Samples (Tworzenie przykładów programu Windows Communication Foundation).

  3. Aby uruchomić przykład w konfiguracji pojedynczej lub między maszynami, postępuj zgodnie z instrukcjami w temacie Uruchamianie przykładów programu Windows Communication Foundation.