ServiceBehaviorAttribute Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menentukan perilaku eksekusi internal dari implementasi kontrak layanan.
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
- Warisan
- Atribut
- Penerapan
Contoh
Contoh kode berikut menunjukkan ServiceBehaviorAttribute properti . Kelas BehaviorService
menggunakan ServiceBehaviorAttribute atribut untuk menunjukkan bahwa:
Objek layanan didaur ulang ketika transaksi selesai.
Ada satu objek layanan untuk setiap sesi.
Layanan ini berutas tunggal dan tidak mendukung panggilan masuk kembali.
Selain itu, pada tingkat operasi, OperationBehaviorAttribute nilai menunjukkan bahwa TxWork
metode secara otomatis mendaftar dalam transaksi yang dialirkan atau membuat transaksi baru untuk melakukan pekerjaan, dan bahwa transaksi dilakukan secara otomatis jika pengecualian yang tidak tertangani tidak terjadi.
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
Pengikatan yang mendasar harus mendukung transaksi yang mengalir agar contoh kode berikut dapat dijalankan dengan benar. Untuk mendukung transaksi yang mengalir menggunakan WSHttpBinding, misalnya, atur TransactionFlow properti ke true
dalam kode atau dalam file konfigurasi aplikasi. Contoh kode berikut menunjukkan file konfigurasi untuk sampel sebelumnya.
<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>
Keterangan
Terapkan atribut ke ServiceBehaviorAttribute implementasi layanan untuk menentukan perilaku eksekusi di seluruh layanan. (Untuk menentukan perilaku eksekusi pada tingkat metode, gunakan OperationBehaviorAttribute atribut .) Atribut ini hanya dapat diterapkan ke implementasi layanan. Untuk contoh kerja, lihat Sampel Layanan: Perilaku.
ServiceBehaviorAttribute properti adalah fitur model pemrograman Windows Communication Foundation (WCF) yang memungkinkan fitur umum yang harus diterapkan pengembang. Untuk informasi selengkapnya tentang ini dan perilaku lainnya, lihat Menentukan Perilaku Run-Time Layanan. Untuk informasi selengkapnya tentang properti runtime yang mendasari yang ditetapkan beberapa properti berikut ini, lihat Memperluas ServiceHost dan Lapisan Model Layanan.
Properti AddressFilterMode menentukan jenis filter yang digunakan sistem dispatcher untuk menemukan titik akhir yang menangani permintaan.
Properti AutomaticSessionShutdown secara otomatis menutup sesi ketika saluran ditutup dan layanan telah selesai memproses pesan yang tersisa.
Properti ConcurrencyMode mengontrol model utas internal, memungkinkan dukungan untuk layanan masuk kembali atau multithreaded.
Properti ConfigurationName digunakan untuk mendeklarasikan nama untuk digunakan dalam
name
atribut<service>
elemen dalam file konfigurasi.Properti IgnoreExtensionDataObject memungkinkan durasi untuk mengabaikan informasi serialisasi tambahan yang tidak diperlukan untuk memproses pesan.
Properti IncludeExceptionDetailInFaults menentukan apakah pengecualian yang tidak tertangani dalam layanan dikembalikan sebagai kesalahan SOAP. Ini hanya untuk tujuan penelusuran kesalahan.
Properti InstanceContextMode menentukan apakah dan kapan layanan dan objek layanannya akan didaur ulang selama pertukaran dengan klien.
Properti MaxItemsInObjectGraph untuk membatasi jumlah item dalam grafik objek yang diserialisasikan.
Properti Name dan Namespace mengontrol nama dan namespace layanan untuk ekspresi WSDL dari elemen layanan.
Properti ReleaseServiceInstanceOnTransactionComplete menentukan apakah objek layanan didaur ulang saat transaksi selesai.
Properti TransactionAutoCompleteOnSessionClose menentukan apakah transaksi yang belum selesai diselesaikan saat sesi ditutup.
Properti TransactionIsolationLevel menentukan tingkat isolasi transaksi yang didukung kontrak.
Properti TransactionTimeout menentukan periode waktu di mana transaksi harus selesai atau dibatalkan.
Properti UseSynchronizationContext menunjukkan apakah akan menyinkronkan panggilan metode masuk dengan utas antarmuka pengguna secara otomatis.
Properti ValidateMustUnderstand menginformasikan sistem apakah harus mengonfirmasi bahwa header SOAP yang ditandai sebagai
MustUnderstand
telah, pada kenyataannya, telah dipahami.
Properti IncludeExceptionDetailInFaults juga dapat diatur menggunakan file konfigurasi aplikasi. Untuk detailnya, lihat IncludeExceptionDetailInFaults.
Konstruktor
ServiceBehaviorAttribute() |
Menginisialisasi instans baru kelas ServiceBehaviorAttribute. |
Properti
AddressFilterMode |
Mendapatkan atau mengatur AddressFilterMode yang digunakan oleh dispatcher untuk merutekan pesan masuk ke titik akhir yang benar. |
AutomaticSessionShutdown |
Menentukan apakah akan menutup sesi secara otomatis saat klien menutup sesi output. |
ConcurrencyMode |
Mendapatkan atau mengatur apakah layanan mendukung satu utas, beberapa utas, atau panggilan masuk kembali. |
ConfigurationName |
Mendapatkan atau mengatur nilai yang digunakan untuk menemukan elemen layanan dalam file konfigurasi aplikasi. |
EnsureOrderedDispatch |
Mendapatkan atau menetapkan nilai yang menunjukkan apakah pengiriman yang dipesan layanan dipastikan. |
IgnoreExtensionDataObject |
Mendapatkan atau menetapkan nilai yang menentukan apakah akan mengirim data serialisasi yang tidak diketahui ke kawat. |
IncludeExceptionDetailInFaults |
Mendapatkan atau menetapkan nilai yang menentukan bahwa pengecualian eksekusi umum yang tidak tertangani akan dikonversi menjadi FaultException<TDetail> jenis ExceptionDetail dan dikirim sebagai pesan kesalahan. Atur ini ke |
InstanceContextMode |
Mendapatkan atau mengatur nilai yang menunjukkan kapan objek layanan baru dibuat. |
MaxItemsInObjectGraph |
Mendapatkan atau mengatur jumlah maksimum item yang diizinkan dalam objek berseri. |
Name |
Mendapatkan atau menetapkan nilai atribut nama dalam elemen layanan dalam Web Services Description Language (WSDL). |
Namespace |
Mendapatkan atau menetapkan nilai namespace layanan target untuk layanan dalam Web Services Description Language (WSDL). |
ReleaseServiceInstanceOnTransactionComplete |
Mendapatkan atau menetapkan nilai yang menentukan apakah objek layanan dirilis ketika transaksi saat ini selesai. |
TransactionAutoCompleteOnSessionClose |
Mendapatkan atau menetapkan nilai yang menentukan apakah transaksi yang tertunda selesai ketika sesi saat ini ditutup tanpa kesalahan. |
TransactionIsolationLevel |
Menentukan tingkat isolasi transaksi untuk transaksi baru yang dibuat di dalam layanan, dan transaksi masuk mengalir dari klien. |
TransactionTimeout |
Mendapatkan atau menetapkan periode di mana transaksi harus diselesaikan. |
TypeId |
Ketika diimplementasikan di kelas turunan, mendapatkan pengidentifikasi unik untuk ini Attribute. (Diperoleh dari Attribute) |
UseSynchronizationContext |
Mendapatkan atau menetapkan nilai yang menentukan apakah akan menggunakan konteks sinkronisasi saat ini untuk memilih utas eksekusi. |
ValidateMustUnderstand |
Mendapatkan atau menetapkan nilai yang menentukan apakah sistem atau aplikasi memberlakukan pemrosesan header SOAP |
Metode
Equals(Object) |
Mengembalikan nilai yang menunjukkan apakah instans ini sama dengan objek tertentu. (Diperoleh dari Attribute) |
GetHashCode() |
Mengembalikan kode hash untuk instans ini. (Diperoleh dari Attribute) |
GetType() |
Mendapatkan dari instans Type saat ini. (Diperoleh dari Object) |
GetWellKnownSingleton() |
Mengambil objek yang mengimplementasikan layanan dan yang digunakan sebagai instans singleton layanan, atau |
IsDefaultAttribute() |
Ketika ditimpa di kelas turunan, menunjukkan apakah nilai instans ini adalah nilai default untuk kelas turunan. (Diperoleh dari Attribute) |
Match(Object) |
Saat ditimpa di kelas turunan, mengembalikan nilai yang menunjukkan apakah instans ini sama dengan objek tertentu. (Diperoleh dari Attribute) |
MemberwiseClone() |
Membuat salinan dangkal dari saat ini Object. (Diperoleh dari Object) |
SetWellKnownSingleton(Object) |
Menentukan objek yang mengimplementasikan layanan dan yang digunakan sebagai instans singleton layanan. |
ShouldSerializeConfigurationName() |
Mengembalikan nilai yang menunjukkan apakah ConfigurationName properti telah berubah dari nilai defaultnya dan harus diserialisasikan. |
ShouldSerializeReleaseServiceInstanceOnTransactionComplete() |
Mengembalikan nilai yang menunjukkan apakah ReleaseServiceInstanceOnTransactionComplete properti telah berubah dari nilai defaultnya dan harus diserialisasikan. |
ShouldSerializeTransactionAutoCompleteOnSessionClose() |
Mengembalikan nilai yang menunjukkan apakah TransactionAutoCompleteOnSessionClose properti telah berubah dari nilai defaultnya dan harus diserialisasikan. |
ShouldSerializeTransactionIsolationLevel() |
Mengembalikan nilai yang menunjukkan apakah TransactionIsolationLevel properti telah berubah dari nilai defaultnya dan harus diserialisasikan. |
ShouldSerializeTransactionTimeout() |
Mengembalikan nilai yang menunjukkan apakah TransactionTimeout properti telah berubah dari nilai defaultnya dan harus diserialisasikan. |
ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |
Implementasi Antarmuka Eksplisit
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Memetakan sekumpulan nama ke sekumpulan pengidentifikasi pengiriman yang sesuai. (Diperoleh dari Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Mengambil informasi jenis untuk objek, yang dapat digunakan untuk mendapatkan informasi jenis untuk antarmuka. (Diperoleh dari Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Mengambil jumlah antarmuka informasi jenis yang disediakan objek (baik 0 atau 1). (Diperoleh dari Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Menyediakan akses ke properti dan metode yang diekspos oleh objek. (Diperoleh dari Attribute) |
IServiceBehavior.AddBindingParameters(ServiceDescription, ServiceHostBase, Collection<ServiceEndpoint>, BindingParameterCollection) |
Meneruskan objek data kustom ke pengikatan yang mendukung properti perilaku. |
IServiceBehavior.ApplyDispatchBehavior(ServiceDescription, ServiceHostBase) |
Menyesuaikan durasi layanan untuk mendukung properti perilaku. |
IServiceBehavior.Validate(ServiceDescription, ServiceHostBase) |
Mengonfirmasi bahwa deskripsi layanan dan host layanan mampu mendukung perilaku. |