Udostępnij za pośrednictwem


Domyślne zachowanie usługi

W Domyślnym przykładzie pokazano, jak skonfigurować ustawienia zachowania usługi. Przykład jest oparty na Wprowadzeniu, który implementuje ICalculator umowę serwisową. Ten przykład jawnie definiuje zachowania usługi i zachowania operacji przy użyciu atrybutów ServiceBehaviorAttribute 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 / Notatka

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 równoczesnoś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 wykonania mają być konwertowane na Fault<string> 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 zapisuje się do transakcji przekazywanej przez klienta.
Impersonation Określa, czy operacja usługi podszywa się pod tożsamość osoby wywołującej.
ReleaseInstanceMode Określa, czy wystąpienia usługi są odnawiane 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 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ładowy program

  1. Upewnij się, że wykonano procedurę instalacji One-Time 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 Kompilowanie przykładów Windows Communication Foundation.

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