OperationContractAttribute.AsyncPattern Eigenschap

Definitie

Geeft aan dat een bewerking asynchroon wordt geïmplementeerd met behulp van een Begin<methodName> - en End<methodName-methodepaar> in een servicecontract.

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

Waarde van eigenschap

trueals de Begin<methodName-methode>overeenkomt met een End<methodName-methode> en kan worden behandeld door de infrastructuur als een bewerking die wordt geïmplementeerd als asynchroon methodepaar op de service-interface; anders. false De standaardwaarde is false.

Voorbeelden

In het volgende codevoorbeeld ziet u een clientkanaal voor een servicecontract dat zowel een synchrone versie van Add als een asynchrone versie bevat. Als de contractinterface op de client wordt gebruikt, roept zowel de BeginAdd als de Add bewerking een methode aan op de server die al dan niet synchroon kan zijn. Als het contract wordt gebruikt om de service te implementeren, is de standaardwaarde dat binnenkomende aanvragen worden verzonden naar de synchrone methode.

[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);
   }

Opmerkingen

Gebruik de AsyncPattern eigenschap om servicebewerkingen te bouwen die asynchroon kunnen worden aangeroepen op de server, de client of beide. De eigenschap AsyncPattern informeert de runtime dat een methode Begin een overeenkomende methode End heeft die voldoet aan het asynchrone ontwerppatroon van .NET Framework. Het bouwen van asynchrone methoden voor het implementeren van een servicebewerking verhoogt de schaalbaarheid en prestaties van de server zonder dat dit van invloed is op de clients van de service. Dit wordt aanbevolen wanneer een servicebewerking iets naar de client moet retourneren nadat een langdurige bewerking is uitgevoerd die asynchroon kan worden uitgevoerd.

Clients blijven ongewijzigd omdat het asynchrone methodepaar op de server een implementatiedetails is die geen invloed heeft op de onderliggende WSDL-beschrijving (Web Services Description Language) van de bewerking. Dergelijke methoden worden aan clients weergegeven als één bewerking met <input> en gecorreleerde <output> berichten. WCF routeert binnenkomende berichten automatisch naar de Begin<methodName-methode> en stuurt de resultaten van de End<methodName-aanroep> naar het uitgaande bericht. Clientkanalen kunnen daarom het methodepaar vertegenwoordigen als één synchrone bewerking of als asynchroon bewerkingspaar. In geen geval heeft de clientweergave invloed op de asynchrone implementatie op de server.

Clientcontracten kunnen de AsyncPattern eigenschap gebruiken om een asynchroon methodepaar aan te geven dat de client kan gebruiken om de bewerking asynchroon aan te roepen. Clienttoepassingen gebruiken doorgaans het hulpprogramma ServiceModel Metadata Utility (Svcutil.exe) en de /async optie om een<BeginmethodName>- en End<methodName-methodepaar> te genereren dat de client kan gebruiken om de bewerking asynchroon aan te roepen.

Note

Als een servicebewerking zowel een asynchrone als een synchrone versie heeft, is het standaardgedrag van de service om de synchrone versie aan te roepen.

Van toepassing op