2009-06-30 5 views
5

Guys/Gals WCF'yi daha sonra uygulama olarak kullanan web sitemizle korkunç bir performans yaşıyoruz. Mesaj düzeyinde güvenlik ve sertifikalar kullanıyoruz (karşılıklı kimlik doğrulama). Biz uygulama nesnesi kanal fabrikası önbelleklediğiniz:WCF ve sertifikalarla Korkunç Performans (karşılıklı kimlik doğrulama)

Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs) 

     Dim loChannelFactor As New ChannelFactory(Of OurReference.IWCFChannel)("ClientEndpoint") 
     loChannelFactor.Open() 
     Application.Add("ChannelFactory", loChannelFactor) 
End Sub 

biz aşağıdakileri yapın veriye ihtiyaç her sayfada:

Dim Proxy = DirectCast(voWebApp("ChannelFactory"), ChannelFactory(Of OurInfoReference.IOurInfoChannel)).CreateChannel 

Proxy.DataCall() 

If roWCFService IsNot Nothing Then 
     CType(roWCFService, ICommunicationObject).Close() 
     roWCFService = Nothing 
End If 

Ayrıca ben EstablishSecurityContext = true belirledik.

Arızalı proxy durumuyla uğraşmak zorunda kalmamız nedeniyle proxy'yi önbelleğe almak istemiyoruz. Önbelleğe aldığımı bildiğim kadarıyla kanal yığını yeterli olmalı. İzlemeyi açtığımda beklediğim gibi sadece ilk çağrı yerine bir grup SCT komutu görüyorum. Neler olup bittiğini bilen var mı? Kanal fabrikasını yanlış bir şekilde önbelleğe alıyor muyuz?

"MakeCert gelişimi sırasında kullanılabilecek test sertifikaları oluşturmak için Microsoft tarafından sağlanan bir araçtır:

sayesinde NCAGE

+0

Lütfen size yardımcı olabilecek bu makaleyi okuyun. http://webservices20.blogspot.com/2009/01/wcf-performance-gearing-up-your-service.html – Verybiztalker

cevap

5

Bir ceritificate yetkilisinden sertifika kullanarak çözmek ortada kimseler Bir ürün (Yalnızca geliştirme ve deneme amacıyla) Bu sertifikalar da performans sorunları yaşar, bazı kriptografik işlemler kullanıldığında yavaş çalışır. Gerçek bir Sertifika Yetkilisi tarafından verilen sertifikalar bu soruna sahip değildir ve bu bir sorun niteliğindedir. "

http://weblogs.asp.net/cibrax/archive/2006/08/08/Creating-X509-Certificates-for-WSE-or-WCF.aspx

Düzenleme

: bir oturumun oluştururken ilave aktivitesi, başlangıç ​​el sıkışma nedeniyle olabilir. WCF varsayılanı çağrı başınadır, bu her çağrı için yeni bir oturum oluşturulur. oturum korumak ve ilk el sıkışma önleyebilir

[ServiceContract (doğru Oturumu =)]

: Sen ile sözleşme işaretleme deneyebilirsiniz.

+0

Aslında, yetki sertifikalarını kullanıyoruz. Kendinden imzalı sertifika kullanmıyoruz. – coding4fun

+0

İlginç bir gerçek, bunu gelecekteki araştırmalar için not alacağım. – jpierson

0

Benzer bir sorunu hatırlıyorum, ancak 18 ay önce iyi geçti. Sorunu nasıl çözdüğümü görmek için this numaralı telefonu buldum. Yardımcı olabilir, aradığım şeyi bulduğumda cevabımı düzenlerim!

+0

Aslında bunu daha önce görmüştüm. Eğer bir grup anonim istemcinizle bağlantı kurarak ve bir görüşme yapıp sonra bağlantıyı keserseniz, onun tavsiyeleri işe yarayacaktır, ancak bunu çok olası bulmuyorum.Birden çok çağrıyı birbirine bağlayan ve yapan ve her seferinde iletişim yığınını oluşturmak zorunda olmayan bir istemci istemesi daha olasıdır. Doğru şekilde ayarladıysanız, ilk çağrı bir senkronizasyon + senkronizasyon çağrısı yayınlamalı ve bundan sonra her çağrı bir senkronizasyon şifreleme çağrısı vermelidir. – coding4fun

0

Ek SCT/RST çağrıları güvenlik bağlamını oluşturuyor. Her çağrıda proxy'yi yeniden oluşturursanız, bir güvenlik bağlamı gereksiz bir ek yüktür. Kapatmak.

Fabrika kullanma şekli iyi. Ancak, proxy'nizin hata işlenmesi ve kapatılması değil. Her durumda proxy'yi kapattığınızdan veya iptal ettiğinizden emin olun. Önerilen desen için msdn'yi kontrol edin.

Ayrıca, kötü performansın ne olduğu hakkında bazı rakamlar da sağlayabilir misiniz?