可怕的性能与WCF和证书(相互验证)(Terrible Performance with WCF a

2019-06-24 13:12发布

人/女同胞们,我们正与我们的网站,使用WCF的应用程序后糟糕的表现。 我们使用消息级安全性和证书(相互认证)。 我们在缓存应用程序对象通道工厂:

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

在每一个我们需要我们做下面的数据页:

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

我也有设置establishsecuritycontext =真。

我们不想缓存,因为有乱用有故障的代理状态的代理。 据我所知缓存通道堆栈应足够反正。 当我打开跟踪我看到一堆SCT的命令,而不是仅仅为第一次调用像我期望的那样。 有谁知道怎么回事。 我们是否缓存通道工厂是否有误?

谢谢,NCAGE

Answer 1:

看起来你可以使用证书从ceritificate权威解决这个问题:

“MakeCert是由微软提供的工具来创建可以在产品的开发过程中使用(为了开发和仅用于测试)测试证书,这些证书具有同样的性能问题,在使用的时候一定加密操作可能执行缓慢。证书从真正的证书颁发机构颁发没有这个问题,它是一个已知的问题。”

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

编辑:可能是创建一个会话时,额外的活动是由于初始握手。 WCF默认为每通电话,这是一个新的会话为每个调用创建。 你可以尝试用标记您的合同:

[的ServiceContract(会话=真)]

这可以保持该会话,并避免初始握手。



Answer 2:

我记得有一个类似的问题,但它是一个很好的18个月前。 我发现这个同时具有快速浏览一下,因为我是如何解决这个问题。 它可以帮助,我将编辑我的回应时,我找到了我一直在寻找!



Answer 3:

附加SCT / RST呼叫建立的安全上下文。 如果重新创建每次调用代理,安全上下文是unneccesary开销。 把它关掉。

您使用厂家的方式是罚款。 然而,你的错误处理和代理不能合闸。 请确保您关闭或中止代理在任何情况下。 检查MSDN中推荐的模式。

也可以为您提供有关如何表现不好的一些数字?



文章来源: Terrible Performance with WCF and certificates (mutual authentication)