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
Vytvořte kontrakt služby použitím ServiceContractAttribute třídy na rozhraní, které definuje metody, které má služba implementovat.
Určuje, které metody v rozhraní může klient vyvolat použitím OperationContractAttribute třídy na ně.
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
true
hodnotu . 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 jefalse
ve výchozím nastavení. Proto musíte explicitně zadat hodnotu vlastnosti atributu, která má býttrue
, 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