среда, 6 октября 2010 г.

WCF transfer large DataSet or DataTable - Part 2

Продолжение размышлений, которые я начал в прошлой статье WCF transfer large DataSet or DataTable.

Начал реализовывать свою версию chunked коллекции. Вот на какие вопросы сразу же наткнулся:

1.       Интероперабельность. Написание клиентов для не WCF платформы, или нового WCF клиента с нуля становится нетривиальной задачкой без кода непосредственно подгружающего данные порциями.

2.       Серверная логика. Если на сервере крутится 2 независимых сервиса, то для произвольных данных нужно либо уметь выбирать данные порциями, либо сохранять /кешировать результат запроса, для того, чтобы не вытаскивать кучу раз кучу данных (а именно в ситуации с кучей данных нужны такие извращения). Да и хранение такого количества данных накладно.

3.       Клиентская логика. Коллекцию нужно уметь сливать. Для примера: я гружу коллекцию в трех потоках 1-100 записи, 100-200 записи и 200-300 записи. Первым отрабатывает поток, который отдаст 100-200 записей, соотвественно мне как то надо при получение остальных порций данных слить все в одну коллекцию. При рассмотрении произвольных данных ситуация ухудшается.

4.       Идентификация. Нужно как то водить дополнительный уровень идентификации, для того, чтобы знать к какому объекту мы хотим обращаться.

Попробую все же добить эти вопросы и написать нормальную реализацию для коллекций. На 1 вопрос придется видимо просто забить, тут ничего не поделаешь, идеологически не прокатит. Вопрос 2 и 4 оставлю видимо на усмотрение разработчика сервиса, поскольку большие зависимости от того, какие передаются данные.

Вообще странно что в WCF такие штуки не предусмотрены из коробки, потому что на канальном уровне это делается гораздо проще.

Posted via email from Комуникликабельность

Комментариев нет: