ServiceBehaviorAttribute Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Spécifie le comportement d’exécution interne d’une implémentation de contrat de service.
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
- Héritage
- Attributs
- Implémente
Exemples
L’exemple de code suivant illustre les ServiceBehaviorAttribute propriétés. La BehaviorService classe utilise l’attribut ServiceBehaviorAttribute pour indiquer que :
L’objet de service est recyclé lorsque la transaction est terminée.
Il existe un objet de service pour chaque session.
Le service est monothread et ne prend pas en charge les appels reentrants.
En outre, au niveau de l’opération, les OperationBehaviorAttribute valeurs indiquent que la TxWork méthode s’inscrit automatiquement dans les transactions en flux ou crée une nouvelle transaction pour effectuer le travail, et que la transaction est validée automatiquement si une exception non gérée ne se produit pas.
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
La liaison sous-jacente doit prendre en charge les transactions transmises pour que l’exemple de code suivant s’exécute correctement. Pour prendre en charge les transactions transmises à l’aide de la WSHttpBindingpropriété, par exemple, définissez la propriété true dans le TransactionFlow code ou dans un fichier de configuration d’application. L’exemple de code suivant montre le fichier de configuration de l’exemple précédent.
<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>
Remarques
Appliquez l’attribut à une implémentation de service pour spécifier le ServiceBehaviorAttribute comportement d’exécution à l’échelle du service. (Pour spécifier le comportement d’exécution au niveau de la méthode, utilisez l’attribut OperationBehaviorAttribute .) Cet attribut ne peut être appliqué qu’aux implémentations de service. Pour obtenir des exemples de travail, consultez les exemples de comportement du service :
ServiceBehaviorAttribute les propriétés sont une fonctionnalité de modèle de programmation Windows Communication Foundation (WCF) qui permet aux développeurs d’implémenter des fonctionnalités communes. Pour plus d’informations sur ces comportements et d’autres comportements, consultez Spécification du comportement du service Run-Time. Pour plus d’informations sur les propriétés d’exécution sous-jacentes définies par certaines des propriétés suivantes, consultez Extension de ServiceHost et de la couche de modèle de service.
La AddressFilterMode propriété spécifie le type de filtre utilisé par le système de répartiteur pour localiser le point de terminaison qui gère les requêtes.
La AutomaticSessionShutdown propriété ferme automatiquement la session lorsque le canal est fermé et que le service a terminé le traitement des messages restants.
La ConcurrencyMode propriété contrôle le modèle de thread interne, ce qui permet la prise en charge des services réentrants ou multithread.
La ConfigurationName propriété est utilisée pour déclarer un nom à utiliser dans l’attribut
namede l’élément<service>dans un fichier de configuration.La IgnoreExtensionDataObject propriété permet à l’exécution d’ignorer les informations de sérialisation supplémentaires qui ne sont pas requises pour traiter le message.
La IncludeExceptionDetailInFaults propriété spécifie si les exceptions non gérées dans un service sont retournées en tant qu’erreurs SOAP. Il s’agit uniquement d’un débogage.
La InstanceContextMode propriété spécifie si et quand les services et leurs objets de service doivent être recyclés lors d’un échange avec un client.
Propriété MaxItemsInObjectGraph à limiter au nombre d’éléments d’un graphique d’objet sérialisé.
Namespace Les Name propriétés contrôlent le nom et l’espace de noms de l’expression WSDL de l’élément de service.
La ReleaseServiceInstanceOnTransactionComplete propriété spécifie si l’objet de service est recyclé lorsqu’une transaction est terminée.
La propriété TransactionAutoCompleteOnSessionClose spécifie si les transactions en attente sont exécutées lorsque la session se ferme.
La TransactionIsolationLevel propriété spécifie le niveau d’isolation des transactions pris en charge par le contrat.
La TransactionTimeout propriété spécifie la période pendant laquelle une transaction doit se terminer ou abandonner.
La UseSynchronizationContext propriété indique s’il faut synchroniser automatiquement les appels de méthode entrant avec le thread d’interface utilisateur.
La ValidateMustUnderstand propriété informe le système s’il doit confirmer que les en-têtes SOAP marqués comme
MustUnderstandétant, en fait, ont été compris.
La IncludeExceptionDetailInFaults propriété peut également être définie à l’aide d’un fichier de configuration d’application. Pour plus d’informations, consultez IncludeExceptionDetailInFaults.
Constructeurs
| Nom | Description |
|---|---|
| ServiceBehaviorAttribute() |
Initialise une nouvelle instance de la classe ServiceBehaviorAttribute. |
Propriétés
| Nom | Description |
|---|---|
| AddressFilterMode |
Obtient ou définit celui AddressFilterMode utilisé par le répartiteur pour router les messages entrants vers le point de terminaison correct. |
| AutomaticSessionShutdown |
Spécifie s’il faut fermer automatiquement une session lorsqu’un client ferme une session de sortie. |
| ConcurrencyMode |
Obtient ou définit si un service prend en charge un thread, plusieurs threads ou des appels reentrants. |
| ConfigurationName |
Obtient ou définit la valeur utilisée pour localiser l’élément de service dans un fichier de configuration d’application. |
| EnsureOrderedDispatch |
Obtient ou définit une valeur qui indique si la répartition ordonnée du service est assurée. |
| IgnoreExtensionDataObject |
Obtient ou définit une valeur qui spécifie s’il faut envoyer des données de sérialisation inconnues sur le câble. |
| IncludeExceptionDetailInFaults |
Obtient ou définit une valeur qui spécifie que les exceptions d’exécution non gérées générales doivent être converties en un FaultException<TDetail> type ExceptionDetail et envoyées en tant que message d’erreur. Définissez cette valeur |
| InstanceContextMode |
Obtient ou définit la valeur qui indique quand de nouveaux objets de service sont créés. |
| MaxItemsInObjectGraph |
Obtient ou définit le nombre maximal d’éléments autorisés dans un objet sérialisé. |
| Name |
Obtient ou définit la valeur de l’attribut de nom dans l’élément de service dans le langage WSDL (Web Services Description Language). |
| Namespace |
Obtient ou définit la valeur de l’espace de noms cible pour le service dans le langage WSDL (Web Services Description Language). |
| ReleaseServiceInstanceOnTransactionComplete |
Obtient ou définit une valeur qui spécifie si l’objet de service est libéré lorsque la transaction actuelle se termine. |
| TransactionAutoCompleteOnSessionClose |
Obtient ou définit une valeur qui spécifie si les transactions en attente sont terminées lorsque la session active se ferme sans erreur. |
| TransactionIsolationLevel |
Spécifie le niveau d’isolation des transactions pour les nouvelles transactions créées à l’intérieur du service et les transactions entrantes transmises à partir d’un client. |
| TransactionTimeout |
Obtient ou définit la période pendant laquelle une transaction doit se terminer. |
| TypeId |
En cas d’implémentation dans une classe dérivée, obtient un identificateur unique pour cette Attribute. (Hérité de Attribute) |
| UseSynchronizationContext |
Obtient ou définit une valeur qui spécifie s’il faut utiliser le contexte de synchronisation actuel pour choisir le thread d’exécution. |
| ValidateMustUnderstand |
Obtient ou définit une valeur qui spécifie si le système ou l’application applique le traitement d’en-tête SOAP |
Méthodes
| Nom | Description |
|---|---|
| Equals(Object) |
Retourne une valeur qui indique si cette instance est égale à un objet spécifié. (Hérité de Attribute) |
| GetHashCode() |
Retourne le code de hachage pour cette instance. (Hérité de Attribute) |
| GetType() |
Obtient la Type de l’instance actuelle. (Hérité de Object) |
| GetWellKnownSingleton() |
Récupère un objet qui implémente le service et qui est utilisé comme instance singleton du service, ou |
| IsDefaultAttribute() |
En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut de la classe dérivée. (Hérité de Attribute) |
| Match(Object) |
En cas de substitution dans une classe dérivée, retourne une valeur qui indique si cette instance est égale à un objet spécifié. (Hérité de Attribute) |
| MemberwiseClone() |
Crée une copie superficielle du Objectactuel. (Hérité de Object) |
| SetWellKnownSingleton(Object) |
Spécifie un objet qui implémente le service et qui est utilisé comme instance singleton du service. |
| ShouldSerializeConfigurationName() |
Retourne une valeur qui indique si la ConfigurationName propriété a changé de sa valeur par défaut et doit être sérialisée. |
| ShouldSerializeReleaseServiceInstanceOnTransactionComplete() |
Retourne une valeur qui indique si la ReleaseServiceInstanceOnTransactionComplete propriété a changé de sa valeur par défaut et doit être sérialisée. |
| ShouldSerializeTransactionAutoCompleteOnSessionClose() |
Retourne une valeur qui indique si la TransactionAutoCompleteOnSessionClose propriété a changé de sa valeur par défaut et doit être sérialisée. |
| ShouldSerializeTransactionIsolationLevel() |
Retourne une valeur qui indique si la TransactionIsolationLevel propriété a changé de sa valeur par défaut et doit être sérialisée. |
| ShouldSerializeTransactionTimeout() |
Retourne une valeur qui indique si la TransactionTimeout propriété a changé de sa valeur par défaut et doit être sérialisée. |
| ToString() |
Retourne une chaîne qui représente l’objet actuel. (Hérité de Object) |
Implémentations d’interfaces explicites
| Nom | Description |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch. (Hérité de Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Récupère les informations de type d’un objet, qui peuvent être utilisées pour obtenir les informations de type d’une interface. (Hérité de Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1). (Hérité de Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Fournit l’accès aux propriétés et méthodes exposées par un objet. (Hérité de Attribute) |
| IServiceBehavior.AddBindingParameters(ServiceDescription, ServiceHostBase, Collection<ServiceEndpoint>, BindingParameterCollection) |
Transmet des objets de données personnalisés aux liaisons qui prennent en charge les propriétés de comportement. |
| IServiceBehavior.ApplyDispatchBehavior(ServiceDescription, ServiceHostBase) |
Personnalise le temps d’exécution du service pour prendre en charge les propriétés de comportement. |
| IServiceBehavior.Validate(ServiceDescription, ServiceHostBase) |
Confirme que la description du service et l’hôte de service sont capables de prendre en charge le comportement. |