2009-06-30 14 views
5

Chicos/chicas Estamos teniendo un rendimiento terrible con nuestro sitio web que utiliza WCF como la aplicación más tarde. Estamos utilizando seguridad y certificados a nivel de mensaje (autenticación mutua). Estamos almacenamiento en caché de la fábrica de canal en el objeto de aplicación:Terrible rendimiento con WCF y certificados (autenticación mutua)

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 

En cada página que necesitamos datos hacemos lo siguiente:

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 

También he fijado EstablishSecurityContext = true.

No estamos deseando almacenar en caché el proxy debido a tener que meternos con un estado proxy fallado. Por lo que sé, el almacenamiento en caché de la pila de canales debería ser suficiente de todos modos. Cuando enciendo el seguimiento, veo un montón de comandos de SCT en lugar de solo para la primera llamada, como era de esperar. ¿Alguien sabe qué está pasando? ¿Estamos almacenando en caché la fábrica de canales de forma incorrecta?

gracias, NCAGE

+0

Por favor, consulte este artículo que podría ayudarlo. http://webservices20.blogspot.com/2009/01/wcf-performance-gearing-up-your-service.html – Verybiztalker

Respuesta

5

parece que podría resolverlo utilizando un certificado de una autoridad ceritificate:

"MakeCert es una herramienta proporcionada por Microsoft para crear certificados de prueba que se pueden utilizar durante el desarrollo de un producto (solo para fines de desarrollo y prueba). Estos certificados también tienen problemas de rendimiento, ciertas operaciones criptográficas pueden funcionar lentamente cuando se usan. Los certificados emitidos por una autoridad de certificación verdadera no tienen este problema, y ​​es un problema conocido ".

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

Editar: puede ser la actividad extra se debe al reconocimiento inicial cuando se crea de una sesión. El valor predeterminado de WCF es por llamada, es decir, se crea una nueva sesión para cada llamada. Usted podría intentar marcar su contrato con:

[ServiceContract (Sesión = true)]

que pueden mantener la sesión y evitar el apretón de manos inicial.

+0

Actualmente estamos utilizando certificados de confianza. No estamos utilizando certificados autofirmados. – coding4fun

+0

Hecho interesante, lo notaré para futuras investigaciones. – jpierson

0

Recuerdo un problema similar, sin embargo fue hace 18 meses. Encontré this mientras tenía un rápido vistazo de cómo resolví el problema. Puede ser útil, editaré mi respuesta cuando encuentre lo que estaba buscando.

+0

De hecho, he visto esto antes. Si bien estoy de acuerdo con el tipo si tienes un grupo de clientes anónimos que se conectan y hacen una llamada y luego se desconectan, entonces sus recomendaciones funcionarían, pero me parece muy poco probable.Es más probable que desee un cliente que se conecta y realiza múltiples llamadas y no tiene que crear la pila de comunicación cada vez. Si lo tienes configurado correctamente, la primera llamada debería emitir una llamada asincrónica + sincronizada y cada llamada posterior debería emitir una llamada de cifrado de sincronización. – coding4fun

0

Las llamadas adicionales SCT/RST establecen el contexto de seguridad. Si recrea el proxy en cada llamada, un contexto de seguridad es innecesario. Apágalo.

La forma de usar la fábrica está bien. Sin embargo, su manejo de errores y cierre del proxy no lo es. Asegúrese de cerrar o cancelar el proxy en cualquier caso. Verifique msdn para ver el patrón recomendado.

¿Puede dar algunas cifras sobre el mal funcionamiento?

Cuestiones relacionadas