如何加快WCF客户端的启动性能



我使用basicHttpBinding绑定实现了一个简单的独立WCF服务。我创建了一个客户端,并使用Add Service Reference生成了客户端存根代码。客户端第一次调用服务时,在服务器看到请求之前至少需要15秒。从阅读这篇文章来看,这似乎是由于JIT生成序列化代码。我尝试使用

按照这里的描述预生成代码。
svcutil.exe /t:xmlSerializer <assemblyPath>

在我编译的客户端exe但代码,但得到以下错误:没有服务合同的程序集有一个操作与XmlSerializerOperationBehavior .

首先,你应该注意,如果你使用预编译的代码,你会失去性能,因为预编译的代码不使用任何特定于平台的,它只是编译一个"正常"的代码。

另一方面,JIT在第一次编译时确实会受到一些性能影响(对于代理类的创建),但它在进一步的请求中确实工作得更好。

所以我建议你检查你的服务和客户端的初始化代码-可能是,你可以优化它(15秒意味着你正在从各种程序集创建大量对象)。

尝试使用一些Lazy类

最新更新