ServiceBehaviorAttribute Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
A szolgáltatásszerződés végrehajtásának belső végrehajtási viselkedését határozza meg.
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
- Öröklődés
- Attribútumok
- Megvalósítás
Példák
Az alábbi példakód a ServiceBehaviorAttribute tulajdonságokat mutatja be. Az BehaviorService osztály az ServiceBehaviorAttribute attribútummal jelzi, hogy:
A szolgáltatásobjektum a tranzakció befejeződésekor újra lesz hasznosítva.
Minden munkamenethez egy szolgáltatásobjektum tartozik.
A szolgáltatás egyszálas, és nem támogatja az újraküldéses hívásokat.
Emellett a művelet szintjén az OperationBehaviorAttribute értékek azt jelzik, hogy a metódus automatikusan bevonja a TxWork folyamatba a tranzakciókat, vagy létrehoz egy új tranzakciót a munka elvégzéséhez, és hogy a tranzakció automatikusan le lesz véglegesítve, ha nem kezelt kivétel nem történik meg.
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
A mögöttes kötésnek támogatnia kell a következő kód példájához tartozó tranzakciót a megfelelő végrehajtáshoz. Ha például egy kódban vagy egy alkalmazáskonfigurációs fájlban szeretné támogatni a WSHttpBindingtranzakciót, állítsa be a TransactionFlow tulajdonságot true kódban vagy alkalmazáskonfigurációs fájlban. Az alábbi példakód az előző minta konfigurációs fájlját mutatja be.
<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>
Megjegyzések
Alkalmazza az ServiceBehaviorAttribute attribútumot egy szolgáltatás-implementációra a szolgáltatásszintű végrehajtási viselkedés megadásához. (A végrehajtási viselkedés metódusszinten való megadásához használja az OperationBehaviorAttribute attribútumot.) Ez az attribútum csak szolgáltatás-implementációkra alkalmazható. A működő példákért tekintse meg a Szolgáltatás: Viselkedésminták című témakört.
ServiceBehaviorAttribute tulajdonságok egy Windows kommunikációs alaprendszer (WCF) programozási modell funkció, amely lehetővé teszi a fejlesztők által egyébként implementálandó általános funkciókat. Ezekről és egyéb viselkedésekről további információt a Szolgáltatás Run-Time viselkedésének megadása című témakörben talál. Az alábbi tulajdonságok némelyikének alapjául szolgáló futtatókörnyezeti tulajdonságokról további információt a ServiceHost kiterjesztése és a szolgáltatásmodell rétege című témakörben talál.
A AddressFilterMode tulajdonság azt a szűrőtípust határozza meg, amelyet a diszpécserrendszer a kérelmeket kezelő végpont megkereséséhez használ.
A AutomaticSessionShutdown tulajdonság automatikusan bezárja a munkamenetet a csatorna bezárásakor, és a szolgáltatás befejezte a fennmaradó üzenetek feldolgozását.
A ConcurrencyMode tulajdonság szabályozza a belső szálmodellt, amely lehetővé teszi az újraértelmezett vagy többszálú szolgáltatások támogatását.
A ConfigurationName tulajdonság a konfigurációs fájl elemének
nameattribútumában<service>használható név deklarálására szolgál.A IgnoreExtensionDataObject tulajdonság lehetővé teszi, hogy a futási idő figyelmen kívül hagyja az üzenet feldolgozásához nem szükséges további szerializálási információkat.
A IncludeExceptionDetailInFaults tulajdonság azt határozza meg, hogy a szolgáltatás nem kezelt kivételeit a rendszer SOAP-hibaként adja-e vissza. Ez csak hibakeresési célokra szolgál.
A InstanceContextMode tulajdonság azt határozza meg, hogy a szolgáltatások és a szolgáltatásobjektumok újra felhasználhatók-e az ügyféllel folytatott csere során.
A MaxItemsInObjectGraph szerializált objektumgráfban lévő elemek számának korlátozására vonatkozó tulajdonság.
A Name tulajdonságok Namespace a szolgáltatáselem WSDL-kifejezésének nevét és névterét szabályozzák.
A ReleaseServiceInstanceOnTransactionComplete tulajdonság azt határozza meg, hogy a szolgáltatásobjektum újra lesz-e hasznosítva egy tranzakció befejezésekor.
A TransactionAutoCompleteOnSessionClose tulajdonság azt határozza meg, hogy a munkamenet bezárásakor befejeződnek-e a függőben lévő tranzakciók.
A TransactionIsolationLevel tulajdonság megadja a szerződés által támogatott tranzakcióelkülönítési szintet.
A TransactionTimeout tulajdonság azt az időtartamot adja meg, amelyen belül egy tranzakciónak befejeződnie kell, vagy megszakad.
A UseSynchronizationContext tulajdonság azt jelzi, hogy a bejövő metódushívások automatikusan szinkronizálhatók-e a felhasználói felület szálával.
A ValidateMustUnderstand tulajdonság tájékoztatja a rendszert arról, hogy meg kell-e erősítenie, hogy a SOAP-fejlécek
MustUnderstandvalójában értve lettek-e.
A IncludeExceptionDetailInFaults tulajdonság alkalmazáskonfigurációs fájllal is beállítható. További részletekért lásd: IncludeExceptionDetailInFaults.
Konstruktorok
| Név | Description |
|---|---|
| ServiceBehaviorAttribute() |
Inicializálja a ServiceBehaviorAttribute osztály új példányát. |
Tulajdonságok
| Név | Description |
|---|---|
| AddressFilterMode |
Lekéri vagy beállítja a AddressFilterMode kézbesítő által a bejövő üzenetek megfelelő végpontra való átirányításához használt elemet. |
| AutomaticSessionShutdown |
Megadja, hogy az ügyfél egy kimeneti munkamenet bezárásakor automatikusan bezárjon-e egy munkamenetet. |
| ConcurrencyMode |
Lekérdezi vagy beállítja, hogy egy szolgáltatás támogat-e egy szálat, több szálat vagy újraküldéses hívásokat. |
| ConfigurationName |
Lekéri vagy beállítja a szolgáltatáselem alkalmazáskonfigurációs fájlban való megkereséséhez használt értéket. |
| EnsureOrderedDispatch |
Lekéri vagy beállít egy értéket, amely jelzi, hogy a megrendelt szolgáltatás kézbesítése biztosított-e. |
| IgnoreExtensionDataObject |
Lekéri vagy beállít egy értéket, amely meghatározza, hogy ismeretlen szerializálási adatokat küldjön-e a vezetékre. |
| IncludeExceptionDetailInFaults |
Lekéri vagy beállít egy értéket, amely meghatározza, hogy az általános nem kezelt végrehajtási kivételeket típussá FaultException<TDetail> kell konvertálniExceptionDetail, és hibaüzenetként kell elküldeni. Ezt csak a |
| InstanceContextMode |
Lekéri vagy beállítja az új szolgáltatásobjektumok létrehozásakor megjelenő értéket. |
| MaxItemsInObjectGraph |
Lekéri vagy beállítja a szerializált objektumokban engedélyezett elemek maximális számát. |
| Name |
Lekéri vagy beállítja a névattribútum értékét a Web Services Description Language (WSDL) szolgáltatáselemében. |
| Namespace |
Lekéri vagy beállítja a szolgáltatás célnévterének értékét a Web Services Description Language (WSDL) nyelven. |
| ReleaseServiceInstanceOnTransactionComplete |
Lekéri vagy beállít egy értéket, amely meghatározza, hogy a szolgáltatásobjektum felszabadul-e az aktuális tranzakció befejezésekor. |
| TransactionAutoCompleteOnSessionClose |
Lekéri vagy beállít egy értéket, amely megadja, hogy a függőben lévő tranzakciók akkor fejeződnek-e be, amikor az aktuális munkamenet hiba nélkül bezárul. |
| TransactionIsolationLevel |
Megadja a szolgáltatáson belül létrehozott új tranzakciók tranzakcióelkülönítési szintjét, valamint az ügyféltől érkező bejövő tranzakciókat. |
| TransactionTimeout |
Lekéri vagy beállítja azt az időszakot, amelyen belül egy tranzakciónak végre kell hajtania. |
| TypeId |
Ha származtatott osztályban implementálják, ehhez egy egyedi azonosítót Attributekap. (Öröklődés forrása Attribute) |
| UseSynchronizationContext |
Lekéri vagy beállít egy értéket, amely meghatározza, hogy az aktuális szinkronizálási környezetet használja-e a végrehajtási szál kiválasztásához. |
| ValidateMustUnderstand |
Lekéri vagy beállít egy értéket, amely meghatározza, hogy a rendszer vagy az alkalmazás kényszeríti-e a SOAP |
Metódusok
| Név | Description |
|---|---|
| Equals(Object) |
Olyan értéket ad vissza, amely jelzi, hogy ez a példány egyenlő-e egy adott objektummal. (Öröklődés forrása Attribute) |
| GetHashCode() |
A példány kivonatkódját adja vissza. (Öröklődés forrása Attribute) |
| GetType() |
Lekéri az Type aktuális példányt. (Öröklődés forrása Object) |
| GetWellKnownSingleton() |
Lekéri a szolgáltatást megvalósító és a szolgáltatás egyszeri példányaként használt objektumot, vagy |
| IsDefaultAttribute() |
Ha egy származtatott osztályban felül van bírálva, azt jelzi, hogy a példány értéke-e a származtatott osztály alapértelmezett értéke. (Öröklődés forrása Attribute) |
| Match(Object) |
Származtatott osztály felülírásakor egy olyan értéket ad vissza, amely jelzi, hogy ez a példány egy adott objektummal egyenlő-e. (Öröklődés forrása Attribute) |
| MemberwiseClone() |
Az aktuális Objectpéldány sekély másolatát hozza létre. (Öröklődés forrása Object) |
| SetWellKnownSingleton(Object) |
A szolgáltatást megvalósító és a szolgáltatás egyszeri példányaként használt objektumot adja meg. |
| ShouldSerializeConfigurationName() |
Olyan értéket ad vissza, amely jelzi, hogy a tulajdonság megváltozott-e az ConfigurationName alapértelmezett értékétől, és szerializálni kell. |
| ShouldSerializeReleaseServiceInstanceOnTransactionComplete() |
Olyan értéket ad vissza, amely jelzi, hogy a tulajdonság megváltozott-e az ReleaseServiceInstanceOnTransactionComplete alapértelmezett értékétől, és szerializálni kell. |
| ShouldSerializeTransactionAutoCompleteOnSessionClose() |
Olyan értéket ad vissza, amely jelzi, hogy a tulajdonság megváltozott-e az TransactionAutoCompleteOnSessionClose alapértelmezett értékétől, és szerializálni kell. |
| ShouldSerializeTransactionIsolationLevel() |
Olyan értéket ad vissza, amely jelzi, hogy a tulajdonság megváltozott-e az TransactionIsolationLevel alapértelmezett értékétől, és szerializálni kell. |
| ShouldSerializeTransactionTimeout() |
Olyan értéket ad vissza, amely jelzi, hogy a tulajdonság megváltozott-e az TransactionTimeout alapértelmezett értékétől, és szerializálni kell. |
| ToString() |
Az aktuális objektumot jelképező sztringet ad vissza. (Öröklődés forrása Object) |
Explicit interfész-implementációk
| Név | Description |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Névkészletet képez le a küldési azonosítók megfelelő készletére. (Öröklődés forrása Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Lekéri egy objektum típusadatait, amelyek a felület típusadatainak lekérésére használhatók. (Öröklődés forrása Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Lekéri az objektumok által biztosított típusinformációs felületek számát (0 vagy 1). (Öröklődés forrása Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Hozzáférést biztosít az objektumok által közzétett tulajdonságokhoz és metódusokhoz. (Öröklődés forrása Attribute) |
| IServiceBehavior.AddBindingParameters(ServiceDescription, ServiceHostBase, Collection<ServiceEndpoint>, BindingParameterCollection) |
Az egyéni adatobjektumokat átadja a viselkedési tulajdonságokat támogató kötéseknek. |
| IServiceBehavior.ApplyDispatchBehavior(ServiceDescription, ServiceHostBase) |
Testre szabja a szolgáltatás futási idejét a viselkedési tulajdonságok támogatásához. |
| IServiceBehavior.Validate(ServiceDescription, ServiceHostBase) |
Megerősíti, hogy a szolgáltatás leírása és a szolgáltatásgazda képes támogatni a viselkedést. |