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
Upewnij się, że wykonano procedurę instalacji jednorazowej dla przykładów programu Windows Communication Foundation.
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).
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.