ServiceBehaviorAttribute Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee geeft u het interne uitvoeringsgedrag van een implementatie van een servicecontract op.
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
- Overname
- Kenmerken
- Implementeringen
Voorbeelden
In het volgende codevoorbeeld ziet u de ServiceBehaviorAttribute eigenschappen. De BehaviorService klasse gebruikt het ServiceBehaviorAttribute kenmerk om aan te geven dat:
Het serviceobject wordt gerecycled wanneer de transactie is voltooid.
Er is één serviceobject voor elke sessie.
De service is één threaded en biedt geen ondersteuning voor nieuwe aanroepen.
Bovendien geven de OperationBehaviorAttribute waarden op bewerkingsniveau aan dat de TxWork methode automatisch wordt opgenomen in gestroomde transacties of dat er een nieuwe transactie wordt gemaakt om het werk uit te voeren en dat de transactie automatisch wordt doorgevoerd als er geen onverwerkte uitzondering optreedt.
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
De onderliggende binding moet stroomtransacties ondersteunen voor het volgende codevoorbeeld om correct te kunnen worden uitgevoerd. Als u stroomtransacties wilt ondersteunen met behulp van bijvoorbeeld de WSHttpBindingTransactionFlow eigenschap true in code of in een toepassingsconfiguratiebestand. In het volgende codevoorbeeld ziet u het configuratiebestand voor het voorgaande voorbeeld.
<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>
Opmerkingen
Pas het ServiceBehaviorAttribute kenmerk toe op een service-implementatie om het uitvoeringsgedrag voor de hele service op te geven. (Als u uitvoeringsgedrag op methodeniveau wilt opgeven, gebruikt u het OperationBehaviorAttribute kenmerk.) Dit kenmerk kan alleen worden toegepast op service-implementaties. Zie de service: gedragsvoorbeelden voor werkvoorbeelden.
ServiceBehaviorAttribute eigenschappen zijn een functie voor het programmeermodel van Windows Communication Foundation (WCF) die algemene functies mogelijk maakt die ontwikkelaars anders moeten implementeren. Zie Specifying Service Run-Time Behavior (Service opgeven Run-Time Gedrag) voor meer informatie over deze en andere gedragingen. Zie Uitbreiden van ServiceHost en de servicemodellaag voor meer informatie over de onderliggende runtime-eigenschappen die sommige van de volgende eigenschappen zijn ingesteld.
De AddressFilterMode eigenschap geeft het type filter op dat het dispatchersysteem gebruikt om het eindpunt te vinden dat aanvragen verwerkt.
De AutomaticSessionShutdown eigenschap sluit de sessie automatisch wanneer het kanaal wordt gesloten en de service klaar is met het verwerken van alle resterende berichten.
De ConcurrencyMode eigenschap bepaalt het interne threadingmodel, waardoor ondersteuning wordt ingeschakeld voor reentrant- of multithreaded services.
De ConfigurationName eigenschap wordt gebruikt om een naam te declareren voor gebruik in het
namekenmerk van het<service>element in een configuratiebestand.Met IgnoreExtensionDataObject de eigenschap kan de uitvoeringstijd extra serialisatie-informatie negeren die niet vereist is om het bericht te verwerken.
De IncludeExceptionDetailInFaults eigenschap geeft aan of niet-verwerkte uitzonderingen in een service worden geretourneerd als SOAP-fouten. Dit is alleen voor foutopsporingsdoeleinden.
De InstanceContextMode eigenschap geeft aan of en wanneer services en hun serviceobjecten moeten worden gerecycled tijdens een uitwisseling met een klant.
De MaxItemsInObjectGraph eigenschap die moet worden beperkt voor het aantal items in een objectgrafiek dat wordt geserialiseerd.
De Name en Namespace eigenschappen bepalen de naam en naamruimte voor de WSDL-expressie van het service-element.
De ReleaseServiceInstanceOnTransactionComplete eigenschap geeft aan of het serviceobject wordt gerecycled wanneer een transactie is voltooid.
De TransactionAutoCompleteOnSessionClose eigenschap geeft aan of openstaande transacties worden voltooid wanneer de sessie wordt gesloten.
De TransactionIsolationLevel eigenschap geeft het isolatieniveau voor transacties op dat door het contract wordt ondersteund.
De TransactionTimeout eigenschap geeft de periode aan waarin een transactie moet worden voltooid of wordt afgebroken.
De UseSynchronizationContext eigenschap geeft aan of binnenkomende methodeaanroepen automatisch moeten worden gesynchroniseerd met de thread van de gebruikersinterface.
De ValidateMustUnderstand eigenschap informeert het systeem of het moet bevestigen dat SOAP-headers die zijn gemarkeerd als
MustUnderstanddie in feite zijn begrepen.
De IncludeExceptionDetailInFaults eigenschap kan ook worden ingesteld met behulp van een toepassingsconfiguratiebestand. Zie IncludeExceptionDetailInFaultsvoor meer informatie.
Constructors
| Name | Description |
|---|---|
| ServiceBehaviorAttribute() |
Initialiseert een nieuw exemplaar van de ServiceBehaviorAttribute klasse. |
Eigenschappen
| Name | Description |
|---|---|
| AddressFilterMode |
Hiermee haalt u de AddressFilterMode gegevens op die door de dispatcher worden gebruikt om binnenkomende berichten naar het juiste eindpunt te routeren. |
| AutomaticSessionShutdown |
Hiermee geeft u op of een sessie automatisch moet worden gesloten wanneer een client een uitvoersessie sluit. |
| ConcurrencyMode |
Hiermee wordt opgehaald of ingesteld of een service één thread, meerdere threads of nieuwe aanroepen ondersteunt. |
| ConfigurationName |
Hiermee haalt u de waarde op die wordt gebruikt om het service-element in een toepassingsconfiguratiebestand te vinden of stelt u deze in. |
| EnsureOrderedDispatch |
Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of de bestelde verzending van de service is gegarandeerd. |
| IgnoreExtensionDataObject |
Hiermee wordt een waarde opgehaald of ingesteld waarmee wordt aangegeven of onbekende serialisatiegegevens naar de kabel moeten worden verzonden. |
| IncludeExceptionDetailInFaults |
Hiermee wordt een waarde opgehaald of ingesteld die aangeeft dat algemene niet-verwerkte uitvoeringsonderzondering moet worden geconverteerd naar een FaultException<TDetail> type ExceptionDetail en als een foutbericht moet worden verzonden. Stel deze optie alleen in op |
| InstanceContextMode |
Hiermee wordt de waarde opgehaald of ingesteld die aangeeft wanneer nieuwe serviceobjecten worden gemaakt. |
| MaxItemsInObjectGraph |
Hiermee wordt het maximum aantal items opgehaald of ingesteld dat is toegestaan in een geserialiseerd object. |
| Name |
Hiermee haalt u de waarde van het naamkenmerk op in het service-element in WSDL (Web Services Description Language). |
| Namespace |
Hiermee wordt de waarde van de doelnaamruimte voor de service opgehaald of ingesteld in WSDL (Web Services Description Language). |
| ReleaseServiceInstanceOnTransactionComplete |
Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of het serviceobject wordt vrijgegeven wanneer de huidige transactie is voltooid. |
| TransactionAutoCompleteOnSessionClose |
Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of wachtende transacties worden voltooid wanneer de huidige sessie zonder fouten wordt gesloten. |
| TransactionIsolationLevel |
Hiermee geeft u het niveau van transactieisolatie op voor nieuwe transacties die in de service zijn gemaakt en binnenkomende transacties die zijn gestroomd vanaf een client. |
| TransactionTimeout |
Hiermee haalt u de periode op waarin een transactie moet worden voltooid of stelt u deze in. |
| TypeId |
Wanneer deze wordt geïmplementeerd in een afgeleide klasse, krijgt u Attributehiervoor een unieke id. (Overgenomen van Attribute) |
| UseSynchronizationContext |
Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of de huidige synchronisatiecontext moet worden gebruikt om de thread van de uitvoering te kiezen. |
| ValidateMustUnderstand |
Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of het systeem of de toepassing SOAP-headerverwerking |
Methoden
| Name | Description |
|---|---|
| Equals(Object) |
Retourneert een waarde die aangeeft of dit exemplaar gelijk is aan een opgegeven object. (Overgenomen van Attribute) |
| GetHashCode() |
Retourneert de hash-code voor dit exemplaar. (Overgenomen van Attribute) |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| GetWellKnownSingleton() |
Hiermee wordt een object opgehaald dat de service implementeert en die wordt gebruikt als het singleton-exemplaar van de service, of |
| IsDefaultAttribute() |
Wanneer deze wordt overschreven in een afgeleide klasse, geeft u aan of de waarde van dit exemplaar de standaardwaarde is voor de afgeleide klasse. (Overgenomen van Attribute) |
| Match(Object) |
Wanneer deze wordt overschreven in een afgeleide klasse, wordt een waarde geretourneerd die aangeeft of dit exemplaar gelijk is aan een opgegeven object. (Overgenomen van Attribute) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| SetWellKnownSingleton(Object) |
Hiermee geeft u een object op dat de service implementeert en die wordt gebruikt als het singleton-exemplaar van de service. |
| ShouldSerializeConfigurationName() |
Retourneert een waarde die aangeeft of de eigenschap is gewijzigd van de ConfigurationName standaardwaarde en moet worden geserialiseerd. |
| ShouldSerializeReleaseServiceInstanceOnTransactionComplete() |
Retourneert een waarde die aangeeft of de eigenschap is gewijzigd van de ReleaseServiceInstanceOnTransactionComplete standaardwaarde en moet worden geserialiseerd. |
| ShouldSerializeTransactionAutoCompleteOnSessionClose() |
Retourneert een waarde die aangeeft of de eigenschap is gewijzigd van de TransactionAutoCompleteOnSessionClose standaardwaarde en moet worden geserialiseerd. |
| ShouldSerializeTransactionIsolationLevel() |
Retourneert een waarde die aangeeft of de eigenschap is gewijzigd van de TransactionIsolationLevel standaardwaarde en moet worden geserialiseerd. |
| ShouldSerializeTransactionTimeout() |
Retourneert een waarde die aangeeft of de eigenschap is gewijzigd van de TransactionTimeout standaardwaarde en moet worden geserialiseerd. |
| ToString() |
Retourneert een tekenreeks die het huidige object vertegenwoordigt. (Overgenomen van Object) |
Expliciete interface-implementaties
| Name | Description |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Hiermee wordt een set namen toegewezen aan een bijbehorende set verzend-id's. (Overgenomen van Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Hiermee haalt u de typegegevens voor een object op, die kan worden gebruikt om de typegegevens voor een interface op te halen. (Overgenomen van Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Hiermee wordt het aantal type-informatieinterfaces opgehaald dat een object biedt (0 of 1). (Overgenomen van Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Biedt toegang tot eigenschappen en methoden die door een object worden weergegeven. (Overgenomen van Attribute) |
| IServiceBehavior.AddBindingParameters(ServiceDescription, ServiceHostBase, Collection<ServiceEndpoint>, BindingParameterCollection) |
Hiermee worden aangepaste gegevensobjecten doorgegeven aan de bindingen die ondersteuning bieden voor de gedragseigenschappen. |
| IServiceBehavior.ApplyDispatchBehavior(ServiceDescription, ServiceHostBase) |
Hiermee past u de uitvoeringstijd van de service aan om de gedragseigenschappen te ondersteunen. |
| IServiceBehavior.Validate(ServiceDescription, ServiceHostBase) |
Bevestigt dat de servicebeschrijving en de servicehost het gedrag kunnen ondersteunen. |