Aracılığıyla paylaş


Orta Katman İstemci Uygulamaları

Bu konuda, Windows Communication Foundation (WCF) kullanan orta katman istemci uygulamalarına özgü çeşitli sorunlar açıklanmaktadır.

Orta Katman İstemci Performansını Artırma

ASP.NET kullanan Web hizmetleri gibi önceki iletişim teknolojileriyle karşılaştırıldığında, WCF istemci örneğinin oluşturulması, wcf'nin zengin özellik kümesi nedeniyle daha karmaşık olabilir. Örneğin, bir ChannelFactory<TChannel> nesne açıldığında, istemci örneğinin başlangıç süresini artıran bir yordam olan hizmetle güvenli bir oturum oluşturabilir. Genellikle, WCF istemcisi birkaç çağrı yaptığından ve ardından kapandığından, bu ek özellik özellikleri istemci uygulamalarını büyük ölçüde etkilemez.

Ancak orta katman istemci uygulamaları, birçok WCF istemci nesnesini hızlı bir şekilde oluşturabilir ve sonuç olarak daha fazla başlatma gereksinimleriyle karşılaşabilir. Hizmetleri çağırırken orta katman uygulamalarının performansını artırmaya yönelik iki ana yaklaşım vardır:

  • WCF istemci nesnesini önbelleğe alın ve mümkün olduğunda sonraki çağrılar için yeniden kullanın.

  • Bir ChannelFactory<TChannel> nesne oluşturun ve ardından bu nesneyi kullanarak her çağrı için yeni WCF istemci kanalı nesneleri oluşturun.

Bu yaklaşımları kullanırken dikkate alınması gereken sorunlar şunlardır:

  • Hizmet bir oturum kullanarak istemciye özgü bir durum koruyorsa, hizmetin durumu orta katman istemcisinin durumuna bağlı olduğundan, orta katman WCF istemcisini birden çok istemci katmanı istekleriyle yeniden kullanamazsınız.

  • Hizmetin istemci başına kimlik doğrulaması gerçekleştirmesi gerekiyorsa, wcf istemcisi (veya ChannelFactory<TChannel>) oluşturulduktan sonra orta katmanın istemci kimlik bilgileri değiştirilemediğinden, orta katman WCF istemcisini (veya WCF istemci kanalı nesnesini) yeniden kullanma yerine orta katmandaki her gelen istek için yeni bir istemci oluşturmanız gerekir.

  • Kanallar ve kanallar tarafından oluşturulan istemciler iş parçacığı açısından güvenli olsa da, aynı anda kabloya birden fazla ileti yazmayı desteklemeyebilir. Büyük iletiler gönderiyorsanız, özellikle akış gerçekleştiriliyorsa, gönderme işlemi başka bir gönderme işleminin tamamlanmasını beklemeyi engelleyebilir. Bu iki tür soruna neden olur: eşzamanlılık eksikliği ve denetim akışı kanalı yeniden kullanan hizmete geri dönerse kilitlenme olasılığı (yani, paylaşılan istemci, kod yolu paylaşılan istemciye geri çağırmayla sonuçlanan bir hizmeti çağırır). Bu, yeniden kullandığınız WCF istemcisinin türünden bağımsız olarak geçerlidir.

  • Kanalı paylaşıp paylaşmadığınıza bakılmaksızın hatalı kanalları işlemeniz gerekir. Ancak kanallar yeniden kullanıldığında, hatalı bir kanal birden fazla bekleyen isteği veya göndermeyi devre dışı bırakabiliyor.

Bir istemciyi birden çok istek için yeniden kullanmayla ilgili en iyi yöntemleri gösteren bir örnek için bkz . ASP.NET İstemcisinde Veri Bağlama.

Ayrıca, çalışma zamanında bu veri türleri için seri hale getirme ve derleme kodunu kullanarak XmlSerializer seri hale getirilebilen veri türlerini kullanan istemciler için başlangıç performansını artırabilirsiniz ve bu da yavaş başlatma performansına neden olabilir. ServiceModel Meta Veri Yardımcı Programı Aracı (Svcutil.exe), uygulama için derlenmiş derlemelerden gerekli serileştirme kodunu oluşturarak bu uygulamalar için başlatma performansını geliştirebilir. Daha fazla bilgi için bkz . Nasıl yapılır: XmlSerializer kullanarak WCF İstemci Uygulamalarının Başlangıç Süresini Geliştirme.

Ayrıca bkz.