WCF缓慢返回一个对象但不返回另一个对象

时间:2014-02-22 01:09:59

标签: c# wcf performance-testing

我在IIS下运行一项服务。我正在测试2种不同的数据收集方法,以确定哪种方法最适合我们。服务类有2个方法,它们使用相同的对象,但使用2种不同的方法来查询数据。一个是linq到sql,另一个是使用第三方Web服务。在我的服务中,2种方法各自在大约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);

这个需要.188秒:

var watch = Stopwatch.StartNew();
courseOfferings = client.GetCoursesOffered(SchoolDD.SelectedValue, schoolYear, TermCodeDD.SelectedValue).ToList();
var test = watch.Elapsed.TotalSeconds;
Console.Write(test);

两者之间的唯一区别是一个查询需要学校代码,另一个需要学校名称。

哦,和绑定(都使用相同的):

    <binding name="BasicHttpBinding_CourseService" allowCookies="true" maxReceivedMessageSize="20000000" maxBufferSize="20000000" maxBufferPoolSize="20000000">
      <readerQuotas maxDepth="32" maxArrayLength="200000000" maxStringContentLength="200000000"/>
    </binding>

任何人对我甚至可以寻找什么都有任何想法?我很难过。

1 个答案:

答案 0 :(得分:0)

对我来说,后端数据库缺少索引,并强制数据库搜索表中的所有记录。这是我能想到为什么一个电话会很快而另一个电话很慢的唯一原因......