1

假设调用了我的 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与下面列出的不同ISDKClientISDK具有请求/响应模式,而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 服务。

4

0 回答 0