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.
Çağrı yapan uygulamada hizmet modeli katmanı, uygulama kodundaki yöntem çağrılarını giden iletilere çevirmekten, bunları temel alınan kanallara göndermekten, sonuçları uygulama kodundaki dönüş değerlerine ve dışarı parametrelerine geri çevirmekten ve sonuçları çağırana geri döndürmekten sorumludur. Hizmet modeli uzantıları, istemci veya dağıtıcı işlevselliği, özel davranışlar, ileti ve parametre kesme ve diğer genişletilebilirlik işlevlerini içeren yürütme veya iletişim davranışını ve özelliklerini değiştirir veya uygular.
Bu konu, ClientRuntime ve ClientOperation sınıflarının bir Windows Communication Foundation (WCF) istemci uygulamasında, bir WCF istemcisinin varsayılan yürütme davranışını değiştirmek veya iletileri, parametreleri ya da dönüş değerlerini kanal katmanından göndermeden veya almadan önceki ya da sonraki süreçte nasıl durdurup değiştirebileceğini açıklamaktadır. Hizmet çalışma zamanını genişletme hakkında daha fazla bilgi için bkz. Dağıtıcıları Genişletme. Özelleştirme nesnelerini değiştiren ve istemci çalışma zamanına ekleyen davranışlar hakkında daha fazla bilgi için bkz. Çalışma Zamanını Davranışlarla Yapılandırma ve Genişletme.
Müşteriler
İstemcide, WCF istemci nesnesi veya istemci kanalı, yöntem çağrılarını giden iletilere ve gelen iletileri çağıran uygulamaya döndürülen işlem sonuçlarına dönüştürür. (İstemci türleri hakkında daha fazla bilgi için bkz . WCF İstemci Mimarisi.)
WCF istemci türleri, bu uç noktayı ve işlem düzeyi işlevselliğini işleyen çalışma zamanı türlerine sahiptir. Bir uygulama bir işlemi çağırdığında, ClientOperation giden nesneleri bir iletiye dönüştürür, kesicileri işler, giden çağrının hedef sözleşmeye uygun olduğunu onaylar ve giden iletiyi, giden kanalları (çift yönlü hizmetler söz konusu olduğunda gelen kanalları) oluşturmaktan ve yönetmekten, ek giden ileti işlemeyi (üst bilgi değişikliği gibi) yönetmekten, ileti kesicileri her iki yönde işlemaktan ve gelen çift yönlü çağrıları uygun istemci tarafı ClientRuntime nesnesine yönlendirmekten sorumlu olan DispatchRuntime öğesine iletir. ClientOperation ve ClientRuntime, mesajlar (hatalar dahil) istemciye döndürüldüğünde benzer hizmetler sağlar.
Bu iki çalışma zamanı sınıfı, WCF istemci nesnelerinin ve kanallarının işlenmesini özelleştirmeye yönelik ana uzantıdır. sınıfı, ClientRuntime kullanıcıların sözleşmedeki tüm iletiler arasında istemci yürütmesini kesmesine ve genişletmesine olanak tanır. sınıfı, ClientOperation kullanıcıların belirli bir işlemdeki tüm iletiler için istemci yürütmesini kesmesine ve genişletmesine olanak tanır.
Özellikleri değiştirme veya özelleştirme ekleme işlemleri sözleşme, uç nokta ve işlem davranışları kullanılarak yapılır. İstemci çalışma zamanı özelleştirmelerini gerçekleştirmek için bu tür davranışların nasıl kullanılacağı hakkında daha fazla bilgi için bkz. Çalışma Zamanını Davranışlarla Yapılandırma ve Genişletme.
Senaryo
İstemci sistemini genişletmek için aşağıdakiler de dahil olmak üzere çeşitli nedenler vardır:
Özel İleti Doğrulama. Bir kullanıcı, bir iletinin belirli bir şema için geçerli olmasını sağlamayı isteyebilir. Bu, IClientMessageInspector arabirimini uygulayıp, uygulamayı MessageInspectors özelliğine atayarak yapılabilir. Örnekler için bkz: Nasıl yapılır: İstemcideki İletileri İnceleme veya Değiştirme ve Nasıl Yapılır: İstemcideki İletileri İnceleme veya Değiştirme.
Özel İleti Kaydı. Bir kullanıcı, bir uç nokta üzerinden akan bazı uygulama iletilerini incelemek ve günlüğe kaydetmek isteyebilir. Bu, mesaj kesici arabirimleriyle de gerçekleştirilebilir.
Özel Mesaj Dönüştürmeleri. Kullanıcı, uygulama kodunu değiştirmek yerine çalışma zamanındaki iletiye belirli dönüştürmeler uygulamak isteyebilir (örneğin, sürüm oluşturma için). Bu, tekrar mesaj yakalayıcı arabirimlerle sağlanabilir.
Özel Veri Modeli. Kullanıcı, WCF'de (yani, System.Runtime.Serialization.DataContractSerializer, System.Xml.Serialization.XmlSerializerve nesneleri) varsayılan olarak desteklenenler dışında bir veri veya System.ServiceModel.Channels.Message serileştirme modeline sahip olmak isteyebilir. Bu, ileti biçimlendirici arabirimleri uygulanarak yapılabilir. Daha fazla bilgi için bkz System.ServiceModel.Dispatcher.IClientMessageFormatter . ve ClientOperation.Formatter özelliği.
Özel Parametre Doğrulama. Bir kullanıcı, yazılan parametrelerin geçerli olmasını zorunlu kılmak isteyebilir (XML'nin aksine). Bu, parametre denetçisi arabirimleri kullanılarak yapılabilir. Bir örnek için bkz . Nasıl yapılır: Parametreleri İnceleme veya Değiştirme veya İstemci Doğrulama.
ClientRuntime Sınıfını Kullanma
ClientRuntime sınıfı, iletileri kesen ve istemci davranışını genişleten uzantı nesneleri ekleyebileceğiniz bir genişletilebilirlik noktasıdır. Kesme nesneleri belirli bir sözleşmedeki tüm iletileri işleyebilir, yalnızca belirli işlemler için iletileri işleyebilir, özel kanal başlatma gerçekleştirebilir ve diğer özel istemci uygulaması davranışını uygulayabilir.
Bu özellik, CallbackDispatchRuntime hizmet tarafından başlatılan geri çağırma istemcileri için dağıtım çalışma zamanı nesnesini döndürür.
OperationSelector özelliği özel bir işlem seçici nesnesi kabul eder.
özelliği, ChannelInitializers istemci kanalını denetleyebilen veya değiştirebilen bir kanal başlatıcısının eklenmesini sağlar.
Operations özelliği, ClientOperation nesnelerinin koleksiyonunu alır, bu koleksiyona özel ileti kesici ekleyerek işlemin iletilerine özgü işlevsellik sağlayabilirsiniz.
özelliği, ManualAddressing bir uygulamanın adreslemeye doğrudan denetim sağlamak için bazı otomatik adresleme üst bilgilerini kapatmasını sağlar.
özelliği, Via iletinin hedefinin değerini aktarım düzeyinde aracıları ve diğer senaryoları destekleyecek şekilde ayarlar.
MessageInspectors özelliği, bir WCF istemcisi aracılığıyla geçen tüm iletilere özel ileti kesicileri ekleyebileceğiniz IClientMessageInspector nesnelerinin koleksiyonunu alır.
Ayrıca, sözleşme bilgilerini alan bir dizi başka özellik de vardır:
WCF istemcisi çift yönlü bir WCF istemcisiyse, aşağıdaki özellikler geri çağırma WCF istemci bilgilerini de alır:
WCF istemci yürütmesini tüm bir WCF istemcisine genişletmek için, bir özelliği değiştirmenin ya da bir arabirimi uygulayıp bu arabirimi bir özelliğe eklemenin istediğiniz işlevselliği oluşturup oluşturmayacağını görmek amacıyla ClientRuntime sınıfındaki mevcut özellikleri gözden geçirin. Belirli bir uzantıyı derlemek için seçtikten sonra, çağrıldığında ClientRuntime sınıfına erişim sağlayacak şekilde bir istemci davranışı uygulayarak uzantınızı uygun ClientRuntime özelliğine yerleştirin.
Bir işlem davranışı (uygulayan IOperationBehaviorbir nesne), bir sözleşme davranışı (uygulayan IContractBehaviorbir nesne) veya bir uç nokta davranışı (uygulayan IEndpointBehaviornesne) kullanarak koleksiyona özel uzantı nesneleri ekleyebilirsiniz. Yükleme davranışı nesnesi, uygun davranış koleksiyonuna program aracılığıyla, bildirim temelli olarak (özel bir öznitelik uygulanarak) veya davranışın bir uygulama yapılandırma dosyası kullanılarak eklenmesini sağlamak için özel BehaviorExtensionElement bir nesne uygulanarak eklenir. Ayrıntılar için bkz. Çalışma ZamanınıDavranışlarla Yapılandırma ve Genişletme.
WCF istemcisi üzerinde kesme işlemi gösteren örnekler için bkz Nasıl yapılır: İstemcide İletileri İnceleme veya Değiştirme.
ClientOperation Sınıfını Kullanma
ClientOperation sınıfı, istemci çalışma zamanı değişiklikleri ve yalnızca bir hizmet işlemi kapsamındaki özel uzantılar için ekleme noktasıdır. (Sözleşmedeki tüm iletiler için istemci çalışma zamanı davranışını değiştirmek için sınıfını ClientRuntime kullanın.)
Belirli bir hizmet işlemini temsil eden Operations nesnesini bulmak için ClientOperation özelliğini kullanın. Aşağıdaki özellikler WCF istemci sistemine özel nesneler eklemenize olanak tanır:
Bir işlem için özel bir Formatter uygulama eklemek veya mevcut biçimlendiriciyi değiştirmek amacıyla IClientMessageFormatter özelliğini kullanın.
ParameterInspectors özel IParameterInspector bir uygulama eklemek veya geçerli uygulamayı değiştirmek için özelliğini kullanın.
Aşağıdaki özellikler, biçimlendirici ve özel parametre denetçileriyle etkileşimde sistemi değiştirmenizi sağlar:
SerializeRequest Giden iletinin seri hale getirilmesini denetlemek için özelliğini kullanın.
Gelen bir iletinin seri durumdan çıkarılmasını denetlemek için DeserializeReply özelliğini kullanın.
İstek iletisinin Action WS-Addressing eylemini denetlemek için özelliğini kullanın.
BeginMethod ve EndMethod, WCF istemci yöntemlerinin zaman uyumsuz bir işlemle ilişkili olduğunu belirtmek için kullanın.
SOAP hatalarında ayrıntı türü olarak görünebilen türleri içeren bir koleksiyonu almak için FaultContractInfos özelliğini kullanın.
IsInitiating ve IsTerminating özelliklerini, işlem çağrıldığında bir oturumun başlatılıp başlatılmayacağını veya sonlandırılıp sonlandırılmayacağını kontrol etmek için kullanın.
İşlemin IsOneWay tek yönlü bir işlem olup olmadığını denetlemek için özelliğini kullanın.
Parent içeren ClientRuntime nesneyi almak için özelliğini kullanın.
İşlemin Name adını almak için özelliğini kullanın.
İşleme hangi yöntemin eşleneceğini control etmek için SyncMethod özelliğini kullanın.
WCF istemci çalışmasını yalnızca bir hizmet işlemi boyunca genişletmek için, bir özelliği değiştirmenin veya bir arabirimi uygulayıp bir özelliğe eklemenin istediğiniz işlevselliği oluşturup oluşturmadığını görmek için, ClientOperation sınıfındaki kullanılabilir özellikleri gözden geçirin. Belirli bir uzantıyı derlemek için seçtikten sonra, çağrıldığında ClientOperation sınıfına erişim sağlayacak şekilde bir istemci davranışı uygulayarak uzantınızı uygun ClientOperation özelliğine yerleştirin. Bu davranışın içinde ClientRuntime özelliğini gereksinimlerinize uyacak şekilde değiştirebilirsiniz.
Genellikle, arabirimi uygulayan bir nesne olan bir işlem davranışını uygulamak yeterlidir, ancak belirli bir işlem için IOperationBehavior öğesini bulup davranışı oraya ekleyerek aynı şeyi gerçekleştirmek için uç nokta davranışlarını ve sözleşme davranışlarını da kullanabilirsiniz. Ayrıntılar için bkz. Çalışma ZamanınıDavranışlarla Yapılandırma ve Genişletme.
Özel davranışınızı yapılandırmadan kullanmak için, özel davranış yapılandırma bölümü işleyicisi aracılığıyla davranışınızı kurun. Özel bir öznitelik oluşturarak davranışınızı da yükleyebilirsiniz.
WCF istemcisi üzerinden kesme işlemini gösteren örnekler için bkz Nasıl yapılır: Parametreleri İnceleme veya Değiştirme.