Поделиться через


Как создавать контракт Windows Communication Foundation с помощью класса

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

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

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

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

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

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

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

Пример

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

 <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
[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;
  }
} 

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

См. также

Справочник

ServiceContractAttribute
OperationContractAttribute