Я вызываю метод RIA Service ImportSubcomponentFileSetFiles (это Invoke, а не Query) дважды следующим образом:
foreach (var viewModel in FileSetViewModels.Where(vm => vm.IsSelectedForImport))
{
DomainContext.ImportSubcomponentFileSetFiles(viewModel.SubcomponentFileSet.Id, callback =>
{
//...
DomainContext.Load(DomainContext.GetSubcomponentFileSetWithStatusQuery(subcomponentFileSetId), LoadBehavior.RefreshCurrent,
callback2 =>
{
//...
}, true);
}, null);
}
Я вижу в Fiddler, что два запроса сразу отправляются на ImportSubcomponentFileSetFiles .
ImportSubcomponentFileSetFiles занимает ~ 15 секунд. Первый вызов возвращается через 15 секунд, а второй - через 15 секунд. Из журнала видно, что второй вызов ImportSubcomponentFileSetFiles не начинается до тех пор, пока не завершится первый вызов.
У меня вопрос: почему эти асинхронные запросы обрабатываются последовательно на сервере и как я могу обрабатывать их параллельно?
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ
- Службы WCF Ria размещаются в веб-приложении ASP.NET.
- Я ничего не храню в сессии.
- Я использую Entity Framework 4 в методе обслуживания.
- Класс Domain Services расширяет LinqToEntitiesDomainService
Мой метод обслуживания следующий:
public void ImportSubcomponentFileSetFiles(int subcomponentId)
{
Debug.WriteLine("{0}: {1} - ImportSubcomponentFileSetFiles method started", subcomponentId, DateTime.Now);
//...code for fetching subcomponentFileSet
subcomponentFileSet.ImportFiles(ObjectContext);
Debug.WriteLine("{0}: {1} - ImportSubcomponentFileSetFiles method finished", subcomponentId, DateTime.Now);
}
Вот мои журналы, детализирующие, что второй вызов метода не начинается, пока не завершится первый:
File Set A: 27/1/2011 11:20:06 PM 11:20:06 PM - Calling ImportSubcomponentFileSetFiles (Silverlight Client)
File Set A: 27/1/2011 11:20:06 PM 11:20:06 PM - ImportSubcomponentFileSetFiles Called (Silverlight Client)
File Set B: 27/1/2011 11:20:06 PM 11:20:06 PM - Calling ImportSubcomponentFileSetFiles (Silverlight Client)
File Set B: 27/1/2011 11:20:06 PM 11:20:06 PM - ImportSubcomponentFileSetFiles Called (Silverlight Client)
File Set A: 01/27/2011 23:20:06 - ImportSubcomponentFileSetFiles method started (Server)
File Set A: 01/27/2011 23:20:06 - ImportFiles Started (Server)
File Set A: 01/27/2011 23:20:23 - ImportFiles Finished (Server)
File Set A: 01/27/2011 23:20:23 - ImportSubcomponentFileSetFiles method finished (Server)
File Set A: 27/1/2011 11:20:23 PM - Import callback recieved (Silverlight Client)
File Set A: 01/27/2011 23:20:23 - GetSubcomponentFileSetWithStatus Started (Server)
File Set A: 01/27/2011 23:20:23 - GetSubcomponentFileSetWithStatus Finished (Server)
File Set B: 01/27/2011 23:20:23 - ImportSubcomponentFileSetFiles method started (Server)
File Set B: 01/27/2011 23:20:23 - ImportFiles Started (Server)
File Set A: 27/1/2011 11:20:23 PM - Refresh callback recieved (Silverlight Client)
File Set B: 01/27/2011 23:20:36 - ImportFiles Finished (Server)
File Set B: 01/27/2011 23:20:36 - ImportSubcomponentFileSetFiles method finished (Server)
File Set B: 27/1/2011 11:20:36 PM - Import callback recieved (Silverlight Client)
File Set B: 01/27/2011 23:20:36 - GetSubcomponentFileSetWithStatus Started (Server)
File Set B: 01/27/2011 23:20:36 - GetSubcomponentFileSetWithStatus Finished (Server)
File Set B: 27/1/2011 11:20:36 PM - Refresh callback recieved (Silverlight Client)
Приветствия
Chris