OperationBehaviorAttribute Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Задает поведение локального выполнения метода службы.
public ref class OperationBehaviorAttribute sealed : Attribute, System::ServiceModel::Description::IOperationBehavior
[System.AttributeUsage(System.AttributeTargets.Method)]
public sealed class OperationBehaviorAttribute : Attribute, System.ServiceModel.Description.IOperationBehavior
[<System.AttributeUsage(System.AttributeTargets.Method)>]
type OperationBehaviorAttribute = class
inherit Attribute
interface IOperationBehavior
Public NotInheritable Class OperationBehaviorAttribute
Inherits Attribute
Implements IOperationBehavior
- Наследование
- Атрибуты
- Реализации
Примеры
В следующем примере кода показана операция, которая выполняется в рамках обязательной распределенной транзакции. Свойство TransactionScopeRequired указывает, что метод выполняется под транзакцией вызывающего объекта, а TransactionAutoComplete свойство указывает, что если необработанные исключения не возникают, транзакция фиксируется автоматически. Если возникает необработанное исключение, транзакция прервана.
using System;
using System.ServiceModel;
using System.Transactions;
namespace Microsoft.WCF.Documentation
{
[ServiceContract(Namespace="http://microsoft.wcf.documentation", SessionMode=SessionMode.Required)]
public interface IBehaviorService
{
[OperationContract]
string TxWork(string message);
}
// Note: To use the TransactionIsolationLevel property, you
// must add a reference to the System.Transactions.dll assembly.
/* The following service implementation:
* -- Processes messages on one thread at a time
* -- Creates one service object per session
* -- Releases the service object when the transaction commits
*/
[ServiceBehavior(
ConcurrencyMode=ConcurrencyMode.Single,
InstanceContextMode=InstanceContextMode.PerSession,
ReleaseServiceInstanceOnTransactionComplete=true
)]
public class BehaviorService : IBehaviorService, IDisposable
{
Guid myID;
public BehaviorService()
{
myID = Guid.NewGuid();
Console.WriteLine(
"Object "
+ myID.ToString()
+ " created.");
}
/*
* The following operation-level behaviors are specified:
* -- Always executes under a transaction scope.
* -- The transaction scope is completed when the operation terminates
* without an unhandled exception.
*/
[OperationBehavior(
TransactionAutoComplete = true,
TransactionScopeRequired = true
)]
[TransactionFlow(TransactionFlowOption.Mandatory)]
public string TxWork(string message)
{
// Do some transactable work.
Console.WriteLine("TxWork called with: " + message);
// Display transaction information.
TransactionInformation info = Transaction.Current.TransactionInformation;
Console.WriteLine("The distributed tx ID: {0}.", info.DistributedIdentifier);
Console.WriteLine("The tx status: {0}.", info.Status);
return String.Format("Hello. This was object {0}.",myID.ToString()) ;
}
public void Dispose()
{
Console.WriteLine(
"Service "
+ myID.ToString()
+ " is being recycled."
);
}
}
}
Imports System.ServiceModel
Imports System.Transactions
Namespace Microsoft.WCF.Documentation
<ServiceContract(Namespace:="http://microsoft.wcf.documentation", SessionMode:=SessionMode.Required)> _
Public Interface IBehaviorService
<OperationContract> _
Function TxWork(ByVal message As String) As String
End Interface
' Note: To use the TransactionIsolationLevel property, you
' must add a reference to the System.Transactions.dll assembly.
' The following service implementation:
' * -- Processes messages on one thread at a time
' * -- Creates one service object per session
' * -- Releases the service object when the transaction commits
<ServiceBehavior(ConcurrencyMode:=ConcurrencyMode.Single, InstanceContextMode:=InstanceContextMode.PerSession, _
ReleaseServiceInstanceOnTransactionComplete:=True)> _
Public Class BehaviorService
Implements IBehaviorService, IDisposable
Private myID As Guid
Public Sub New()
myID = Guid.NewGuid()
Console.WriteLine("Object " & myID.ToString() & " created.")
End Sub
'
' * The following operation-level behaviors are specified:
' * -- Always executes under a transaction scope.
' * -- The transaction scope is completed when the operation terminates
' * without an unhandled exception.
'
<OperationBehavior(TransactionAutoComplete:=True, TransactionScopeRequired:=True), _
TransactionFlow(TransactionFlowOption.Mandatory)> _
Public Function TxWork(ByVal message As String) As String Implements IBehaviorService.TxWork
' Do some transactable work.
Console.WriteLine("TxWork called with: " & message)
' Display transaction information.
Dim info As TransactionInformation = Transaction.Current.TransactionInformation
Console.WriteLine("The distributed tx ID: {0}.", info.DistributedIdentifier)
Console.WriteLine("The tx status: {0}.", info.Status)
Return String.Format("Hello. This was object {0}.", myID.ToString())
End Function
Public Sub Dispose() Implements IDisposable.Dispose
Console.WriteLine("Service " & myID.ToString() & " is being recycled.")
End Sub
End Class
End Namespace
Комментарии
OperationBehaviorAttribute Используйте атрибут, чтобы указать, какое поведение выполнения операции выполняется при выполнении. (Чтобы указать поведение выполнения на уровне обслуживания, используйте ServiceBehaviorAttribute атрибут.)
Замечание
Можно также использовать OperationBehaviorAttribute для настройки операции обратного контракта в дуплексном клиентском приложении. При использовании для операции ReleaseInstanceMode обратного вызова свойство должно быть None или InvalidOperationException исключение создается во время выполнения.
Атрибут OperationBehaviorAttribute — это функция программирования Windows Communication Foundation (WCF), которая включает общие функции, которые разработчики в противном случае должны реализовать.
Свойство AutoDisposeParameters определяет, удаляются ли объекты параметров, передаваемые операции, после завершения операции.
Свойство TransactionAutoComplete указывает, выполняется ли транзакция, в которой выполняется метод, автоматически фиксируется, если необработанные исключения не происходят.
Свойство TransactionScopeRequired указывает, должен ли метод выполняться в транзакции.
Свойство Impersonation указывает, может ли операция службы, должна или не может олицетворить удостоверение вызывающего объекта.
Свойство ReleaseInstanceMode указывает, когда объекты службы перезапускаются во время процесса вызова метода.
Конструкторы
| Имя | Описание |
|---|---|
| OperationBehaviorAttribute() |
Инициализирует новый экземпляр класса OperationBehaviorAttribute. |
Свойства
| Имя | Описание |
|---|---|
| AutoDisposeParameters |
Возвращает или задает значение, указывающее, следует ли автоматически удалять параметры. |
| Impersonation |
Возвращает или задает значение, указывающее уровень олицетворения вызывающего объекта, который поддерживает операция. |
| ReleaseInstanceMode |
Возвращает или задает значение, указывающее, когда во время вызова операции для перезапуска объекта службы. |
| TransactionAutoComplete |
Возвращает или задает значение, указывающее, следует ли автоматически завершить текущую область транзакции, если необработанные исключения не возникают. |
| TransactionScopeRequired |
Возвращает или задает значение, указывающее, требуется ли методу область транзакции для его выполнения. |
| TypeId |
При реализации в производном классе получает уникальный идентификатор для этого Attribute. (Унаследовано от Attribute) |
Методы
| Имя | Описание |
|---|---|
| Equals(Object) |
Возвращает значение, указывающее, равен ли этот экземпляр указанному объекту. (Унаследовано от Attribute) |
| GetHashCode() |
Возвращает хэш-код для этого экземпляра. (Унаследовано от Attribute) |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| IsDefaultAttribute() |
При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса. (Унаследовано от Attribute) |
| Match(Object) |
При переопределении в производном классе возвращает значение, указывающее, равен ли этот экземпляр указанному объекту. (Унаследовано от Attribute) |
| MemberwiseClone() |
Создает неглубокую копию текущей Object. (Унаследовано от Object) |
| ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |