OperationContractAttribute.AsyncPattern Egenskap

Definition

Anger att en åtgärd implementeras asynkront med hjälp av ett Begin<methodName> - och End<methodName-metodpar> i ett tjänstkontrakt.

public:
 property bool AsyncPattern { bool get(); void set(bool value); };
public bool AsyncPattern { get; set; }
member this.AsyncPattern : bool with get, set
Public Property AsyncPattern As Boolean

Egenskapsvärde

true Begin < om metoden methodName>matchas av en End<methodName-metod> och kan behandlas av infrastrukturen som en åtgärd som implementeras som ett asynkront metodpar i tjänstgränssnittet, falseannars . Standardvärdet är false.

Exempel

I följande kodexempel visas en klientkanal till ett tjänstkontrakt som innehåller både en synkron version av Add och en asynkron version. Om kontraktsgränssnittet används på klienten anropar både BeginAdd och - Add åtgärden en metod på servern som kanske eller kanske inte är synkron. Om kontraktet används för att implementera tjänsten är standardinställningen att inkommande begäranden skickas till den synkrona metoden.

[ServiceContract]
public interface IAddTwoNumbers
{
    // If the asynchronous method pair
    // appears on the client channel, the client can call
    // them asynchronously to prevent blocking.
    [OperationContract (AsyncPattern=true)]
    IAsyncResult BeginAdd(int a, int b, AsyncCallback cb, AsyncState s);

    [OperationContract]
    int EndAdd(IAsyncResult r);

    // This is a synchronous version of the BeginAdd/EndAdd pair.
    // It appears in the client channel code by default.
    [OperationContract]
    int Add(int a, int b);
   }

Kommentarer

Använd egenskapen AsyncPattern för att skapa tjänståtgärder som kan anropas asynkront på servern, klienten eller båda. Egenskapen AsyncPattern informerar körningen om att en Begin-metod har en matchad End-metod som överensstämmer med designmönstret för .NET Framework-asynkrona metoder. Att skapa asynkrona servermetoder som implementerar en tjänståtgärd ökar serverns skalbarhet och prestanda utan att påverka tjänstens klienter, och rekommenderas när en tjänståtgärd måste returnera något till klienten efter att ha utfört en lång åtgärd som kan utföras asynkront.

Klienterna påverkas inte eftersom det asynkrona metodparet på servern är en implementeringsinformation som inte påverkar den underliggande WSDL-beskrivningen (Web Services Description Language) för åtgärden. Sådana metoder visas för klienter som en enda åtgärd med <input> och korrelerade <output> meddelanden. WCF dirigerar automatiskt inkommande meddelanden till Begin<metoden methodName> och dirigerar resultatet av methodName-anropet>End< till det utgående meddelandet. Klientkanaler kan därför representera metodparet som antingen en enda synkron åtgärd eller som ett asynkront åtgärdspar. Klientrepresentationen påverkar inte i något fall den asynkrona implementeringen på servern på något sätt.

Klientkontrakt kan använda AsyncPattern egenskapen för att ange ett asynkront metodpar som klienten kan använda för att anropa åtgärden asynkront. Vanligtvis använder klientprogram verktyget ServiceModel Metadata Utility Tool (Svcutil.exe) och /async alternativet för att generera ett Begin<methodName> - och End<methodName-metodpar> som klienten kan använda för att anropa åtgärden asynkront.

Note

Om en tjänståtgärd har både en asynkron och synkron version är standardbeteendet för tjänsten att anropa den synkrona versionen.

Gäller för