OperationContractAttribute.AsyncPattern Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Gibt an, dass ein Vorgang asynchron mithilfe eines Begin< MethodName- und End<methodName-Methodenpaars>> in einem Dienstvertrag implementiert wird.
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
Eigenschaftswert
truewenn die Begin<methodName-Methode von einer methodName-Methode>>End< abgeglichen wird und von der Infrastruktur als Vorgang behandelt werden kann, der als asynchrones Methodenpaar auf der Dienstschnittstelle implementiert wird; andernfalls . false Der Standardwert lautet false.
Beispiele
Das folgende Codebeispiel zeigt einen Clientkanal zu einem Dienstvertrag, der sowohl eine synchrone Version als Add auch eine asynchrone Version enthält. Wenn die Vertragsschnittstelle auf dem Client verwendet wird, rufen sowohl die BeginAdd als auch der Add Vorgang eine Methode auf dem Server auf, die möglicherweise synchron ist oder nicht. Wenn der Vertrag zum Implementieren des Diensts verwendet wird, ist die Standardeinstellung, dass eingehende Anforderungen an die synchrone Methode verteilt werden.
[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);
}
Hinweise
Verwenden Sie die AsyncPattern Eigenschaft, um Dienstvorgänge zu erstellen, die asynchron auf dem Server, dem Client oder beides aufgerufen werden können. Die AsyncPattern Eigenschaft informiert die Laufzeit, dass eine Begin Methode über eine übereinstimmende End Methode verfügt, die dem Entwurfsmuster für asynchrone .NET Framework-Methoden entspricht. Das Erstellen asynchroner Servermethoden, die einen Dienstvorgang implementieren, erhöht die Serverskalierbarkeit und -leistung, ohne dass sich die Clients des Diensts auswirken, und wird empfohlen, wenn ein Dienstvorgang nach einem langwierigen Vorgang, der asynchron ausgeführt werden kann, an den Client zurückgeben muss.
Clients bleiben nicht betroffen, da das asynchrone Methodenpaar auf dem Server ein Implementierungsdetails ist, das sich nicht auf die zugrunde liegende Beschreibung der Beschreibung der Webdienstbeschreibung (Web Services Description Language, WSDL) des Vorgangs auswirkt. Solche Methoden erscheinen Clients als einzelner Vorgang mit <input> und korrelierten <output> Nachrichten. WCF leitet eingehende Nachrichten automatisch an die Begin<methodName-Methode> weiter und leitet die Ergebnisse des End<methodName-Aufrufs> an die ausgehende Nachricht weiter. Clientkanäle können daher das Methodenpaar entweder als einzelner synchroner Vorgang oder als asynchrones Vorgangspaar darstellen. In keinem Fall wirkt sich die Clientdarstellung auf die asynchrone Implementierung auf dem Server auf irgendeine Weise aus.
Clientverträge können die AsyncPattern Eigenschaft verwenden, um ein asynchrones Methodenpaar anzugeben, das der Client verwenden kann, um den Vorgang asynchron aufzurufen. In der Regel verwenden Clientanwendungen das Tool serviceModel Metadata Utility (Svcutil.exe) und die /async Option zum Generieren eines<BeginMethodName- undEnd<methodName-Methodenpaars>>, das der Client verwenden kann, um den Vorgang asynchron aufzurufen.
Hinweis
Wenn ein Dienstvorgang sowohl über eine asynchrone als auch eine synchrone Version verfügt, besteht das Standardverhalten des Diensts darin, die synchrone Version aufzurufen.