Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 加快WCF客户端实例化?_Vb.net_Wcf_Wcf Client_Channelfactory_Wcf Proxy - Fatal编程技术网

Vb.net 加快WCF客户端实例化?

Vb.net 加快WCF客户端实例化?,vb.net,wcf,wcf-client,channelfactory,wcf-proxy,Vb.net,Wcf,Wcf Client,Channelfactory,Wcf Proxy,假设我的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 = myChannelFacto

假设我的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
具有带参数的常规方法

我可以控制
svcuti
如何生成代理文件,以避免接口中的请求/响应方法签名模式吗,方法签名应匹配,即客户端应直接引用其接口进行所有调用(但这不是我的情况):

如果没有,是否可以使用现有通道实例化基于WCF的客户端?比如:

Dim myClient As New ISDKClient(myChannel)

如果没有,是否有其他方法可以提高在我的应用程序中实例化新WCF客户端的性能?假设所有可用的都是HTTP上的WCF服务。

找出时间花在哪里。@JohnSaunders:显然是为频道创建元数据。“显然”,以及在创建频道的哪个部分?它在网络I/O上被阻止了吗?去哪里?“显然”,这是对服务的网络I/O。但是如果不是呢?@JohnSaunders:channelfactory和客户端应该使用相同的方式访问资源。唯一的区别是,该操作只执行一次。没有网络I/O从工厂创建客户端或通道。我在没有访问WCF服务的情况下进行了测试,所有内容仍然运行,数字都是一样的。如果我配置文件,它会说“不是我的代码”是花费时间的地方,特别是
clr.dll
Dim myClient As New ISDKClient(myChannel)