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


OperationContractAttribute Класс

Определение

Указывает, что метод определяет операцию, которая является частью контракта службы в приложении Windows Communication Foundation (WCF).

public ref class OperationContractAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
public sealed class OperationContractAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Method)>]
type OperationContractAttribute = class
    inherit Attribute
Public NotInheritable Class OperationContractAttribute
Inherits Attribute
Наследование
OperationContractAttribute
Атрибуты

Примеры

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

using System;
using System.Collections.Generic;
using System.Net.Security;
using System.ServiceModel;
using System.Text;

namespace Microsoft.WCF.Documentation
{
  [ServiceContract(Namespace="Microsoft.WCF.Documentation")]
  public interface ISampleService{
    // This operation specifies an explicit protection level requirement.
    [OperationContract(ProtectionLevel=ProtectionLevel.EncryptAndSign)]
    string SampleMethod(string msg);
  }

  class SampleService : ISampleService
  {
  #region ISampleService Members

  public string  SampleMethod(string msg)
  {
    Console.WriteLine("Called with: {0}", msg);
      return "The service greets you: " + msg;
  }

  #endregion
  }
}
Imports System.Net.Security
Imports System.ServiceModel
Imports System.Text

Namespace Microsoft.WCF.Documentation
  <ServiceContract(Namespace:="Microsoft.WCF.Documentation")> _
  Public Interface ISampleService
    ' This operation specifies an explicit protection level requirement.
    <OperationContract(ProtectionLevel:=ProtectionLevel.EncryptAndSign)> _
    Function SampleMethod(ByVal msg As String) As String
  End Interface

  Friend Class SampleService
      Implements ISampleService
  #Region "ISampleService Members"

  Public Function SampleMethod(ByVal msg As String) As String Implements ISampleService.SampleMethod
    Console.WriteLine("Called with: {0}", msg)
       Return "The service greets you: " & msg
  End Function

  #End Region
  End Class
End Namespace

В следующем примере показана служба, реализующая неявный контракт службы, указывающий три операции. Два из этих операций — это двусторонние операции, которые возвращают базовые сообщения ответа вызывающей стороне независимо от значения возвращаемого значения. Третья операция получает вызов, базовое входящее сообщение, но не возвращает базовое сообщение ответа.

[ServiceContractAttribute]
public class OneAndTwoWay
{
  // The client waits until a response message appears.
  [OperationContractAttribute]
  public int MethodOne (int x, out int y)
  {
    y = 34;
    return 0;
  }

  // The client waits until an empty response message appears.
  [OperationContractAttribute]
  public void MethodTwo (int x)
  {
    return;
  }

  // The client returns as soon as an outbound message
  // is dispatched to the service; no response
  // message is generated or sent from the service.
  [OperationContractAttribute(IsOneWay=true)]
  public void MethodThree (int x)
  {
    return;
  }
}

Комментарии

OperationContractAttribute Примените метод к методу, чтобы указать, что метод реализует операцию службы в рамках контракта службы (указанного атрибутомServiceContractAttribute).

OperationContractAttribute Используйте свойства для управления структурой операции и значениями, выраженными в метаданных:

  • Свойство Action задает действие, которое однозначно идентифицирует эту операцию. WCF отправляет сообщения в методы на основе их действия.

  • Свойство AsyncPattern указывает, что операция реализована или может вызываться асинхронно с помощью пары методов Begin/End.

  • Свойство HasProtectionLevel указывает, было ли ProtectionLevel свойство явно задано.

  • Свойство IsOneWay указывает, что операция состоит только из одного входного сообщения. Операция не имеет связанного выходного сообщения.

  • Свойство IsInitiating указывает, может ли эта операция быть начальной операцией в сеансе.

  • Свойство IsTerminating указывает, пытается ли WCF завершить текущий сеанс после завершения операции.

  • Свойство ProtectionLevel указывает безопасность на уровне сообщения, требуемую операцией во время выполнения.

  • Свойство ReplyAction задает действие сообщения ответа для операции.

Атрибут OperationContractAttribute объявляет, что метод является операцией в контракте службы. Только методы, атрибутируемые данными OperationContractAttribute , предоставляются как операции службы. Контракт службы без каких-либо методов, OperationContractAttribute помеченных без операций.

Свойство AsyncPattern указывает, что пара методов methodName> и<EndmethodName> формирует одну операцию, реализованную асинхронно Begin< (будь то на клиенте или службе). Возможность асинхронной реализации служб — это сведения о реализации службы и не предоставляется в метаданных (таких как язык описания веб-служб (WSDL)).

Аналогичным образом клиенты могут асинхронно вызывать операции независимо от того, как реализуется метод службы. При асинхронном вызове операций службы в клиенте рекомендуется, если метод службы занимает некоторое время, но должен возвращать сведения непосредственно клиенту. Дополнительные сведения см. в AsyncPattern.

Свойство IsOneWay указывает, что метод вообще не возвращает никакое значение, включая пустое базовое сообщение ответа. Этот тип метода полезен для уведомлений или взаимодействия в стиле событий. Методы такого рода не могут возвращать ответное сообщение, поэтому объявление метода должно возвращать void.

Это важно

При программном получении хранилища информации в этом атрибуте используйте ContractDescription класс вместо отражения.

Замечание

IsOneWay Если для свойства задано falseзначение , (по умолчанию), даже методы, возвращаемые void двумя способами, являются двусторонними методами на базовом уровне сообщения. В этом случае инфраструктура создает и отправляет пустое сообщение, указывающее вызывающему объекту, что метод вернул. Этот подход позволяет приложению и инфраструктуре отправлять сведения об ошибках (например, ошибка SOAP) клиенту. true Параметром IsOneWay является единственный способ предотвратить создание и отправку ответного сообщения. Дополнительные сведения см. в разделе One-Way Services.

ReplyAction Свойства Action можно использовать не только для изменения действия по умолчанию сообщений SOAP, но и для создания обработчиков нераспознанных сообщений или отключения действий для прямого программирования сообщений. IsInitiating Используйте свойство, чтобы запретить клиентам вызывать определенную операцию службы до других операций. IsTerminating Используйте свойство, чтобы WCF закрыл канал после вызова клиентом определенной операции службы. Дополнительные сведения см. в разделе "Использование сеансов".

Свойство ProtectionLevel позволяет указать контракт операции, подписан ли сообщения операции, зашифрованы или подписаны и зашифрованы. Если привязка не может предоставить уровень безопасности, необходимый контракту, исключение создается во время выполнения. Дополнительные сведения см. в разделе ProtectionLevel "Уровень защиты" и "Общие сведения о уровне защиты".

Конструкторы

Имя Описание
OperationContractAttribute()

Инициализирует новый экземпляр класса OperationContractAttribute.

Свойства

Имя Описание
Action

Возвращает или задает действие WS-Addressing для сообщения запроса.

AsyncPattern

Указывает, что операция реализуется асинхронно с помощью Begin< пары методов methodName> и End<methodName> в контракте службы.

HasProtectionLevel

Получает значение, указывающее, должны ли сообщения для этой операции быть зашифрованы, подписаны или и то, и другое.

IsInitiating

Возвращает или задает значение, указывающее, реализует ли метод операцию, которая может инициировать сеанс на сервере (если такой сеанс существует).

IsOneWay

Возвращает или задает значение, указывающее, возвращает ли операция ответное сообщение.

IsTerminating

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

Name

Возвращает или задает имя операции.

ProtectionLevel

Возвращает или задает значение, указывающее, должны ли сообщения операции быть зашифрованы, подписаны или и то, и другое.

ReplyAction

Возвращает или задает значение действия SOAP для ответного сообщения операции.

TypeId

При реализации в производном классе получает уникальный идентификатор для этого Attribute.

(Унаследовано от Attribute)

Методы

Имя Описание
Equals(Object)

Возвращает значение, указывающее, равен ли этот экземпляр указанному объекту.

(Унаследовано от Attribute)
GetHashCode()

Возвращает хэш-код для этого экземпляра.

(Унаследовано от Attribute)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
IsDefaultAttribute()

При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса.

(Унаследовано от Attribute)
Match(Object)

При переопределении в производном классе возвращает значение, указывающее, равен ли этот экземпляр указанному объекту.

(Унаследовано от Attribute)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Явные реализации интерфейса

Имя Описание
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.

(Унаследовано от Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Извлекает сведения о типе объекта, который можно использовать для получения сведений о типе для интерфейса.

(Унаследовано от Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1).

(Унаследовано от Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Предоставляет доступ к свойствам и методам, предоставляемым объектом.

(Унаследовано от Attribute)

Применяется к