假设我的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
生成代理文件的方式,以避免界面中的请求/响应方法签名模式吗? According to 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服务。