WCF响应问题 - 获得多个响应

时间:2009-09-17 04:53:49

标签: wcf

我正在使用Silverlight,WCF组合。

目前,我遇到服务响应方面的一个问题。

我正在使用请求响应服务类型。

我有100个项目,我将调用100个服务来获取它的属性。

foreach (ItemDto item in items)
{

   ServiceCall(); 
   ServiceSendCount++;
}


private void OnServiceCallCompleted(.....)
{
    ServiceReceiveCount++;
}

如果我发送5个服务呼叫,则返回5 * 5 = 25个响应。 与我发送10个服务呼叫相同,然后返回10 * 10 = 100个响应。

我无法弄清楚问题是什么......

任何人都可以对此有所了解吗?

更新

请在此处找到服务电话的方法。 我同意每次我发送OnServiceCallCompleted ..

foreach (ItemDto item in items)
{

   itemPropertyService.GetItemProperties([parameters] , OnServiceCallCompleted);
   ServiceSendCount++;
}


private void OnServiceCallCompleted(.....)
{
    ServiceReceiveCount++;

    /* here contains my logic to process the response
       If it cames mulriple time then my logic will down 
    */
}

您能告诉我相同的解决方案吗?由于现在无法改变服务。

但它会产生响应时间问题。

假设我要一次发送100件物品的请求。

在我的第一个approch中,我将以5-10秒的时间获得正确数据的前100个回复。

ItemPropertyService itemPropertyService = new ItemPropertyService();
foreach (ItemDto item in items) 
{
     itemPropertyService.GetItemProperties([parameters] , OnServiceCallCompleted);  
     ServiceSendCount++; 
}

(我讨论的问题是它会向我发送100 X 100响应,导致超时)

在第二篇Approch中,(按照你的建议)

foreach (ItemDto item in items) 
{
      ItemPropertyService itemPropertyService = new ItemPropertyService();
      itemPropertyService.GetItemProperties([parameters] , OnServiceCallCompleted);
      ServiceSendCount++; 
}

我收到的回复与请求相同,但大约需要2分钟。

实际上,我无法弄清楚耗时的问题。 由于我们的要求非常庞大,所以需要时间。

你知道如何解决这个问题吗?

我快要解决我的问题了。

1 个答案:

答案 0 :(得分:2)

由于您没有显示ServiceCall()函数,因此无法从代码中判断出来,但数字建议您重复使用相同的代理对象,并在每次发出请求时添加OnServiceCallCompleted事件处理程序。如果多次添加相同的事件处理程序,它将多次触发,并且完成的事件处理程序是每个代理对象而不是每个请求。

尝试为每个请求创建一个新的代理对象,看看你是否还有多个回复。