Параллельная обработка на стороне сервера веб-частей Sharepoint - PullRequest
1 голос
/ 14 сентября 2009

Вот сценарий. У меня есть несколько веб-частей Sharepoint, которые отображают данные для пользователя в виде сетки. Все они подключаются к веб-части навигации, которую пользователь может использовать для выбора параметров для каждой из сеток данных. На заднем конце веб-часть сетки вызывает контейнер DI для получения «IDataProvider», который запрашивает некоторое SoR и возвращает таблицу данных.

Вот что я хочу сделать: я хочу, чтобы веб-части сетки выполнялись параллельно, а не последовательно, поскольку многие из наших внедрений «IDataProvider» осуществляют вызовы веб-служб. Я попытался спулинговать BackgroundWorker в событии WebPartManager.ConnectionsActivation с флагом «ожидания» в методе «OnPreRender», но сервер выдал ошибку, сообщающую, что асинхронные операции запрещены. Когда я попытался установить флаг «Асинхронизация» в значение «true» на макете страницы, я получил сообщение об ошибке, указывающее на то, что из-за простоты sharepoint запрещено устанавливать флаг «Асинхронизация» в значение true.

Есть ли обходной путь для этого?

1 Ответ

1 голос
/ 14 сентября 2009

DivisionByZorro,

Во-первых, я люблю имя: -)

Не бойтесь: WebParts может работать асинхронно / многопоточно без особой дополнительной работы. Вам просто нужно зарегистрировать соответствующие обработчики событий с помощью Page.RegisterAsyncTask . Вы укажете метод, который должен вызываться асинхронно, а также метод обратного вызова, к которому вернется элемент управления после завершения обработки.

Даниэль Ларсон дает хорошее освещение в своих статьях здесь (http://daniellarson.spaces.live.com/blog/cns!D3543C5837291E93!180.entry) и (http://daniellarson.spaces.live.com/blog/cns!D3543C5837291E93!192.entry).). Он также охватывает несколько наблюдателей и другие проблемы.

Надеюсь, это поможет!

...