OperationContractAttribute OperationContractAttribute OperationContractAttribute OperationContractAttribute Class

Определение

Указывает, что метод определяет операцию, которая является частью контракта службы в приложении Windows Communication Foundation (WCF).Indicates that a method defines an operation that is part of a service contract in a Windows Communication Foundation (WCF) application.

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

Примеры

В следующем примере кода показан простой контракт службы с одной операцией.The following code example shows a simple service contract with one operation.

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

В следующем примере представлена служба, которая реализует неявный контракт службы, определяющий три операции.The following example is a service that implements an implicit service contract that specifies three operations. Две из этих операций являются двусторонними и возвращают базовые ответные сообщения вызывающему объекту независимо от возвращаемого значения.Two of the operations are two-way operations, which return underlying response messages to the caller no matter what the return value is. Третья операция принимает вызов (базовое входящее сообщение), но не возвращает базового ответного сообщения.The third operation receives a call, an underlying inbound message, but returns no underlying response message.

[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).Apply the OperationContractAttribute to a method to indicate that the method implements a service operation as part of a service contract (specified by a ServiceContractAttribute attribute).

Используйте свойства OperationContractAttribute для управления структурой операции и значениями, выраженными в метаданных.Use the OperationContractAttribute properties to control the structure of the operation and the values expressed in metadata:

  • Свойство Action задает действие, однозначно определяющее данную операцию.The Action property specifies the action that uniquely identifies this operation. WCF отправляет сообщения запросов в методы на основе их действия.WCF dispatches request messages to methods based on their action.

  • Свойство AsyncPattern указывает, что операция реализована или может быть вызвана асинхронно с помощью пары методов Begin/End.The AsyncPattern property indicates that the operation is implemented or can be called asynchronously using a Begin/End method pair.

  • Свойство HasProtectionLevel указывает, задано ли явно свойство ProtectionLevel.The HasProtectionLevel property indicates whether the ProtectionLevel property has been explicitly set.

  • Свойство IsOneWay указывает, что операция состоит только из одного входного сообщения.The IsOneWay property indicates that the operation only consists of a single input message. Для операции не существует связанного с ней выходного сообщения.The operation has no associated output message.

  • Свойство IsInitiating определяет, может ли быть данная операция начальной операцией сеанса.The IsInitiating property specifies whether this operation can be the initial operation in a session.

  • Свойство IsTerminating указывает, пытается ли WCF завершить текущий сеанс после завершения операции.The IsTerminating property specifies whether WCF attempts to terminate the current session after the operation completes.

  • Свойство ProtectionLevel определяет безопасность уровня сообщений, которая требуется для операции во время выполнения.The ProtectionLevel property specifies the message-level security that an operation requires at run time.

  • Свойство ReplyAction определяет действие ответного сообщения для операции.The ReplyAction property specifies the action of the reply message for the operation.

Атрибут OperationContractAttribute объявляет, что метод представляет собой операцию в контракте службы.The OperationContractAttribute attribute declares that a method is an operation in a service contract. В качестве операций службы представляются только методы, отмеченные атрибутом OperationContractAttribute.Only methods attributed with the OperationContractAttribute are exposed as service operations. Контракт службы без методов, отмеченных атрибутом OperationContractAttribute, не представляет никаких операций.A service contract without any methods marked with the OperationContractAttribute exposes no operations.

Begin ** End ** Свойство указывает, что<пара методов имя_метода > и<> имя_метода, образующих одну операцию, реализованную асинхронно (на клиенте AsyncPattern или служба).The AsyncPattern property indicates that a pair of Begin<methodName> and End<methodName> methods form a single operation implemented asynchronously (whether on the client or the service). Способность службы реализовать операции асинхронно является отдельной частью реализации службы и не представляется в метаданных (например, WSDL).The ability of a service to implement operations asynchronously is a service implementation detail and is not exposed in metadata (such as Web Services Description Language (WSDL)).

Подобным образом клиенты могут выбрать асинхронный вызов операций независимо от реализации метода службы.Similarly, clients can choose to invoke operations asynchronously independent of how the service method is implemented. Асинхронный вызов операций службы в клиенте рекомендуется тогда, когда выполнение метода службы занимает некоторое время, но он должен вернуть информацию непосредственно клиенту.Calling service operations asynchronously in the client is recommended when a service method takes some time but must return information directly to the client. Дополнительные сведения см. в разделе AsyncPattern.For details, see AsyncPattern.

Свойство IsOneWay указывает, что метод не возвращает никакого значения вообще, включая пустое базовое ответное сообщение.The IsOneWay property indicates that a method does not return any value at all, including an empty underlying response message. Метод такого типа полезен для уведомлений или взаимодействия в стиле событий.This type of method is useful for notifications or event-style communication. Методы этого типа не могут вернуть ответное сообщение, поэтому объявление метода должно вернуть void.Methods of this kind cannot return a reply message so the method's declaration must return void.

Важно!

При программном получении банка данных в этом атрибуте используйте ContractDescription класс вместо отражения.When programmatically retrieving the information store in this attribute, use the ContractDescription class instead of reflection.

Примечание

Если свойству IsOneWay присвоено значение false (по умолчанию), даже методы, возвращающие void, являются двусторонними на уровне базовых сообщений.If the IsOneWay property is set to false, (the default), even methods that return void are two-way methods at the underlying message level. В этом случае инфраструктура создает и отправляет пустое сообщение, чтобы указать вызывающему объекту о возврате метода.In this case, the infrastructure creates and sends an empty message to indicate to the caller that the method has returned. Использование такого подхода позволяет приложению и инфраструктуре отправлять информацию об ошибках (например, об ошибках SOAP) назад клиенту.Using this approach enables the application and the infrastructure to send error information (such as a SOAP fault) back to the client. Единственный способ предотвратить создание и отправку ответного сообщения — задание для свойства IsOneWay значения true.Setting IsOneWay to true is the only way to prevent the creation and dispatch of a reply message. Дополнительные сведения см. в разделе односторонние службы.For more information, see One-Way Services.

Свойства Action и ReplyAction могут использоваться не только для изменения действия по умолчанию сообщений SOAP, но и для создания обработчиков нераспознаваемых сообщений или запрета добавления действий для непосредственного программирования сообщений.The Action and ReplyAction properties can be used not only to modify the default action of SOAP messages but also to create handlers for unrecognized messages or to disable adding actions for direct message programming. Используйте свойство IsInitiating, чтобы запретить клиентам вызов конкретной операции службы до других операций.Use the IsInitiating property to prevent clients from calling a particular service operation prior to other operations. IsTerminating Используйте свойство, чтобы служба WCF закрывала канал после того, как клиенты вызывают определенную операцию службы.Use the IsTerminating property to have WCF close the channel after clients call a particular service operation. Дополнительные сведения см. в разделе Использование сеансов.For more information, see Using Sessions.

Свойство ProtectionLevel позволяет указать в контракте операции, должны ли сообщения операции подписываться, шифроваться или подписываться и шифроваться.The ProtectionLevel property enables you to specify on the operation contract whether the operation messages are signed, encrypted, or signed and encrypted. Если привязка не может обеспечить уровень безопасности, определенный контрактом, во время выполнения вызывается исключение.If a binding cannot provide the security level required by the contract, an exception is thrown at run time. Дополнительные сведения см. в ProtectionLevel разделе и Основные сведения об уровне защиты.For more information, see ProtectionLevel and Understanding Protection Level.

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

OperationContractAttribute() OperationContractAttribute() OperationContractAttribute() OperationContractAttribute()

Инициализирует новый экземпляр класса OperationContractAttribute.Initializes a new instance of the OperationContractAttribute class.

Свойства

Action Action Action Action

Возвращает или задает действие WS-Addressing сообщения запроса.Gets or sets the WS-Addressing action of the request message.

AsyncPattern AsyncPattern AsyncPattern AsyncPattern

Указывает, что операция реализуется асинхронно с помощью пары методов Begin<methodName> и End<methodName> контракта службы.Indicates that an operation is implemented asynchronously using a Begin<methodName> and End<methodName> method pair in a service contract.

HasProtectionLevel HasProtectionLevel HasProtectionLevel HasProtectionLevel

Возвращает значение, указывающее, должны ли сообщения этой операции шифроваться, подписываться или шифроваться и подписываться.Gets a value that indicates whether the messages for this operation must be encrypted, signed, or both.

IsInitiating IsInitiating IsInitiating IsInitiating

Возвращает или задает значение, указывающее, реализует ли метод операцию, которая может инициировать сеанс на сервере (если такой сеанс существует).Gets or sets a value that indicates whether the method implements an operation that can initiate a session on the server (if such a session exists).

IsOneWay IsOneWay IsOneWay IsOneWay

Возвращает или задает значение, указывающее, возвращает ли операция ответное сообщение.Gets or sets a value that indicates whether an operation returns a reply message.

IsTerminating IsTerminating IsTerminating IsTerminating

Возвращает или задает значение, указывающее, приводит ли операция службы к закрытию сеанса сервером после отправки ответного сообщения, если оно есть.Gets or sets a value that indicates whether the service operation causes the server to close the session after the reply message, if any, is sent.

Name Name Name Name

Возвращает или задает имя операции.Gets or sets the name of the operation.

ProtectionLevel ProtectionLevel ProtectionLevel ProtectionLevel

Возвращает или задает значение, указывающее, должны ли сообщения операции шифроваться, подписываться или шифроваться и подписываться.Gets or sets a value that specifies whether the messages of an operation must be encrypted, signed, or both.

ReplyAction ReplyAction ReplyAction ReplyAction

Возвращает или задает значение действия SOAP для ответного сообщения операции.Gets or sets the value of the SOAP action for the reply message of the operation.

TypeId TypeId TypeId TypeId

При реализации в производном классе возвращает уникальный идентификатор для этого Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)

Методы

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Возвращает значение, показывающее, равен ли экземпляр указанному объекту.Returns a value that indicates whether this instance is equal to a specified object.

(Inherited from Attribute)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Возвращает хэш-код данного экземпляра.Returns the hash code for this instance.

(Inherited from Attribute)
GetType() GetType() GetType() GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Inherited from Object)
IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute()

При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Inherited from Attribute)
Match(Object) Match(Object) Match(Object) Match(Object)

При переопределении в производном классе возвращает значение, указывающее, является ли этот экземпляр равным заданному объекту.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Inherited from Attribute)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Inherited from Object)

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

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.Maps a set of names to a corresponding set of dispatch identifiers.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Возвращает сведения о типе объекта, которые можно использовать для получения сведений о типе интерфейса.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Inherited from Attribute)
_Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32)

Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Inherited from Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Предоставляет доступ к открытым свойствам и методам объекта.Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

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