Dela via


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

  1. Kontrollera att du har utfört engångsinstallationsproceduren för Windows Communication Foundation-exempel.

  2. Om du vill skapa C# eller Visual Basic .NET-versionen av lösningen följer du anvisningarna i Skapa Windows Communication Foundation-exempel.

  3. 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.