伙计们/姑娘们,我们稍后使用 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
我还设置了建立 securitycontext = true。
我们不想缓存代理,因为不得不处理错误的代理状态。据我所知,缓存通道堆栈应该足够了。当我打开跟踪时,我看到了一堆 SCT 命令,而不是像我预期的那样仅用于第一次调用。有谁知道发生了什么事。我们是否错误地缓存了通道工厂?
谢谢,
恩凯奇
看起来您可以使用证书颁发机构的证书来解决它:
“MakeCert是微软提供的一个工具,用于创建可在产品开发过程中使用的测试证书(仅用于开发和测试目的)。这些证书也存在性能问题,某些加密操作在使用时可能会执行缓慢。”由真正的证书颁发机构颁发的不存在此问题,并且这是一个已知问题。”
http://weblogs.asp.net/cibrax/archive/2006/08/08/Creating-X509-Certificates-for-WSE-or-WCF.aspx
Edit:额外的活动可能是由于创建会话时的初始握手造成的。 WCF 默认是每次调用,即为每个调用创建一个新会话。您可以尝试在合同上标记:
[服务合同(会话= true)]
这可以维持会话并避免最初的握手。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)