OperationBehaviorAttribute Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Especifica o comportamento de execução local de um método de serviço.
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
- Herança
- Atributos
- Implementações
Exemplos
O exemplo de código a seguir mostra uma operação que é executada dentro de uma transação distribuída obrigatória. A TransactionScopeRequired propriedade indica que o método é executado sob a transação do chamador e a TransactionAutoComplete propriedade indica que, se não ocorrerem exceções não tratadas, a transação será confirmada automaticamente. Se ocorrer uma exceção sem tratamento, a transação será anulada.
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
Comentários
Use o OperationBehaviorAttribute atributo para indicar qual comportamento de execução específico da operação a operação tem quando executada. (Para especificar o comportamento de execução no nível do serviço, use o ServiceBehaviorAttribute atributo.)
Observação
Você também pode usar OperationBehaviorAttribute para configurar uma operação de contrato de retorno de chamada em um aplicativo cliente duplex. Quando usada em uma operação de retorno de chamada, a ReleaseInstanceMode propriedade deve ser None ou uma exceção InvalidOperationException é lançada em runtime.
O OperationBehaviorAttribute atributo é um recurso de modelo de programação do WCF (Windows Communication Foundation) que permite recursos comuns que os desenvolvedores de outra forma devem implementar a si mesmos.
A AutoDisposeParameters propriedade controla se os objetos de parâmetro passados para uma operação são descartados quando a operação é concluída.
A TransactionAutoComplete propriedade especifica se a transação na qual o método é executado será confirmada automaticamente se não ocorrerem exceções não tratadas.
A TransactionScopeRequired propriedade especifica se um método deve ser executado dentro de uma transação.
A Impersonation propriedade especifica se a operação de serviço pode, deve ou não representar a identidade do chamador.
A ReleaseInstanceMode propriedade especifica quando os objetos de serviço são reciclados durante o processo de invocação do método.
Construtores
OperationBehaviorAttribute() |
Inicializa uma nova instância da classe OperationBehaviorAttribute. |
Propriedades
AutoDisposeParameters |
Obtém ou define um valor que indica se os parâmetros devem ser descartados automaticamente. |
Impersonation |
Obtém ou define um valor que indica o nível de representação do chamador com suporte pela operação. |
ReleaseInstanceMode |
Obtém ou define um valor que indica quando reciclar o objeto de serviço no curso de uma invocação de operação. |
TransactionAutoComplete |
Obtém ou define um valor que indica se o escopo da transação atual deve ser concluído automaticamente, se não ocorrer nenhuma exceção sem tratamento. |
TransactionScopeRequired |
Obtém ou define um valor que indica se o método requer um escopo de transação para sua execução. |
TypeId |
Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Attribute. (Herdado de Attribute) |
Métodos
Equals(Object) |
Retorna um valor que indica se essa instância é igual a um objeto especificado. (Herdado de Attribute) |
GetHashCode() |
Retorna o código hash para a instância. (Herdado de Attribute) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
IsDefaultAttribute() |
Quando substituído em uma classe derivada, indica se o valor dessa instância é o valor padrão para a classe derivada. (Herdado de Attribute) |
Match(Object) |
Quando substituído em uma classe derivada, retorna um valor que indica se essa instância é igual a um objeto especificado. (Herdado de Attribute) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |