在.net中缺乏使用Java Web Service的性能

时间:2011-08-23 22:45:22

标签: .net web-services

我一直在使用.net 3.5中的Java Web服务,但我在第一次创建Web服务代理时看到了性能不足。

我使用添加服务引用功能添加了WebService引用。此时创建了WebService引用,下一步是创建一个代理实例来使用Web Service。

我一直在使用的指针(让我们说是http://crdevelopment/services/SalesService)包含250种肥皂方法。 所以当我尝试使用单个WebMehod,即getCustomersLocation时,我会执行以下代码行

var serviceResult = new SalesProxy(http://crdevelopment/services/SalesService?wsdl);

这一行需要很长时间,我认为这是因为endPoint确实有很多网络方法。

然后,我使用方法

var customerLocations = serviceResult .getCustomersLocation("San Jose").

Web方法的执行不需要花费时间,但代理创建可以。

我的问题是,为什么代理对象实例需要很长时间,即使我已添加Web服务引用并且必须已创建代理?

这对你有意义吗?

1 个答案:

答案 0 :(得分:1)

看起来你有一个错误的网址(?wsdl在最后):

var serviceResult = 
       new SalesProxy("http://crdevelopment/services/SalesService?wsdl");

不应该是这样的:

var serviceResult = new SalesProxy("http://crdevelopment/services/SalesService");

如果我理解正确,您在运行时不需要WSDL,因为代理是在设计时生成的。它可以解释这个问题,因为生成的代理可能无缘无故地加载WSDL,并且可能导致延迟。

更新:

看起来您可能在SoapHttpClientProtocol构造函数中遇到与XML序列化相关的延迟。请参阅此question,它包含一些可能的解决方案。此外,您可能想尝试generating WCF客户端/代理并使用它。您需要使用“添加服务引用”,而不是“添加Web引用”,区别为here

相关问题