Я использую 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 товаров одновременно.
В моем первом приближении я получу первые 100 ответов с правильными данными в течение 5-10 секунд.
ItemPropertyService itemPropertyService = new ItemPropertyService();
foreach (ItemDto item in items)
{
itemPropertyService.GetItemProperties([parameters] , OnServiceCallCompleted);
ServiceSendCount++;
}
(Проблема, о которой я говорил, отправит мне 100 X 100 ответов, что приведет к таймауту)
Во втором подходе (как вы и предлагали)
foreach (ItemDto item in items)
{
ItemPropertyService itemPropertyService = new ItemPropertyService();
itemPropertyService.GetItemProperties([parameters] , OnServiceCallCompleted);
ServiceSendCount++;
}
Я получаю те же ответы, что и на запрос, но это займет около 2 минут.
На самом деле, я не могу понять проблему трудоемкости.
Поскольку наши запросы очень большие, это действительно займет время.
Знаете ли вы об этом, как решить эту проблему?
Я как раз рядом, чтобы решить мою проблему.