Sdílet prostřednictvím


Postupy: Vytvoření jednosměrného kontraktu

Toto téma ukazuje základní kroky k vytvoření metod, které používají jednosměrný kontrakt. Takové metody vyvolávají operace ve službě Windows Communication Foundation (WCF) z klienta, ale neočekávají odpověď. Tento typ kontraktu lze použít například k publikování oznámení mnoha odběratelům. Jednocestné kontrakty můžete použít také při vytváření duplexního (obousměrného) kontraktu, který umožňuje klientům a serverům komunikovat nezávisle na sobě, aby obě mohly iniciovat volání druhé. To může zejména serveru umožnit jednosměrná volání klienta, se kterým může klient zacházet jako s událostmi. Podrobné informace o zadávání jednosměrných metod naleznete ve IsOneWay vlastnosti a OperationContractAttribute třídě.

Další informace o vytvoření klientské aplikace pro duplexní kontrakt naleznete v tématu Postupy: Přístup ke službám s jednosměrnými kontrakty a kontrakty žádosti a odpovědi. Pro funkční ukázku se podívejte na jednosměrnou ukázku.

Vytvoření jednosměrného kontraktu

  1. Vytvořte kontrakt služby použitím ServiceContractAttribute třídy na rozhraní, které definuje metody, které má služba implementovat.

  2. Určuje, které metody v rozhraní může klient vyvolat použitím OperationContractAttribute třídy na ně.

  3. Určete operace, které nesmí mít žádný výstup (žádná návratová hodnota a žádné parametry out nebo ref) jako jednosměrné nastavením IsOneWay vlastnosti na truehodnotu . Všimněte si, že operace, které mají OperationContractAttribute třídu splňují kontrakt požadavku-odpověď ve výchozím nastavení, protože IsOneWay vlastnost je false ve výchozím nastavení. Proto musíte explicitně zadat hodnotu vlastnosti atributu, která má být true , pokud chcete jednosměrný kontrakt pro metodu.

Příklad

Následující příklad kódu definuje kontrakt pro službu, která obsahuje několik jednosměrných metod. Všechny metody mají jednosměrné kontrakty s výjimkou Equals, které ve výchozím nastavení požadavek-odpověď a vrací výsledek.

[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples", SessionMode=SessionMode.Required)]
public interface ICalculatorSession
{
    [OperationContract(IsOneWay=true)]
    void Clear();
    [OperationContract(IsOneWay = true)]
    void AddTo(double n);
    [OperationContract(IsOneWay = true)]
    void SubtractFrom(double n);
    [OperationContract(IsOneWay = true)]
    void MultiplyBy(double n);
    [OperationContract(IsOneWay = true)]
    void DivideBy(double n);
    [OperationContract]
    double Equals();
}
<ServiceContract(Namespace:="http://Microsoft.ServiceModel.Samples", SessionMode:=SessionMode.Required)> _
Public Interface ICalculatorSession

    <OperationContract(IsOneWay:=True)> _
    Sub Clear()
    <OperationContract(IsOneWay:=True)> _
    Sub AddTo(ByVal n As Double)
    <OperationContract(IsOneWay:=True)> _
    Sub SubtractFrom(ByVal n As Double)
    <OperationContract(IsOneWay:=True)> _
    Sub MultiplyBy(ByVal n As Double)
    <OperationContract(IsOneWay:=True)> _
    Sub DivideBy(ByVal n As Double)
    <OperationContract()> _
    Function Equal() As Double
End Interface

Viz také