OperationContractAttribute.IsOneWay Eigenschap
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of een bewerking een antwoordbericht retourneert.
public:
property bool IsOneWay { bool get(); void set(bool value); };
public bool IsOneWay { get; set; }
member this.IsOneWay : bool with get, set
Public Property IsOneWay As Boolean
Waarde van eigenschap
true als deze methode een aanvraagbericht ontvangt en geen antwoordbericht retourneert; anders, false. De standaardwaarde is false.
Voorbeelden
Het volgende voorbeeld is een service waarmee een servicecontract wordt geïmplementeerd dat drie bewerkingen aangeeft. Twee van de methoden implementeren tweerichtingsbewerkingen, die onderliggende antwoordberichten retourneren aan de aanroeper, ongeacht wat de retourwaarde is. De derde methode implementeert een bewerking die een aanroep ontvangt (een onderliggend binnenkomend bericht), maar retourneert geen onderliggend antwoordbericht.
[ServiceContract]
public class OneAndTwoWay
{
// The client waits until a response message appears.
[OperationContract]
public int MethodOne (int x, out int y)
{
y = 34;
return 0;
}
// The client waits until an empty response message appears.
[OperationContract]
public void MethodTwo (int x)
{
return;
}
// The client returns as soon as an outbound message
// is queued for dispatch to the service; no response
// message is generated or sent.
[OperationContract(IsOneWay=true)]
public void MethodThree (int x)
{
return;
}
}
Opmerkingen
Gebruik de IsOneWay eigenschap om aan te geven dat een bewerking geen antwoordbericht retourneert. Dit type bewerking is handig voor meldingen of communicatie in gebeurtenisstijl, met name in tweerichtingscommunicatie. Zonder te wachten op een onderliggend antwoordbericht, hebben bellers van bewerkingen in één richting geen directe manier om een fout te detecteren bij het verwerken van het aanvraagbericht. (Servicetoepassingen die gebruikmaken van betrouwbare kanalen en eenrichtingsbewerkingen kunnen een berichtbezorgingsfout op kanaalniveau detecteren. Zie Overzicht van betrouwbare sessies voor meer informatie.)
In dubbelzijdige (of tweerichtings)servicegerichte toepassingen waarin de client en server onafhankelijk met elkaar communiceren, kan een clientkanaal de IsOneWay eigenschap op de bijbehorende methoden gebruiken om aan te geven dat de service in één richting aanroept naar de client die de client als gebeurtenissen kan behandelen. Er wordt geen retourgesprek of bericht gegenereerd omdat de service geen antwoordbericht verwacht.
Als de IsOneWay eigenschap is ingesteld op false (de standaardinstelling), worden zelfs methoden gebruikt die void resulteren in een antwoordbericht. In dit geval maakt en verzendt de infrastructuur een leeg bericht om aan te geven aan de aanroeper dat de methode heeft geretourneerd. (Met deze methode kan de infrastructuur SOAP-fouten terugsturen naar de client.) true Dit IsOneWay is de enige manier om het maken en verzenden van een antwoordbericht te annuleren.
Methoden in één richting mogen geen waarde of parameters retourneren refout ; anders wordt er een System.InvalidOperationException uitzondering gegenereerd.
Als u opgeeft dat een bewerking eenrichtingsbewerking is, betekent dit alleen dat er geen antwoordbericht is. Het is mogelijk om te blokkeren als er geen verbinding kan worden gemaakt of het uitgaande bericht erg groot is, of als de service geen binnenkomende informatie snel genoeg kan lezen. Als een client een niet-blokkerende aanroep vereist, genereert u AsyncPattern bewerkingen. Zie One-Way Services en Toegang tot Services met behulp van een WCF-client voor meer informatie.