Я думаю, что вы ответили на свой вопрос в заголовке.
Я бы не стал беспокоиться об использовании очереди.Очереди отлично подходят для отправки информации, с которой нужно что-то решать, когда не имеет значения, сколько времени занимает обработка.Поскольку у вас есть веб-служба, ожидающая получения результатов, это не идеально.
Отправка запросов в другие веб-службы по одному будет работать и технически проще всего, но этоне даст вам наилучшей производительности.
В этой ситуации я бы отправлял запросы всем другим веб-службам параллельно, используя Task Parallel Library .Предполагая, что порядок пунктов, которые вы возвращаете, не важен, ваш код может выглядеть примерно так:
public List<LocationResult> PlacesOfInterest(LocationParameters parameters)
{
WebService[] webServices = GetArrayOfAllWebServices();
LocationResult[][] results = new LocationResult[webServices.Count()][];
// Call all of the webservices parallel
Parallel.For((long)0,
webServices.Count(),
i =>
{
results[i] = webServices[i].PlacesOfInterest(parameters);
});
var finalResults = new List<LocationResult>();
// Put all the results together
for (int i = 0; i < webServices.Count(); i++)
{
finalResults.AddRange(results[i]);
}
return finalResults;
}