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
- Наследование
- Атрибуты
Примеры
В следующем примере кода показан простой контракт службы с одной операцией.
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 |
Указывает, что операция реализуется асинхронно с помощью |
| 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) |