C# WCF返回一个对象而不返回另一个对象的速度很慢

C# WCF返回一个对象而不返回另一个对象的速度很慢,c#,wcf,performance-testing,C#,Wcf,Performance Testing,我有一个服务在IIS下运行。我正在测试两种不同的数据收集方法,看看哪种方法对我们最合适。服务类有2个方法,它们使用相同的对象但有2个不同的方法来查询数据。一个是LINQtoSQL,另一个是使用第三方web服务。在我的服务中,这两种方法都在大约7秒钟内获得数据。它们正在加载相同的对象,它们在服务的同一类中。 在我使用服务填充网格的客户机上,一个在.18秒内从服务获取数据,另一个需要31.6秒。由于这两种方法在服务中的工作时间相同,为什么客户端会出现巨大差异? 以下是对客户端中服务的调用: 这一次需

我有一个服务在IIS下运行。我正在测试两种不同的数据收集方法,看看哪种方法对我们最合适。服务类有2个方法,它们使用相同的对象但有2个不同的方法来查询数据。一个是LINQtoSQL,另一个是使用第三方web服务。在我的服务中,这两种方法都在大约7秒钟内获得数据。它们正在加载相同的对象,它们在服务的同一类中。 在我使用服务填充网格的客户机上,一个在.18秒内从服务获取数据,另一个需要31.6秒。由于这两种方法在服务中的工作时间相同,为什么客户端会出现巨大差异? 以下是对客户端中服务的调用:

这一次需要31.6秒:

var watch = Stopwatch.StartNew();
courseOfferingsSyn = clientsyn.GetCoursesOffered_SynergyService(SchoolDD.SelectedItem.ToString(), schoolYear,     TermCodeDD.SelectedValue).ToList();
var test = watch.Elapsed.TotalSeconds;
Console.Write(test);
这一次需要0.188秒:

var watch = Stopwatch.StartNew();
courseOfferings = client.GetCoursesOffered(SchoolDD.SelectedValue, schoolYear, TermCodeDD.SelectedValue).ToList();
var test = watch.Elapsed.TotalSeconds;
Console.Write(test);
两者之间的唯一区别是一个查询需要学校代码,另一个查询需要学校名称

哦,还有绑定(都使用同一个):



有人知道我能找什么吗?我被难住了。

在我看来,后端数据库缺少索引,这迫使数据库搜索表中的所有记录。这是我能想到的为什么一个呼叫快速而另一个呼叫缓慢的唯一原因…

您的客户机在同一台机器上吗?这可能只是网络延迟吗?试过多次试用吗?客户端在另一台机器上。不是网络延迟,因为一个非常快,另一个非常慢。从相同的服务调用相同的数据。速度测试的代码没有方法实现那么有价值。是否可以包括指定WCF服务的方法实现?是否每次运行客户端时都是这种情况?试着用Fiddler分析以原始格式返回的数据。我可以,它们有点长。但我确实计算了它们的时间,它们每一个都在大约7秒钟内完成。但是等等--我在本地机器上测试了该服务,但是客户机在将该服务发布到服务器后正在调用该服务。那可能很重要。。
    <binding name="BasicHttpBinding_CourseService" allowCookies="true" maxReceivedMessageSize="20000000" maxBufferSize="20000000" maxBufferPoolSize="20000000">
      <readerQuotas maxDepth="32" maxArrayLength="200000000" maxStringContentLength="200000000"/>
    </binding>