Я работаю с таблицами хранилища Azure и службами RIA, чтобы создать довольно простой пользовательский интерфейс Silverlight для доступа к некоторым данным и управления ими.
Ничего особенного: модель данных с некоторыми аннотациями и DomainDataSource
делают все это очень легким делом.
С одним незначительным исключением.
Когда у меня действительно очень большая таблица, то загрузка ее, по крайней мере, когда я делаю это в Development Fabric и даже при использовании параметра LoadSize
в DomainDataSource
, занимает много времени.
Я предполагаю, что происходит следующее:
- Клиент Silverlight запрашивает у службы RIA, скажем, 100 первых строк таблицы.
- Поскольку запросы хранилища данных Azure являются чрезвычайно простыми, служба извлекает все строки из хранилища данных, и THEN выполняет Take (100) для этого набора.
- Клиент получает первые 100 строк.
Это нормально для сохранения пропускной способности, но далеко не оптимально, если учесть, что нужно платить за вычислительную мощность, используемую приложением на основе Azure.
Есть ли способ оптимизировать запросы службы RIA? Можно ли вообще использовать методы Take()
и Skip()
в таблицах хранения Azure?
РЕДАКТИРОВАТЬ: я использую бета-версию WCF RIA Services с пакетом обновления 1 (SP1) и выполнил несколько учебных пособий по Silverlight со службами RIA (все они очень похожи). Объединяя их, мне просто интересно, можно ли улучшить загрузку большой таблицы в Silverlight, добавив параметр LoadSize
. На данный момент кажется, что он сохраняет только пропускную способность (поскольку правильное количество строк отправляется клиенту Silverlight), но весь процесс по-прежнему использует столько же процессорного времени, сколько и для всей таблицы.