Standardtjänstbeteende
Standardexemplet visar hur inställningar för tjänstbeteende kan konfigureras. Exemplet baseras på Komma igång, som implementerar tjänstkontraktet ICalculator
. Det här exemplet definierar uttryckligen tjänstbeteenden och åtgärdsbeteenden med hjälp av attributen ServiceBehaviorAttribute och OperationBehaviorAttribute . Du kan konfigurera beteenden i konfigurationsfiler eller imperativt i kod (som det här exemplet visar).
I det här exemplet är klienten ett konsolprogram (.exe) och tjänsten hanteras av Internet Information Services (IIS).
Kommentar
Installationsproceduren och bygginstruktionerna för det här exemplet finns i slutet av det här avsnittet.
Tjänstklassen anger beteenden med ServiceBehaviorAttribute och OperationBehaviorAttribute som visas i följande kodexempel. Alla angivna värden är standardvärdena.
[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;
}
...
}
Tjänstbeteenden anges med attributet ServiceBehaviorAttribute . I följande tabell beskrivs några av dessa beteenden.
Tjänstbeteende | beskrivning |
---|---|
AutomaticSessionShutdown | Stänger automatiskt av en session på klientens begäran. |
ConcurrencyMode | Anger samtidighetsläget för varje tjänstinstans. |
InstanceContextMode | Anger instanskontextläget. |
UseSynchronizationContext | Avgör om du vill använda den angivna synkroniseringskontexten, om en har angetts. Använd detta när du vill styra om du vill använda en WindowsFormsSynchronizationContext i Windows Forms-program. |
IncludeExceptionDetailInFaults | Avgör om allmänna ohanterade körningsfel ska konverteras till ett Fault<string> och skickas som ett felmeddelande. |
TransactionIsolationLevel | Anger isoleringsnivån för transaktioner. |
ValidateMustUnderstand | Avgör om oväntade meddelandehuvuden orsakar ett feltillstånd. |
Åtgärdsbeteenden anges med hjälp av attributet OperationBehaviorAttribute . I följande tabell beskrivs några av dessa beteenden.
Åtgärdsbeteende | beskrivning |
---|---|
TransactionAutoComplete | Avgör om slutförandet av tjänståtgärden genomför den aktuella transaktionen. |
TransactionScopeRequired | Avgör om tjänståtgärden listas i en klientflödestransaktion. |
Impersonation | Avgör om tjänståtgärden personifierar anroparens identitet. |
ReleaseInstanceMode | Avgör om tjänstinstanser återvinns i början eller slutet av tjänståtgärdsanropet. |
När du kör exemplet visas åtgärdsbegäranden och svar i klientkonsolfönstret. Fördröjningen mellan anropen är resultatet av de anrop som System.Threading.Thread.Sleep()
görs i tjänståtgärderna. Resten av beteendeexemplen förklarar dessa beteenden mer detaljerat. Tryck på RETUR i klientfönstret för att stänga av klienten.
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.
Så här konfigurerar du, skapar och kör exemplet
Kontrollera att du har utfört engångsinstallationsproceduren för Windows Communication Foundation-exempel.
Om du vill skapa C# eller Visual Basic .NET-versionen av lösningen följer du anvisningarna i Skapa Windows Communication Foundation-exempel.
Om du vill köra exemplet i en konfiguration med en eller flera datorer följer du anvisningarna i Köra Windows Communication Foundation-exempel.