Практическое руководство. Создание контракта Windows Communication Foundation с помощью класса

Предпочтительный способ создания контракта Windows Communication Foundation (WCF) — использовать интерфейс. Дополнительные сведения см. в разделе "Практическое руководство. Определение контракта службы". Описанный здесь альтернативный способ предполагает создание класса и последующее применение атрибута ServiceContractAttribute непосредственно к классу, а атрибута OperationContractAttribute к каждому из методов класса, являющихся частью контракта.

Предупреждение

[ServiceContract] и [ServiceContractAttribute] выполняют то же самое. То же самое верно для [OperationContract] и [OperationContractAttribute]. В каждом случае первый является коротким для последнего.

Дополнительные сведения о контрактах служб см. в разделе "Проектирование контрактов службы".

Создание контракта Windows Communication Foundation с помощью класса

  1. Создайте новый класс с помощью Visual Basic, C# или любого другого языка среды CLR.

  2. Примените класс ServiceContractAttribute к созданному классу.

  3. Создайте методы класса.

  4. Примените класс к каждому методу OperationContractAttribute , который должен быть предоставлен в рамках общедоступного контракта WCF.

Пример

В следующем примере кода показан класс, определяющий контракт службы.

[ServiceContract]
public class CalculatorService
{
  [OperationContract]
  public double Add(double n1, double n2)
  {
     return n1 + n2;
  }

  [OperationContract]
  public double Subtract(double n1, double n2)
  {
     return n1 - n2;
  }

  [OperationContract]
  public double Multiply(double n1, double n2)
  {
     return n1 * n2;
  }

  [OperationContract]
  public double Divide(double n1, double n2)
  {
     return n1 / n2;
  }
}

<ServiceContract()> _
Public Class CalculatorService
    <OperationContract()> _
    Public Function Add(ByVal n1 As Double, ByVal n2 As Double) As Double
        Return n1 + n2
    End Function

    <OperationContract()> _
    Public Function Subtract(ByVal n1 As Double, ByVal n2 As Double) As Double
        Return n1 - n2
    End Function

    <OperationContract()> _
    Public Function Multiply(ByVal n1 As Double, ByVal n2 As Double) As Double
        Return n1 * n2
    End Function

    <OperationContract()> _
    Public Function Divide(ByVal n1 As Double, ByVal n2 As Double) As Double
        Return n1 / n2
    End Function
End Class

Методы, к которым применен класс OperationContractAttribute, по умолчанию используют шаблон обмена сообщениями «запрос-ответ». Дополнительные сведения об этом шаблоне сообщений см. в статье "Практическое руководство. Создание контракта запроса на ответ". Кроме того, можно создать и использовать другие шаблоны сообщений путем задания свойств атрибута. Дополнительные примеры см. в статье "Практическое руководство. Создание единого контракта и практическое руководство. Создание дуплексного контракта".

См. также