Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bir hizmet sözleşmesi (Hizmet Sözleşmeleri Tasarlama) tasarladıktan ve hizmet sözleşmenizi (Hizmet Sözleşmelerini Uygulama) uyguladıktan sonra, hizmet çalışma zamanının işlem davranışını yapılandırabilirsiniz. Bu konu, sistem tarafından sağlanan hizmet ve işlem davranışlarını açıklar ve yeni davranışlar oluşturmak için daha fazla bilginin nerede bulunacağını açıklar. Bazı davranışlar öznitelik olarak uygulanırken, çoğu uygulama yapılandırma dosyası kullanılarak veya program aracılığıyla uygulanır. Hizmet uygulamanızı yapılandırma hakkında daha fazla bilgi için bkz. Hizmetleri Yapılandırma.
Genel Bakış
Sözleşme, bu türdeki bir hizmetin girişlerini, çıkışlarını, veri türlerini ve özelliklerini tanımlar. Hizmet sözleşmesinin uygulanması, belirli bir adreste bir bağlama ile yapılandırıldığında uyguladığı sözleşmeyi yerine getiren bir sınıf oluşturur. Sözleşme, bağlama ve adres bilgilerinin tümü istemci tarafından bilinir; bunlar olmadan istemci hizmeti kullanamaz.
Ancak, iş parçacığı sorunları veya örnek yönetimi gibi işlem ayrıntıları müşteriler tarafından anlaşılmaz. Hizmet sözleşmenizi uyguladıktan sonra , davranışları kullanarak çok sayıda işlem özelliği yapılandırabilirsiniz. Davranışlar, bir çalışma zamanı özelliği ayarlayarak veya çalışma zamanına özelleştirme türü ekleyerek Windows Communication Foundation (WCF) çalışma zamanını değiştiren nesnelerdir. Kullanıcı tanımlı davranışlar oluşturarak çalışma zamanını değiştirme hakkında daha fazla bilgi için bkz. ServiceHost ve Hizmet Modeli Katmanını Genişletme.
System.ServiceModel.ServiceBehaviorAttribute ve System.ServiceModel.OperationBehaviorAttribute öznitelikleri en kullanışlı davranışlardır ve en sık istenen işlem özelliklerini kullanıma sunar. Bunlar öznitelik olduğundan, bunları hizmet veya işlem uygulamasına uygularsınız. System.ServiceModel.Description.ServiceMetadataBehavior veya System.ServiceModel.Description.ServiceDebugBehavior gibi diğer davranışlar genellikle bir uygulama yapılandırma dosyası aracılığıyla uygulanır, ancak bunları programlı bir şekilde de kullanabilirsiniz.
Bu konu, ServiceBehaviorAttribute ve OperationBehaviorAttribute özniteliklerine genel bir bakış sağlar, davranışların çalışabileceği çeşitli kapsamları açıklar ve WCF geliştiricilerinin ilgisini çekebilecek çeşitli kapsamlardaki, sistem tarafından sağlanan pek çok davranışın hızlı bir tanımını sunar.
ServiceBehaviorAttribute ve OperationBehaviorAttribute
En önemli davranışlar, denetlemek için kullanabileceğiniz ServiceBehaviorAttribute ve OperationBehaviorAttribute öznitelikleridir.
Örnek yaşam süreleri
Eşzamanlılık ve eşitleme desteği
Yapılandırma davranışı
İşlem davranışı
Serileştirme davranışı
Meta veri dönüştürme
Oturum ömrü
Adres filtreleme ve üst bilgi işleme
Kimliğe bürünme
Bu öznitelikleri kullanmak için hizmet veya işlem uygulamasını bu kapsama uygun özniteliğiyle işaretleyin ve özellikleri ayarlayın. Örneğin, aşağıdaki kod örneği, bu işlemi çağıranların kimliğe bürünme özelliğini desteklemesini gerektiren bir işlem uygulaması gösterir.
using System;
using System.Collections.Generic;
using System.ServiceModel;
using System.Threading;
namespace Microsoft.WCF.Documentation
{
[ServiceContract(
Name="SampleHello",
Namespace="http://microsoft.wcf.documentation"
)]
public interface IHello
{
[OperationContract]
string Hello(string greeting);
}
public class HelloService : IHello
{
public HelloService()
{
Console.WriteLine("Service object created: " + this.GetHashCode().ToString());
}
~HelloService()
{
Console.WriteLine("Service object destroyed: " + this.GetHashCode().ToString());
}
[OperationBehavior(Impersonation=ImpersonationOption.Required)]
public string Hello(string greeting)
{
Console.WriteLine("Called by: " + Thread.CurrentPrincipal.Identity.Name);
Console.WriteLine("IsAuthenticated: " + Thread.CurrentPrincipal.Identity.IsAuthenticated.ToString());
Console.WriteLine("AuthenticationType: " + Thread.CurrentPrincipal.Identity.AuthenticationType.ToString());
Console.WriteLine("Caller sent: " + greeting);
Console.WriteLine("Sending back: Hi, " + Thread.CurrentPrincipal.Identity.Name);
return "Hi, " + Thread.CurrentPrincipal.Identity.Name;
}
}
}
Imports System.ServiceModel
Imports System.Threading
Namespace Microsoft.WCF.Documentation
<ServiceContract(Name:="SampleHello", Namespace:="http://microsoft.wcf.documentation")> _
Public Interface IHello
<OperationContract> _
Function Hello(ByVal greeting As String) As String
End Interface
Public Class HelloService
Implements IHello
Public Sub New()
Console.WriteLine("Service object created: " & Me.GetHashCode().ToString())
End Sub
Protected Overrides Sub Finalize()
Console.WriteLine("Service object destroyed: " & Me.GetHashCode().ToString())
End Sub
<OperationBehavior(Impersonation:=ImpersonationOption.Required)> _
Public Function Hello(ByVal greeting As String) As String Implements IHello.Hello
Console.WriteLine("Called by: " & Thread.CurrentPrincipal.Identity.Name)
Console.WriteLine("IsAuthenticated: " & Thread.CurrentPrincipal.Identity.IsAuthenticated.ToString())
Console.WriteLine("AuthenticationType: " & Thread.CurrentPrincipal.Identity.AuthenticationType.ToString())
Console.WriteLine("Caller sent: " & greeting)
Console.WriteLine("Sending back: Hi, " & Thread.CurrentPrincipal.Identity.Name)
Return "Hi, " & Thread.CurrentPrincipal.Identity.Name
End Function
End Class
End Namespace
Özelliklerin çoğu bağlayıcıdan ek destek gerektirir. Örneğin, istemciden bir işlem gerektiren bir işlem, akışlı işlemleri destekleyen bir bağlama kullanacak şekilde yapılandırılmalıdır.
Well-Known Singleton Services
ServiceBehaviorAttribute ve OperationBehaviorAttribute özniteliklerini, hem InstanceContext hem de işlemleri uygulayan hizmet nesnelerinin belirli yaşam sürelerini denetlemek için kullanabilirsiniz.
Örneğin, ServiceBehaviorAttribute.InstanceContextMode özelliği, InstanceContext öğesinin ne sıklıkta serbest bırakıldığını denetler ve OperationBehaviorAttribute.ReleaseInstanceMode ile ServiceBehaviorAttribute.ReleaseServiceInstanceOnTransactionComplete özellikleri, hizmet nesnesinin ne zaman serbest bırakıldığını denetler.
Ancak, kendiniz bir hizmet nesnesi oluşturabilir ve bu nesneyi kullanarak hizmet ana bilgisayarını oluşturabilirsiniz. Bunu yapmak için, ServiceBehaviorAttribute.InstanceContextMode özelliğini Single olarak ayarlamanız gerekir, aksi takdirde hizmet konağı açıldığında bir özel durum oluşturulur.
Böyle bir hizmet oluşturmak için oluşturucuyu ServiceHost(Object, Uri[]) kullanın. Özel System.ServiceModel.Dispatcher.IInstanceContextInitializer uygulamak yerine, bir singleton hizmeti tarafından kullanılmak üzere belirli bir nesne örneği sağlamak istediğinizde bir alternatif sunar. Hizmet uygulama türünüzü oluşturmak zor olduğunda (örneğin, parametresiz bir ortak oluşturucu uygulamazsa) bu aşırı yüklemeyi kullanabilirsiniz.
Bir nesne bu oluşturucuya sağlandığında, Windows Communication Foundation (WCF) örnekleme davranışıyla ilgili bazı özelliklerin farklı çalıştığını unutmayın. Örneğin, iyi bilinen bir nesne örneği sağlandığında çağrının InstanceContext.ReleaseServiceInstance hiçbir etkisi olmaz. Benzer şekilde, diğer tüm örnek yayın mekanizmaları yoksayılır. ServiceHost sınıfı, tüm işlemlerde OperationBehaviorAttribute.ReleaseInstanceMode olarak ayarlanmış gibi ReleaseInstanceMode.None özelliğiyle her zaman hareket eder.
Diğer Hizmet, Uç Nokta, Sözleşme ve İşlem Davranışları
Hizmet davranışları, ServiceBehaviorAttribute özniteliği gibi, hizmetin tamamında çalışır. Örneğin, ServiceBehaviorAttribute.ConcurrencyMode özelliğini ConcurrencyMode.Multiple olarak ayarlarsanız, bu hizmetteki her işlemde iş parçacığı eşitleme sorunlarını kendiniz ele almanız gerekir. Uç nokta davranışları bir uç nokta arasında çalışır; sistem tarafından sağlanan uç nokta davranışlarının çoğu istemci işlevselliğine yöneliktir. Sözleşme davranışları sözleşme düzeyinde çalışır ve işlem davranışları işlem teslimini değiştirir.
Bu davranışların çoğu özniteliklere uygulanır ve ServiceBehaviorAttribute ile OperationBehaviorAttribute özniteliklerini uygun hizmet sınıfına veya işlem uygulamasına uygulayarak kullanırsınız. Diğer davranışlar, örneğin ServiceMetadataBehavior ya da ServiceDebugBehavior nesneleri, genellikle bir uygulama yapılandırma dosyası kullanılarak uygulanır, ancak bunlar program aracılığıyla da kullanılabilir.
Örneğin, ServiceMetadataBehavior nesnesi kullanılarak meta verilerin yayımlanması yapılandırılır. Aşağıdaki uygulama yapılandırma dosyası en yaygın kullanımı gösterir.
<configuration>
<system.serviceModel>
<services>
<service
name="Microsoft.WCF.Documentation.SampleService"
behaviorConfiguration="metadataSupport"
>
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/SampleService" />
</baseAddresses>
</host>
<endpoint
address=""
binding="wsHttpBinding"
contract="Microsoft.WCF.Documentation.ISampleService"
/>
<!-- Adds a WS-MetadataExchange endpoint at -->
<!-- "http://localhost:8080/SampleService/mex" -->
<endpoint
address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange"
/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="metadataSupport">
<!-- Enables the IMetadataExchange endpoint in services that -->
<!-- use "metadataSupport" in their behaviorConfiguration attribute. -->
<!-- In addition, the httpGetEnabled and httpGetUrl attributes publish -->
<!-- Service metadata for retrieval by HTTP/GET at the address -->
<!-- "http://localhost:8080/SampleService?wsdl" -->
<serviceMetadata httpGetEnabled="true" httpGetUrl=""/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Aşağıdaki bölümlerde, hizmetinizin veya istemcinizin çalışma zamanı teslimini değiştirmek için kullanabileceğiniz en kullanışlı sistem tarafından sağlanan davranışların birçoğu açıklanmaktadır. Her birinin nasıl kullanılacağını belirlemek için referans konusuna bakın.
Hizmet Davranışları
Aşağıdaki davranışlar hizmetler üzerinde çalışır.
AspNetCompatibilityRequirementsAttribute. Bir WCF hizmetine, hizmetin ASP.NET Uyumluluk Modu'nda çalıştırılıp çalıştırılamayacağını göstermek için uygulanır.
ServiceAuthorizationBehavior. Hizmetin istemci taleplerine nasıl yetki verdiğini kontrol eder.
ServiceCredentials. Hizmet kimlik bilgilerini yapılandırıyor. X.509 sertifikası gibi hizmetin kimlik bilgilerini belirtmek için bu sınıfı kullanın.
ServiceDebugBehavior. WCF hizmeti için hata ayıklama ve Yardım bilgileri özelliklerini etkinleştirir.
ServiceMetadataBehavior. Hizmet meta verilerinin ve ilişkili bilgilerin yayınını denetler.
ServiceSecurityAuditBehavior. Güvenlik olaylarının denetim davranışını belirtir.
ServiceThrottlingBehavior. Hizmet performansını ayarlamanıza olanak tanıyan çalışma zamanı aktarım hızı ayarlarını yapılandırır.
Uç Nokta Davranışları
Aşağıdaki davranışlar uç noktalarda çalışır. Bu davranışların çoğu istemci uygulamalarında kullanılır.
CallbackBehaviorAttribute. Çift yönlü istemci uygulamasında geri çağırma hizmeti uygulamasını yapılandırıyor.
CallbackDebugBehavior. WCF geri çağırma nesnesi için hizmet hata ayıklamasını etkinleştirir.
ClientCredentials. Kullanıcının istemcide kullanılmak üzere istemci ve hizmet kimlik bilgilerinin yanı sıra hizmet kimlik bilgileri kimlik doğrulaması ayarlarını yapılandırmasına izin verir.
ClientViaBehavior. İstemciler tarafından aktarım kanalının oluşturulması gereken Tekdüzen Kaynak Tanımlayıcısı'nı (URI) belirtmek için kullanılır.
MustUnderstandBehavior.
MustUnderstand
işleme özelliğini devre dışı bırakması için WCF'ye talimat verir.SynchronousReceiveBehavior. Çalışma zamanını, kanallar için eşzamanlı bir alma süreci kullanması konusunda talimatlandırır.
TransactedBatchingBehavior. İşlemsel alma işlemlerini destekleyen aktarımlar için alma işlemlerini iyileştirir.
Sözleşme Davranışları
DeliveryRequirementsAttribute. Bağlamaların hizmete veya istemci uygulamasına sağlaması gereken özellik gereksinimlerini belirtir.
İşlem Davranışları
Aşağıdaki işlem davranışları, işlemler için serileştirme ve işlem denetimlerini belirtir.
DataContractSerializerOperationBehavior. çalışma zamanı davranışını System.Runtime.Serialization.DataContractSerializertemsil eder.
XmlSerializerOperationBehavior. öğesinin
XmlSerializer
çalışma zamanı davranışını denetler ve bunu bir işlemle ilişkilendirir.TransactionFlowAttribute. Servis operasyonunun bir işlem üst bilgisini kabul etme seviyesini belirtir.