You are viewing [info]sergeydarovskih's journal

большие WCF-сервисы

Feb. 18th, 2010 | 11:41 pm

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



<binding name="myBinding" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" maxBufferPoolSize="2147483647">



Тем не менее, в случае действительно больших таблиц этого оказывается недостаточным. По умолчанию установлено ограничение не только на общий объем передаваемых данных, но и на количество принимаемых элементов (655360). Поэтому в описание поведения сервиса надо добавить (или исправить) строку



<dataContractSerializer maxItemsInObjectGraph="5000000" />

Link | | Add to Memories | Share

Преобразование типов

Nov. 24th, 2009 | 09:33 pm

В Silverlight часто приходится работать с объектами, не зная заранее их типа. Чтобы получить доступ ко всем методам соответствующего объекта, надо его преобразовать к правильному типу.



Первая мысль — использовать для этого прямой каст: Canvas cnvMap = (Canvas) LayoutRoot.FindName("myCanvas"); Однако если такого объекта не существует или он имеет другой тип, такой каст выбросит исключение InvalidCastException. Таким образом, правильный код со временем превращается в нагромождение блоков try-catch.



По-моему, для преобразования типов гораздо удобнее использовать оператор as. В отличие от прямого преобразования, в случае неудачи он не вызывает исключение, а возвращает null. То есть код выглядит таким образом:



Canvas cnvMap = LayoutRoot.FindName("myCanvas") as Canvas;
if (cnvMap != null) 

    выполняем нужные действия 

else
 { 
    обрабатываем ошибку 
}




Если преобразования типов применяются часто, то второй вариант делает код намного более читаемым.


Link | Leave a comment | Add to Memories | Share

(no subject)

Nov. 7th, 2009 | 05:13 pm

Пару недель назад работал ночью над своим таймлайном на Silverlight. Запустив в очередной раз программу, обнаружил вот такую ошибку:



http://farm3.static.flickr.com/2689/4082845718_590eff4e33_o.png



Вернул код к предыдущему состоянию, ошибка осталась точно такой же. Запустил Fiddler, он показал, что при попытке обратиться к xap-файлу сервер возвращает ошибку 500. Я попробовал загрузить этот файл браузером, вот что у меня получилось:



http://farm3.static.flickr.com/2428/4082085927_e61685b242_o.png



Проверил все таймеры и асинхронные вызовы функций: никаких проблем в коде. Открыл старый проект, код которого не менял уже неделю. Запустил — те же ошибки. В 2:45 я, наконец, понял в чем проблема. Перевод стрелок! Ушел из дома, погулять и подумать, а через двадцать минут все уже работало как раньше.



Граждане! Не программируйте во время перевода часов на зимнее время!

Link | Leave a comment | Add to Memories | Share

(no subject)

Nov. 6th, 2009 | 07:25 pm

Четыре года сюда не писал. В жизни все изменилось, а здесь все по-прежнему. Возвращаешься как в старый дом, где все знакомо и где давно не был. Оглядываешься, заново узнаешь вещи, которые когда-то были привычными, смотришь на свои старые работы — гордый из-за искренности и немного смущенный наивностью… Стараешься ничего не испортить, и в то же время начать все заново, с чистого листа.



Постараюсь и я. Блоггера из меня не получилось (этому есть с десяток подтверждений — например, все предыдущие записи. Да и эта, пожалуй), но и в управдомы переквалифицироваться еще рановато.



Пару месяцев назад мне понадобилось написать небольшое визуально-интерактивное приложение. Flash мне не понравился с первого взгляда, а вот Silverlight от Microsoft подошел идеально. Правда, не один десяток раз приходилось сталкиваться с тем, что элементарные вопросы отнимают много времени — слишком много там «дизайнеров» и слишком мало программистов. Здесь не будет «10000 примеров кода на Silverlight» и «Как написать Quake 4 на Silverlight 2.0» — а просто решения конкретных задач, с которыми мне приходилось сталкиваться.



Конечно, при случае поговорим о чем угодно. Зачем мне себя ограничивать? Ведь я же снова дома.

Link | Leave a comment | Add to Memories | Share