Domyślne zachowanie usługi

W przykładzie Domyślny pokazano, jak można skonfigurować ustawienia zachowania usługi. Przykład jest oparty na rozpoczynaniu pracy, która implementuje ICalculator kontrakt usługi. Ten przykład jawnie definiuje zachowania usługi i zachowania operacji przy użyciu ServiceBehaviorAttribute atrybutów i OperationBehaviorAttribute . Zachowania można skonfigurować w plikach konfiguracji lub imperatywnie w kodzie (jak pokazano w tym przykładzie).

W tym przykładzie klient jest aplikacją konsolową (.exe), a usługa jest hostowana przez usługi Internet Information Services (IIS).

Uwaga

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

Klasa usługi określa zachowania z elementem ServiceBehaviorAttribute i OperationBehaviorAttribute , jak pokazano w poniższym przykładzie kodu. Wszystkie określone wartości są wartościami domyślnymi.

[ServiceBehavior(
    AutomaticSessionShutdown=true,
    ConcurrencyMode=ConcurrencyMode.Single,
    InstanceContextMode=InstanceContextMode.PerSession,
    IncludeExceptionDetailInFaults=false,
    UseSynchronizationContext=true,
    ValidateMustUnderstand=true)]
public class CalculatorService : ICalculator
{
    [OperationBehavior(
        TransactionAutoComplete=true,
        TransactionScopeRequired=false,
        Impersonation=ImpersonationOption.NotAllowed)]
    public double Add(double n1, double n2)
    {
        System.Threading.Thread.Sleep(1600);
        return n1 + n2;
    }
    ...
}

Zachowania usługi są określane za pomocą atrybutu ServiceBehaviorAttribute . W poniższej tabeli opisano niektóre z tych zachowań.

Zachowanie usługi opis
AutomaticSessionShutdown Automatycznie zamyka sesję na żądanie klienta.
ConcurrencyMode Określa tryb współbieżności dla każdego wystąpienia usługi.
InstanceContextMode Określa tryb kontekstu wystąpienia.
UseSynchronizationContext Określa, czy należy użyć podanego kontekstu synchronizacji, jeśli został ustawiony. Użyj tej funkcji, jeśli chcesz kontrolować, czy używać elementu WindowsFormsSynchronizationContext w aplikacjach Windows Forms.
IncludeExceptionDetailInFaults Określa, czy ogólne nieobsługiwane wyjątki wykonywania mają być konwertowane na Fault<string> element i wysyłane jako komunikat o błędzie.
TransactionIsolationLevel Określa poziom izolacji dla transakcji.
ValidateMustUnderstand Określa, czy nieoczekiwane nagłówki komunikatów powodują błąd.

Zachowania operacji są określane przy użyciu atrybutu OperationBehaviorAttribute . W poniższej tabeli opisano niektóre z tych zachowań.

Zachowanie operacji opis
TransactionAutoComplete Określa, czy ukończenie operacji usługi zatwierdza bieżącą transakcję.
TransactionScopeRequired Określa, czy operacja usługi jest enlists w transakcji przepływanej przez klienta.
Impersonation Określa, czy operacja usługi personifikuje tożsamość osoby wywołującej.
ReleaseInstanceMode Określa, czy wystąpienia usługi są poddawane recyklingu na początku lub na końcu wywołania operacji usługi.

Po uruchomieniu przykładu żądania operacji i odpowiedzi są wyświetlane w oknie konsoli klienta. Opóźnienie między wywołaniami jest wynikiem wywołań wykonywanych System.Threading.Thread.Sleep() w operacjach usługi. Pozostałe przykłady zachowań wyjaśniają te zachowania bardziej szczegółowo. Naciśnij klawisz ENTER w oknie klienta, aby zamknąć klienta.

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.