假设调用了我的 WCF 客户端接口ISDK
,并且调用了客户端对象本身ISDKClient
,由svcutil
.
当我像这样实例化 WCF 客户端时:
Dim myClient As New ISDKClient
创建第一个客户端大约需要 1.5 秒,随后大约需要 300 毫秒。
如果我使用通道工厂方法:
Dim myChannelFactory As New ChannelFactory(Of ISDK)(binding, endpoint)
Dim myChannel As ISDK = myChannelFactory.CreateChannel()
第一次调用需要 1.5 秒,但随后的调用CreateChannel
几乎是即时的。问题是 中的方法签名ISDK
与下面列出的不同ISDKClient
。ISDK
具有请求/响应模式,而ISDKClient
具有带参数的普通方法。
我可以控制如何svcutil
生成代理文件,以避免接口中的请求/响应方法签名模式吗?根据 MSDN,方法签名应该匹配,即客户端应该为所有调用直接引用其接口(但这不是我的情况):
Public Function SampleMethod(ByVal msg As String) As String _
Implements ISampleService.SampleMethod
Return MyBase.Channel.SampleMethod(msg)
End Function
如果没有,是否可以使用已经存在的通道实例化 WCF 客户端?就像是:
Dim myClient As New ISDKClient(myChannel)
如果没有,是否有任何其他方法可以提高在我的应用程序中实例化新 WCF 客户端的性能?假设所有可用的都是基于 HTTP 的 WCF 服务。