ServiceBehaviorAttribute Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Określa zachowanie wewnętrzne wykonywania implementacji kontraktu usługi.
public ref class ServiceBehaviorAttribute sealed : Attribute, System::ServiceModel::Description::IServiceBehavior
[System.AttributeUsage(System.AttributeTargets.Class)]
public sealed class ServiceBehaviorAttribute : Attribute, System.ServiceModel.Description.IServiceBehavior
[<System.AttributeUsage(System.AttributeTargets.Class)>]
type ServiceBehaviorAttribute = class
inherit Attribute
interface IServiceBehavior
Public NotInheritable Class ServiceBehaviorAttribute
Inherits Attribute
Implements IServiceBehavior
- Dziedziczenie
- Atrybuty
- Implementuje
Przykłady
Poniższy przykład kodu przedstawia ServiceBehaviorAttribute właściwości. Klasa BehaviorService
używa atrybutu ServiceBehaviorAttribute , aby wskazać, że:
Obiekt usługi jest przetwarzany po zakończeniu transakcji.
Dla każdej sesji istnieje jeden obiekt usługi.
Usługa jest jednowątkowa i nie obsługuje wywołań reentrant.
Ponadto na poziomie operacji wartości wskazują, OperationBehaviorAttribute że TxWork
metoda automatycznie zaciąga się do przepływanych transakcji lub tworzy nową transakcję do wykonania pracy, a transakcja jest zatwierdzana automatycznie, jeśli nieobsługiwany wyjątek nie występuje.
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:
* -- The executing transaction is committed when
* the operation completes without an
* unhandled exception
* -- Always executes under a flowed transaction.
*/
[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:
' * -- The executing transaction is committed when
' * the operation completes without an
' * unhandled exception
' * -- Always executes under a flowed transaction.
'
<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
Powiązanie bazowe musi obsługiwać przepływane transakcje dla następującego przykładu kodu w celu prawidłowego wykonania. Aby obsługiwać przepływy transakcji przy użyciu WSHttpBindingelementu , na przykład ustaw TransactionFlow właściwość na true
wartość w kodzie lub w pliku konfiguracji aplikacji. Poniższy przykład kodu przedstawia plik konfiguracji dla poprzedniego przykładu.
<configuration>
<system.serviceModel>
<services>
<service
name="Microsoft.WCF.Documentation.BehaviorService"
behaviorConfiguration="metadataAndDebugEnabled"
>
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/SampleService"/>
</baseAddresses>
</host>
<!--
Note:
This example code uses the WSHttpBinding to support transactions using the
WS-AtomicTransactions (WS-AT) protocol. WSHttpBinding is configured to use the
protocol, but the protocol is not enabled on some computers. Use the xws_reg -wsat+
command to enable the WS-AtomicTransactions protocol in the MSDTC service.
-->
<endpoint
contract="Microsoft.WCF.Documentation.IBehaviorService"
binding="wsHttpBinding"
bindingConfiguration="wsHttpBindingWithTXFlow"
address="http://localhost:8080/BehaviorService"
/>
<endpoint
contract="Microsoft.WCF.Documentation.IBehaviorService"
binding="netTcpBinding"
bindingConfiguration="netTcpBindingWithTXFlow"
address="net.tcp://localhost:8081/BehaviorService"
/>
<endpoint
address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange"
/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="metadataAndDebugEnabled">
<serviceDebug
includeExceptionDetailInFaults="true"
/>
<serviceMetadata
httpGetEnabled="true"
httpGetUrl=""
/>
</behavior>
</serviceBehaviors>
</behaviors>
<!-- binding configuration - configures a WSHttpBinding to require transaction flow -->
<bindings>
<wsHttpBinding>
<binding name="wsHttpBindingWithTXFlow" transactionFlow="true" />
</wsHttpBinding>
<netTcpBinding>
<binding name="netTcpBindingWithTXFlow" transactionFlow="true" />
</netTcpBinding>
</bindings>
</system.serviceModel>
</configuration>
Uwagi
ServiceBehaviorAttribute Zastosuj atrybut do implementacji usługi, aby określić zachowanie wykonywania w całej usłudze. (Aby określić zachowanie wykonywania na poziomie metody, użyj atrybutu OperationBehaviorAttribute ). Ten atrybut można zastosować tylko do implementacji usługi. Aby zapoznać się z przykładami roboczymi, zobacz Service: Behaviors Samples (Przykładowe zachowania: usługa: zachowania).
ServiceBehaviorAttribute właściwości to funkcja modelu programowania Windows Communication Foundation (WCF), która umożliwia implementację typowych funkcji, które deweloperzy w przeciwnym razie muszą zaimplementować. Aby uzyskać więcej informacji na temat tych i innych zachowań, zobacz Określanie zachowania usługi Run-Time. Aby uzyskać więcej informacji o podstawowych właściwościach środowiska uruchomieniowego ustawionych przez niektóre z następujących właściwości, zobacz Extending ServiceHost and the Service Model Layer (Rozszerzanie elementu ServiceHost i warstwy modelu usługi).
Właściwość AddressFilterMode określa typ filtru używanego przez system dyspozytora do lokalizowania punktu końcowego obsługującego żądania.
Właściwość AutomaticSessionShutdown automatycznie zamyka sesję po zamknięciu kanału, a usługa zakończyła przetwarzanie pozostałych komunikatów.
Właściwość ConcurrencyMode steruje wewnętrznym modelem wątków, umożliwiając obsługę usług wielowątkowych lub wielowątowych.
Właściwość ConfigurationName służy do deklarowania nazwy do użycia w atrybucie
name
<service>
elementu w pliku konfiguracji.Właściwość IgnoreExtensionDataObject umożliwia czas wykonywania ignorowanie dodatkowych informacji o serializacji, które nie są wymagane do przetworzenia komunikatu.
Właściwość IncludeExceptionDetailInFaults określa, czy nieobsługiwane wyjątki w usłudze są zwracane jako błędy protokołu SOAP. Jest to tylko do celów debugowania.
Właściwość InstanceContextMode określa, czy usługi i ich obiekty usługi mają być poddawane recyklingu podczas wymiany z klientem.
Właściwość ograniczająca MaxItemsInObjectGraph liczbę elementów na grafie obiektu, które są serializowane.
Właściwości Name i Namespace kontrolują nazwę i przestrzeń nazw dla wyrażenia WSDL elementu usługi.
Właściwość ReleaseServiceInstanceOnTransactionComplete określa, czy obiekt usługi jest poddawany recyklingu po zakończeniu transakcji.
Właściwość TransactionAutoCompleteOnSessionClose określa, czy zaległe transakcje są wykonywane po zamknięciu sesji.
Właściwość TransactionIsolationLevel określa poziom izolacji transakcji, który obsługuje kontrakt.
Właściwość TransactionTimeout określa okres, w którym transakcja musi zostać zakończona lub przerwana.
Właściwość UseSynchronizationContext wskazuje, czy automatycznie synchronizować wywołania metody przychodzącej z wątkiem interfejsu użytkownika.
Właściwość ValidateMustUnderstand informuje system, czy powinien potwierdzić, że nagłówki protokołu SOAP oznaczone jako
MustUnderstand
zostały w rzeczywistości zrozumiałe.
Właściwość IncludeExceptionDetailInFaults można również ustawić przy użyciu pliku konfiguracji aplikacji. Aby uzyskać szczegółowe informacje, zobacz IncludeExceptionDetailInFaults.
Konstruktory
ServiceBehaviorAttribute() |
Inicjuje nowe wystąpienie klasy ServiceBehaviorAttribute. |
Właściwości
AddressFilterMode |
Pobiera lub ustawia element AddressFilterMode używany przez dyspozytor do kierowania komunikatów przychodzących do poprawnego punktu końcowego. |
AutomaticSessionShutdown |
Określa, czy program ma automatycznie zamknąć sesję, gdy klient zamknie sesję wyjściową. |
ConcurrencyMode |
Pobiera lub ustawia, czy usługa obsługuje jeden wątek, wiele wątków lub wywołań powtarzających. |
ConfigurationName |
Pobiera lub ustawia wartość użytą do zlokalizowania elementu usługi w pliku konfiguracji aplikacji. |
EnsureOrderedDispatch |
Pobiera lub ustawia wartość wskazującą, czy usługa zamówiona wysyłka jest zapewniona. |
IgnoreExtensionDataObject |
Pobiera lub ustawia wartość określającą, czy wysyłać nieznane dane serializacji do przewodu. |
IncludeExceptionDetailInFaults |
Pobiera lub ustawia wartość określającą, że ogólne nieobsługiwane wyjątki wykonywania mają być konwertowane na FaultException<TDetail> typ ExceptionDetail i wysyłane jako komunikat o błędzie. Ustaw tę wartość |
InstanceContextMode |
Pobiera lub ustawia wartość, która wskazuje, kiedy są tworzone nowe obiekty usługi. |
MaxItemsInObjectGraph |
Pobiera lub ustawia maksymalną liczbę elementów dozwolonych w serializowanym obiekcie. |
Name |
Pobiera lub ustawia wartość atrybutu name w elemecie usługi w języku WSDL (Web Services Description Language). |
Namespace |
Pobiera lub ustawia wartość docelowej przestrzeni nazw dla usługi w języku WSDL (Web Services Description Language). |
ReleaseServiceInstanceOnTransactionComplete |
Pobiera lub ustawia wartość określającą, czy obiekt usługi jest zwalniany po zakończeniu bieżącej transakcji. |
TransactionAutoCompleteOnSessionClose |
Pobiera lub ustawia wartość określającą, czy oczekujące transakcje są wykonywane po zamknięciu bieżącej sesji bez błędu. |
TransactionIsolationLevel |
Określa poziom izolacji transakcji dla nowych transakcji utworzonych wewnątrz usługi i transakcji przychodzących przepływanych z klienta. |
TransactionTimeout |
Pobiera lub ustawia okres, w którym transakcja musi zostać ukończona. |
TypeId |
Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego Attributeelementu . (Odziedziczone po Attribute) |
UseSynchronizationContext |
Pobiera lub ustawia wartość, która określa, czy używać bieżącego kontekstu synchronizacji do wybrania wątku wykonywania. |
ValidateMustUnderstand |
Pobiera lub ustawia wartość, która określa, czy system lub aplikacja wymusza przetwarzanie nagłówka protokołu SOAP |
Metody
Equals(Object) |
Zwraca wartość wskazującą, czy to wystąpienie jest równe podanemu obiektowi. (Odziedziczone po Attribute) |
GetHashCode() |
Zwraca wartość skrótu dla tego wystąpienia. (Odziedziczone po Attribute) |
GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
GetWellKnownSingleton() |
Pobiera obiekt, który implementuje usługę i jest używany jako pojedyncze wystąpienie usługi, lub |
IsDefaultAttribute() |
Podczas zastępowania w klasie pochodnej wskazuje, czy wartość tego wystąpienia jest wartością domyślną dla klasy pochodnej. (Odziedziczone po Attribute) |
Match(Object) |
Po przesłonięciu w klasie pochodnej zwraca wartość wskazującą, czy to wystąpienie jest równe określonemu obiektowi. (Odziedziczone po Attribute) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
SetWellKnownSingleton(Object) |
Określa obiekt, który implementuje usługę i który jest używany jako pojedyncze wystąpienie usługi. |
ShouldSerializeConfigurationName() |
Zwraca wartość wskazującą, czy ConfigurationName właściwość zmieniła się z wartości domyślnej i powinna być serializowana. |
ShouldSerializeReleaseServiceInstanceOnTransactionComplete() |
Zwraca wartość wskazującą, czy ReleaseServiceInstanceOnTransactionComplete właściwość zmieniła się z wartości domyślnej i powinna być serializowana. |
ShouldSerializeTransactionAutoCompleteOnSessionClose() |
Zwraca wartość wskazującą, czy TransactionAutoCompleteOnSessionClose właściwość zmieniła się z wartości domyślnej i powinna być serializowana. |
ShouldSerializeTransactionIsolationLevel() |
Zwraca wartość wskazującą, czy TransactionIsolationLevel właściwość zmieniła się z wartości domyślnej i powinna być serializowana. |
ShouldSerializeTransactionTimeout() |
Zwraca wartość wskazującą, czy TransactionTimeout właściwość zmieniła się z wartości domyślnej i powinna być serializowana. |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
Jawne implementacje interfejsu
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłania. (Odziedziczone po Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Pobiera informacje o typie dla obiektu, który może służyć do pobierania informacji o typie dla interfejsu. (Odziedziczone po Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Pobiera informację o liczbie typów interfejsów, jakie zawiera obiekt (0 lub 1). (Odziedziczone po Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Umożliwia dostęp do właściwości i metod udostępnianych przez obiekt. (Odziedziczone po Attribute) |
IServiceBehavior.AddBindingParameters(ServiceDescription, ServiceHostBase, Collection<ServiceEndpoint>, BindingParameterCollection) |
Przekazuje niestandardowe obiekty danych do powiązań, które obsługują właściwości zachowania. |
IServiceBehavior.ApplyDispatchBehavior(ServiceDescription, ServiceHostBase) |
Dostosowuje czas wykonywania usługi do obsługi właściwości zachowania. |
IServiceBehavior.Validate(ServiceDescription, ServiceHostBase) |
Potwierdza, że opis usługi i host usługi mogą obsługiwać zachowanie. |