ServiceBehaviorAttribute Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Hizmet sözleşmesi uygulamasının iç yürütme davranışını belirtir.
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
- Devralma
- Öznitelikler
- Uygulamalar
Örnekler
Aşağıdaki kod örneği özellikleri gösterir ServiceBehaviorAttribute . sınıfı, BehaviorService
aşağıdakileri belirtmek için özniteliğini ServiceBehaviorAttribute kullanır:
İşlem tamamlandığında hizmet nesnesi geri dönüştürülür.
Her oturum için bir hizmet nesnesi vardır.
Hizmet tek iş parçacıklıdır ve yeniden gelen çağrıları desteklemez.
Ayrıca, işlem düzeyinde değerler yöntemin OperationBehaviorAttributeTxWork
akışlı işlemlere otomatik olarak listelendiğini veya işi yapmak için yeni bir işlem oluşturduğunu ve işlenmeyen bir özel durum oluşmazsa işlemin otomatik olarak işlendiğini gösterir.
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şağıdaki kod örneğinin düzgün yürütülmesi için temel bağlamanın akışlı işlemleri desteklemesi gerekir. kullanarak akışlı işlemleri WSHttpBindingdesteklemek için örneğin, özelliğini true
kodda veya uygulama yapılandırma dosyasında olarak ayarlayınTransactionFlow. Aşağıdaki kod örneği, önceki örneğin yapılandırma dosyasını gösterir.
<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>
Açıklamalar
ServiceBehaviorAttribute Hizmet genelinde yürütme davranışını belirtmek için özniteliğini bir hizmet uygulamasına uygulayın. (Yöntem düzeyinde yürütme davranışını belirtmek için özniteliğini OperationBehaviorAttribute kullanın.) Bu öznitelik yalnızca hizmet uygulamalarına uygulanabilir. Çalışma örnekleri için bkz . Hizmet: Davranış Örnekleri.
ServiceBehaviorAttribute özellikler, geliştiricilerin başka türlü uygulamak zorunda olduğu ortak özellikleri etkinleştiren bir Windows Communication Foundation (WCF) programlama modeli özelliğidir. Bunlar ve diğer davranışlar hakkında daha fazla bilgi için bkz. Hizmet Run-Time Davranışını Belirtme. Aşağıdaki özelliklerden bazılarının ayarlandığı temel çalışma zamanı özellikleri hakkında daha fazla bilgi için bkz. ServiceHost'u ve Hizmet Modeli Katmanını Genişletme.
özelliği, AddressFilterMode dağıtıcı sisteminin istekleri işleyen uç noktayı bulmak için kullandığı filtre türünü belirtir.
Kanal AutomaticSessionShutdown kapatıldığında ve hizmet kalan iletileri işlemeyi bitirdiğinde özelliği oturumu otomatik olarak kapatır.
ConcurrencyMode özelliği, iç iş parçacığı modelini denetler ve yeniden girilen veya çok iş parçacıklı hizmetler için destek sağlar.
ConfigurationName özelliği, yapılandırma dosyasındaki öğesinin
name
<service>
özniteliğinde kullanılacak bir ad bildirmek için kullanılır.IgnoreExtensionDataObject özelliği, çalışma zamanının iletiyi işlemek için gerekli olmayan ek serileştirme bilgilerini yoksaymasına olanak tanır.
özelliği, IncludeExceptionDetailInFaults bir hizmetteki işlenmeyen özel durumların SOAP hataları olarak döndürülip döndürülmeyeceğini belirtir. Bu yalnızca hata ayıklama amaçlıdır.
özelliği, InstanceContextMode bir istemciyle yapılan bir değişim sırasında hizmetlerin ve hizmet nesnelerinin geri dönüştürülip geri dönüştürülmeyeceğini ve ne zaman geri dönüştürülmeyeceğini belirtir.
Bir MaxItemsInObjectGraph nesne grafında seri hale getirilen öğe sayısını sınırlama özelliği.
Name ve Namespace özellikleri, hizmet öğesinin WSDL ifadesinin adını ve ad alanını denetler.
özelliği, ReleaseServiceInstanceOnTransactionComplete bir işlem tamamlandığında hizmet nesnesinin geri dönüştürülip dönüştürülmeyeceğini belirtir.
özelliği, TransactionAutoCompleteOnSessionClose bekleyen işlemlerin oturum kapatıldığında tamamlanıp tamamlanmayacağını belirtir.
özelliği, TransactionIsolationLevel sözleşmenin desteklediği işlem yalıtım düzeyini belirtir.
TransactionTimeout özelliği, bir işlemin tamamlanması gereken veya durdurulması gereken süreyi belirtir.
özelliği, UseSynchronizationContext gelen yöntem çağrılarının kullanıcı arabirimi iş parçacığıyla otomatik olarak eşitlenip eşitlenmeyeceğini gösterir.
ValidateMustUnderstand özelliği, aslında olarak işaretlenmiş
MustUnderstand
SOAP üst bilgilerinin anlaşıldığını onaylaması gerekip gerekmediğini sisteme bildirir.
IncludeExceptionDetailInFaults Özelliği bir uygulama yapılandırma dosyası kullanılarak da ayarlanabilir. Ayrıntılar için bkz. IncludeExceptionDetailInFaults.
Oluşturucular
ServiceBehaviorAttribute() |
ServiceBehaviorAttribute sınıfının yeni bir örneğini başlatır. |
Özellikler
AddressFilterMode |
Dağıtıcı tarafından gelen iletileri doğru uç noktaya yönlendirmek için kullanılan öğesini alır veya ayarlar AddressFilterMode . |
AutomaticSessionShutdown |
İstemci bir çıkış oturumını kapattığında oturumun otomatik olarak kapatılıp kapatılmayacağını belirtir. |
ConcurrencyMode |
Bir hizmetin bir iş parçacığını, birden çok iş parçacığını veya yeniden giriş çağrılarını destekleyip desteklemediğini alır veya ayarlar. |
ConfigurationName |
Bir uygulama yapılandırma dosyasında hizmet öğesini bulmak için kullanılan değeri alır veya ayarlar. |
EnsureOrderedDispatch |
Hizmetin sipariş edilen gönderimin sağlanıp sağlanmadığını belirten bir değer alır veya ayarlar. |
IgnoreExtensionDataObject |
Bilinmeyen serileştirme verilerinin kabloya gönderilip gönderilmeymeyeceğini belirten bir değer alır veya ayarlar. |
IncludeExceptionDetailInFaults |
Genel işlenmeyen yürütme özel durumlarının bir türe ExceptionDetail dönüştürülmesini ve hata iletisi olarak gönderilmesini belirten bir FaultException<TDetail> değeri alır veya ayarlar. Bir hizmette sorun gidermek için |
InstanceContextMode |
Yeni hizmet nesnelerinin ne zaman oluşturulduğunu gösteren değeri alır veya ayarlar. |
MaxItemsInObjectGraph |
Serileştirilmiş bir nesnede izin verilen en fazla öğe sayısını alır veya ayarlar. |
Name |
Web Hizmetleri Açıklama Dili'ndeki (WSDL) hizmet öğesindeki name özniteliğinin değerini alır veya ayarlar. |
Namespace |
Web Hizmetleri Açıklama Dili'nde (WSDL) hizmet için hedef ad alanının değerini alır veya ayarlar. |
ReleaseServiceInstanceOnTransactionComplete |
Geçerli işlem tamamlandığında hizmet nesnesinin serbest bırakılıp bırakılmayacağını belirten bir değer alır veya ayarlar. |
TransactionAutoCompleteOnSessionClose |
Geçerli oturum hatasız kapatıldığında bekleyen işlemlerin tamamlanıp tamamlanmayacağını belirten bir değer alır veya ayarlar. |
TransactionIsolationLevel |
Hizmet içinde oluşturulan yeni işlemler ve istemciden akan gelen işlemler için işlem yalıtım düzeyini belirtir. |
TransactionTimeout |
İşlemin tamamlanması gereken dönemi alır veya ayarlar. |
TypeId |
Türetilmiş bir sınıfta uygulandığında, bu Attributeiçin benzersiz bir tanımlayıcı alır. (Devralındığı yer: Attribute) |
UseSynchronizationContext |
Yürütme iş parçacığını seçmek için geçerli eşitleme bağlamının kullanılıp kullanılmayacağını belirten bir değer alır veya ayarlar. |
ValidateMustUnderstand |
Sistemin veya uygulamanın SOAP |
Yöntemler
Equals(Object) |
Bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değeri döndürür. (Devralındığı yer: Attribute) |
GetHashCode() |
Bu örneğe ilişkin karma kodu döndürür. (Devralındığı yer: Attribute) |
GetType() |
Type Geçerli örneğini alır. (Devralındığı yer: Object) |
GetWellKnownSingleton() |
Hizmeti uygulayan ve hizmetin tekil örneği olarak kullanılan veya |
IsDefaultAttribute() |
Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin değerinin türetilmiş sınıf için varsayılan değer olup olmadığını gösterir. (Devralındığı yer: Attribute) |
Match(Object) |
Türetilmiş bir sınıfta geçersiz kılındığında, bu örneğin belirtilen bir nesneye eşit olup olmadığını gösteren bir değer döndürür. (Devralındığı yer: Attribute) |
MemberwiseClone() |
Geçerli Objectöğesinin sığ bir kopyasını oluşturur. (Devralındığı yer: Object) |
SetWellKnownSingleton(Object) |
Hizmeti uygulayan ve hizmetin tek örneği olarak kullanılan bir nesneyi belirtir. |
ShouldSerializeConfigurationName() |
Özelliğin varsayılan değerinden ConfigurationName değiştirilip değiştirilmediğini ve seri hale getirilip getirilmeyeceğini belirten bir değer döndürür. |
ShouldSerializeReleaseServiceInstanceOnTransactionComplete() |
Özelliğin varsayılan değerinden ReleaseServiceInstanceOnTransactionComplete değiştirilip değiştirilmediğini ve seri hale getirilip getirilmeyeceğini belirten bir değer döndürür. |
ShouldSerializeTransactionAutoCompleteOnSessionClose() |
Özelliğin varsayılan değerinden TransactionAutoCompleteOnSessionClose değiştirilip değiştirilmediğini ve seri hale getirilip getirilmeyeceğini belirten bir değer döndürür. |
ShouldSerializeTransactionIsolationLevel() |
Özelliğin varsayılan değerinden TransactionIsolationLevel değiştirilip değiştirilmediğini ve seri hale getirilip getirilmeyeceğini belirten bir değer döndürür. |
ShouldSerializeTransactionTimeout() |
Özelliğin varsayılan değerinden TransactionTimeout değiştirilip değiştirilmediğini ve seri hale getirilip getirilmeyeceğini belirten bir değer döndürür. |
ToString() |
Geçerli nesneyi temsil eden dizeyi döndürür. (Devralındığı yer: Object) |
Belirtik Arabirim Kullanımları
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Bir ad kümesini karşılık gelen bir dağıtma tanımlayıcısı kümesine eşler. (Devralındığı yer: Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Bir arabirimin tür bilgilerini almak için kullanılabilecek bir nesnenin tür bilgilerini alır. (Devralındığı yer: Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Bir nesnenin sağladığı tür bilgisi arabirimlerinin sayısını alır (0 ya da 1). (Devralındığı yer: Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Bir nesne tarafından sunulan özelliklere ve yöntemlere erişim sağlar. (Devralındığı yer: Attribute) |
IServiceBehavior.AddBindingParameters(ServiceDescription, ServiceHostBase, Collection<ServiceEndpoint>, BindingParameterCollection) |
Özel veri nesnelerini davranış özelliklerini destekleyen bağlamalara geçirir. |
IServiceBehavior.ApplyDispatchBehavior(ServiceDescription, ServiceHostBase) |
Davranış özelliklerini desteklemek için hizmetin çalışma süresini özelleştirir. |
IServiceBehavior.Validate(ServiceDescription, ServiceHostBase) |
Hizmet açıklamasının ve hizmet ana bilgisayarının davranışı destekleyebilecek durumda olduğunu onaylar. |