ServiceBehaviorAttribute Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Určuje interní chování provádění implementace kontraktu služby.
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
- Dědičnost
- Atributy
- Implementuje
Příklady
Následující příklad kódu ukazuje ServiceBehaviorAttribute vlastnosti. Třída BehaviorService používá ServiceBehaviorAttribute atribut k označení, že:
Po dokončení transakce se objekt služby recykluje.
Pro každou relaci je jeden objekt služby.
Služba je jednovláknová a nepodporuje opakované volání.
Na úrovni operace navíc hodnoty označují, OperationBehaviorAttribute že TxWork metoda automaticky zapisuje do toků transakcí nebo vytvoří novou transakci pro provedení práce a že transakce je potvrzena automaticky, pokud nedojde k neošetřené výjimce.
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
Základní vazba musí podporovat tokované transakce, aby se následující příklad kódu spustil správně. Chcete-li podporovat tokované transakce pomocí WSHttpBinding, například nastavit TransactionFlow vlastnost v true kódu nebo v konfiguračním souboru aplikace. Následující příklad kódu ukazuje konfigurační soubor pro předchozí ukázku.
<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>
Poznámky
Použití atributu ServiceBehaviorAttribute na implementaci služby k určení chování provádění na úrovni služby. (Chcete-li zadat chování provádění na úrovni metody, použijte OperationBehaviorAttribute atribut.) Tento atribut lze použít pouze u implementací služeb. Pracovní příklady najdete ve službě: Ukázky chování.
ServiceBehaviorAttribute vlastnosti jsou funkce programovacího modelu WCF (Windows Communication Foundation), která umožňuje běžné funkce, které vývojáři jinak musí implementovat. Další informace o těchto a dalších chováních naleznete v tématu Určení chování služby Run-Time. Další informace o základních vlastnostech modulu runtime, které některé z následujících vlastností nastavit, naleznete v tématu Rozšíření ServiceHost a vrstva modelu služby.
Vlastnost AddressFilterMode určuje typ filtru, který dispečer používá k vyhledání koncového bodu, který zpracovává požadavky.
Vlastnost AutomaticSessionShutdown automaticky zavře relaci po zavření kanálu a služba dokončila zpracování všech zbývajících zpráv.
Vlastnost ConcurrencyMode řídí interní model threadingu, což umožňuje podporu pro služby s více vlákny nebo reentrant.
Vlastnost ConfigurationName slouží k deklaraci názvu pro použití v
nameatributu<service>elementu v konfiguračním souboru.Vlastnost IgnoreExtensionDataObject umožňuje dobu běhu ignorovat další serializační informace, které nejsou nutné ke zpracování zprávy.
Vlastnost IncludeExceptionDetailInFaults určuje, zda neošetřené výjimky ve službě jsou vráceny jako chyby SOAP. Toto je pouze pro účely ladění.
Vlastnost InstanceContextMode určuje, zda a kdy mají být služby a jejich objekty služeb recyklovány během výměny s klientem.
Vlastnost MaxItemsInObjectGraph , která má být omezena na počet položek v grafu objektu, který je serializován.
Namespace Vlastnosti Name řídí název a obor názvů pro výraz WSDL elementu služby.
Vlastnost ReleaseServiceInstanceOnTransactionComplete určuje, zda je objekt služby recyklován po dokončení transakce.
Vlastnost TransactionAutoCompleteOnSessionClose určuje, zda se při zavření relace dokončí nevyřízené transakce.
Vlastnost TransactionIsolationLevel určuje úroveň izolace transakce, kterou kontrakt podporuje.
Vlastnost TransactionTimeout určuje časové období, během kterého se transakce musí dokončit, nebo ji přeruší.
Vlastnost UseSynchronizationContext určuje, zda se mají automaticky synchronizovat příchozí volání metody s vláknem uživatelského rozhraní.
Vlastnost ValidateMustUnderstand informuje systém, zda má potvrdit, že hlavičky SOAP označené jako
MustUnderstandbyly ve skutečnosti srozumitelné.
Vlastnost IncludeExceptionDetailInFaults lze také nastavit pomocí konfiguračního souboru aplikace. Podrobnosti najdete v IncludeExceptionDetailInFaults.
Konstruktory
| Name | Description |
|---|---|
| ServiceBehaviorAttribute() |
Inicializuje novou instanci ServiceBehaviorAttribute třídy. |
Vlastnosti
| Name | Description |
|---|---|
| AddressFilterMode |
Získá nebo nastaví AddressFilterMode , který dispečer používá ke směrování příchozích zpráv do správného koncového bodu. |
| AutomaticSessionShutdown |
Určuje, jestli se má relace automaticky zavřít, když klient zavře výstupní relaci. |
| ConcurrencyMode |
Získá nebo nastaví, zda služba podporuje jedno vlákno, více vláken nebo znovu zadat volání. |
| ConfigurationName |
Získá nebo nastaví hodnotu použitou k vyhledání prvku služby v konfiguračním souboru aplikace. |
| EnsureOrderedDispatch |
Získá nebo nastaví hodnotu, která určuje, zda je zajištěno odeslání objednávky služby. |
| IgnoreExtensionDataObject |
Získá nebo nastaví hodnotu, která určuje, zda se mají odesílat neznámá serializační data do drátu. |
| IncludeExceptionDetailInFaults |
Získá nebo nastaví hodnotu, která určuje, že obecné neošetřené výjimky spuštění jsou převedeny na FaultException<TDetail> typ ExceptionDetail a odeslán jako chybová zpráva. Tuto možnost nastavte |
| InstanceContextMode |
Získá nebo nastaví hodnotu, která označuje při vytváření nových objektů služby. |
| MaxItemsInObjectGraph |
Získá nebo nastaví maximální počet položek povolených v serializovaném objektu. |
| Name |
Získá nebo nastaví hodnotu atributu name v elementu služby ve wsDL (Web Services Description Language). |
| Namespace |
Získá nebo nastaví hodnotu cílového oboru názvů pro službu ve WSDL (Web Services Description Language). |
| ReleaseServiceInstanceOnTransactionComplete |
Získá nebo nastaví hodnotu, která určuje, zda je objekt služby uvolněn po dokončení aktuální transakce. |
| TransactionAutoCompleteOnSessionClose |
Získá nebo nastaví hodnotu, která určuje, zda čekající transakce jsou dokončeny při ukončení aktuální relace bez chyby. |
| TransactionIsolationLevel |
Určuje úroveň izolace transakcí pro nové transakce vytvořené uvnitř služby a příchozí transakce proudené z klienta. |
| TransactionTimeout |
Získá nebo nastaví období, ve kterém transakce musí dokončit. |
| TypeId |
Při implementaci v odvozené třídě získá jedinečný identifikátor pro tento Attribute. (Zděděno od Attribute) |
| UseSynchronizationContext |
Získá nebo nastaví hodnotu, která určuje, zda použít aktuální synchronizační kontext zvolit vlákno provádění. |
| ValidateMustUnderstand |
Získá nebo nastaví hodnotu, která určuje, zda systém nebo aplikace vynucuje zpracování hlaviček SOAP |
Metody
| Name | Description |
|---|---|
| Equals(Object) |
Vrátí hodnotu, která určuje, zda je tato instance rovna zadanému objektu. (Zděděno od Attribute) |
| GetHashCode() |
Vrátí kód hash pro tuto instanci. (Zděděno od Attribute) |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| GetWellKnownSingleton() |
Načte objekt, který implementuje službu a který se používá jako singleton instance služby, nebo |
| IsDefaultAttribute() |
Při přepsání v odvozené třídě určuje, zda hodnota této instance je výchozí hodnotou pro odvozenou třídu. (Zděděno od Attribute) |
| Match(Object) |
Při přepsání v odvozené třídě vrátí hodnotu, která určuje, zda se tato instance rovná zadanému objektu. (Zděděno od Attribute) |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| SetWellKnownSingleton(Object) |
Určuje objekt, který implementuje službu a který se používá jako singleton instance služby. |
| ShouldSerializeConfigurationName() |
Vrátí hodnotu, která určuje, zda ConfigurationName se vlastnost změnila z výchozí hodnoty a měla by být serializována. |
| ShouldSerializeReleaseServiceInstanceOnTransactionComplete() |
Vrátí hodnotu, která určuje, zda ReleaseServiceInstanceOnTransactionComplete se vlastnost změnila z výchozí hodnoty a měla by být serializována. |
| ShouldSerializeTransactionAutoCompleteOnSessionClose() |
Vrátí hodnotu, která určuje, zda TransactionAutoCompleteOnSessionClose se vlastnost změnila z výchozí hodnoty a měla by být serializována. |
| ShouldSerializeTransactionIsolationLevel() |
Vrátí hodnotu, která určuje, zda TransactionIsolationLevel se vlastnost změnila z výchozí hodnoty a měla by být serializována. |
| ShouldSerializeTransactionTimeout() |
Vrátí hodnotu, která určuje, zda TransactionTimeout se vlastnost změnila z výchozí hodnoty a měla by být serializována. |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
Explicitní implementace rozhraní
| Name | Description |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání. (Zděděno od Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Načte informace o typu objektu, který lze použít k získání informací o typu pro rozhraní. (Zděděno od Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1). (Zděděno od Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Poskytuje přístup k vlastnostem a metodám vystaveným objektem. (Zděděno od Attribute) |
| IServiceBehavior.AddBindingParameters(ServiceDescription, ServiceHostBase, Collection<ServiceEndpoint>, BindingParameterCollection) |
Předá vlastní datové objekty vazbám, které podporují vlastnosti chování. |
| IServiceBehavior.ApplyDispatchBehavior(ServiceDescription, ServiceHostBase) |
Přizpůsobí dobu běhu služby tak, aby podporovala vlastnosti chování. |
| IServiceBehavior.Validate(ServiceDescription, ServiceHostBase) |
Potvrzuje, že popis služby a hostitel služby jsou schopné podporovat chování. |