Udostępnij przez


Instrukcje: Tworzenie kontraktu jednokierunkowego

W tym temacie przedstawiono podstawowe kroki tworzenia metod korzystających z kontraktu jednokierunkowego. Takie metody wywołują operacje w usłudze Windows Communication Foundation (WCF) od klienta, ale nie oczekują odpowiedzi. Tego typu kontraktu można na przykład użyć do publikowania powiadomień dla wielu subskrybentów. Można również użyć kontraktów jednokierunkowych podczas tworzenia kontraktu dwukierunkowego (dwukierunkowego), który umożliwia klientom i serwerom komunikowanie się ze sobą niezależnie, aby można było inicjować wywołania do drugiego. Dzięki temu serwer może wykonywać wywołania jednokierunkowe do klienta, który klient może traktować jako zdarzenia. Aby uzyskać szczegółowe informacje na temat określania metod jednokierunkowych, zobacz IsOneWay właściwość i klasę OperationContractAttribute .

Aby uzyskać więcej informacji na temat tworzenia aplikacji klienckiej dla kontraktu dwustronnego, zobacz Instrukcje: Usługi programu Access z kontraktami jednokierunkowymi i żądaniami odpowiedzi. Aby zapoznać się z przykładem roboczym, zobacz przykład One-Way .

Aby utworzyć kontrakt jednokierunkowy

  1. Utwórz kontrakt usługi, stosując klasę ServiceContractAttribute do interfejsu definiującego metody implementacji usługi.

  2. Wskaż metody w interfejsie, które klient może wywołać, stosując do nich klasę OperationContractAttribute .

  3. Wyznaczanie operacji, które nie muszą mieć danych wyjściowych (bez wartości zwracanej ani parametrów ref) jako jednokierunkowe, ustawiając IsOneWay właściwość na truewartość . Należy pamiętać, że operacje, które mają OperationContractAttribute klasę, domyślnie spełniają umowę żądania-odpowiedź, ponieważ IsOneWay właściwość jest false domyślnie. Dlatego należy jawnie określić wartość właściwości atrybutu, aby być true , jeśli chcesz kontrakt jednokierunkowy dla metody .

Przykład

Poniższy przykład kodu definiuje kontrakt dla usługi, która zawiera kilka metod jednokierunkowych. Wszystkie metody mają kontrakty jednokierunkowe z wyjątkiem Equals, które domyślnie wysyłają żądanie-odpowiedź i zwracają wynik.

[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

Zobacz też