<?xml version="1.0" encoding="utf-8"?><rss version="2.0"><channel><title>Блог Сергея Даровских: последние заметки с кейвордом "silverlight"</title><link>http://sau.ru/keywords/silverlight</link><description></description><language>ru</language><generator>e2 (http://e2.ilyabirman.ru)</generator><item><title>большие WCF-сервисы</title><guid isPermaLink="true">http://sau.ru/2010/02/18/1</guid><link>http://sau.ru/2010/02/18/1</link><comments>http://sau.ru/2010/02/18/1/comments</comments><description>Все, кто занимался созданием приложений, работающих с&amp;nbsp;большими данными, знают, что возвращаемый сервисом результат по&amp;nbsp;умолчанию не&amp;nbsp;может быть больше двух мегабайт, поэтому в&amp;nbsp;описание биндинга в&amp;nbsp;web.config привычно добавляем что-то вроде: &lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&amp;lt;binding&amp;nbsp;name="myBinding"&amp;nbsp;maxBufferSize="2147483647"&amp;nbsp;maxReceivedMessageSize="2147483647"&amp;nbsp;maxBufferPoolSize="2147483647"&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Тем не&amp;nbsp;менее, в&amp;nbsp;случае действительно больших таблиц этого оказывается недостаточным. По&amp;nbsp;умолчанию установлено ограничение не&amp;nbsp;только на&amp;nbsp;общий объем передаваемых данных, но и на&amp;nbsp;количество принимаемых элементов (655360). Поэтому в&amp;nbsp;описание поведения сервиса надо добавить (или исправить) строку&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&amp;lt;dataContractSerializer&amp;nbsp;maxItemsInObjectGraph="5000000"&amp;nbsp;/&amp;gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
В&amp;nbsp;это поле 2&amp;nbsp;миллиарда ставить не&amp;nbsp;рекомендую.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sau.ru/keywords/silverlight"&gt;silverlight&lt;/a&gt;&lt;br /&gt;&lt;a href="http://sau.ru/keywords/webconfig"&gt;webconfig&lt;/a&gt;</description><pubDate>Thu, 18 Feb 2010 23:41:54 +0500</pubDate></item><item><title>Преобразование типов</title><guid isPermaLink="true">http://sau.ru/2009/11/24/1</guid><link>http://sau.ru/2009/11/24/1</link><comments>http://sau.ru/2009/11/24/1/comments</comments><description>В&amp;nbsp;Silverlight часто приходится работать с&amp;nbsp;объектами, не&amp;nbsp;зная заранее их&amp;nbsp;типа. Чтобы получить доступ ко&amp;nbsp;всем методам соответствующего объекта, надо его преобразовать к&amp;nbsp;правильному типу. Первая мысль&amp;nbsp;&amp;mdash; использовать для этого прямой каст: &lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Canvas&amp;nbsp;cnvMap&amp;nbsp;=&amp;nbsp;(Canvas)&amp;nbsp;LayoutRoot.FindName("myCanvas");&lt;br /&gt;&lt;/code&gt; &lt;br /&gt;
Однако если такого объекта не&amp;nbsp;существует или он&amp;nbsp;имеет другой тип, такой каст выбросит исключение InvalidCastException. Таким образом, правильный код со&amp;nbsp;временем превращается в&amp;nbsp;суровое нагромождение блоков try-catch.&lt;br /&gt;
&lt;br /&gt;
По-моему, для преобразования типов гораздо удобнее использовать оператор &lt;b&gt;as&lt;/b&gt;. В&amp;nbsp;отличие от&amp;nbsp;прямого преобразования, в&amp;nbsp;случае неудачи он не&amp;nbsp;вызывает исключение, а&amp;nbsp;возвращает null. То&amp;nbsp;есть код выглядит таким образом:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Canvas&amp;nbsp;cnvMap&amp;nbsp;=&amp;nbsp;LayoutRoot.FindName("myCanvas")&amp;nbsp;as&amp;nbsp;Canvas;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;(cnvMap&amp;nbsp;!=&amp;nbsp;null)&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;выполняем&amp;nbsp;нужные&amp;nbsp;действия&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;обрабатываем&amp;nbsp;ошибку&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/code&gt; &lt;br /&gt;
Если преобразования типов применяются часто, то&amp;nbsp;второй вариант делает код намного более читаемым.&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sau.ru/keywords/silverlight"&gt;silverlight&lt;/a&gt;&lt;br /&gt;&lt;a href="http://sau.ru/keywords/c"&gt;c#&lt;/a&gt;&lt;br /&gt;&lt;a href="http://sau.ru/keywords/kod"&gt;код&lt;/a&gt;</description><pubDate>Tue, 24 Nov 2009 21:33:00 +0500</pubDate></item><item><title>saving time</title><guid isPermaLink="true">http://sau.ru/2009/11/07/1</guid><link>http://sau.ru/2009/11/07/1</link><comments>http://sau.ru/2009/11/07/1/comments</comments><description>Пару недель назад работал ночью над своим таймлайном на&amp;nbsp;Silverlight. Запустив в&amp;nbsp;очередной раз программу, обнаружил вот такую ошибку:&lt;br /&gt;
&lt;br /&gt;
&lt;img src="http://farm3.static.flickr.com/2689/4082845718_590eff4e33_o.png" alt="http://farm3.static.flickr.com/2689/4082845718_590eff4e33_o.png" /&gt;&lt;br /&gt;
&lt;br /&gt;
Вернул код к&amp;nbsp;предыдущему состоянию, ошибка осталась точно такой же. Запустил Fiddler, он&amp;nbsp;показал, что при попытке обратиться к&amp;nbsp;xap-файлу сервер возвращает ошибку 500. Я&amp;nbsp;попробовал загрузить этот файл браузером, вот что у&amp;nbsp;меня получилось:&lt;br /&gt;
&lt;br /&gt;
&lt;img src="http://farm3.static.flickr.com/2428/4082085927_e61685b242_o.png" alt="http://farm3.static.flickr.com/2428/4082085927_e61685b242_o.png" /&gt;&lt;br /&gt;
&lt;br /&gt;
Проверил все таймеры и&amp;nbsp;асинхронные вызовы функций: никаких проблем в&amp;nbsp;коде. Открыл старый проект, код которого не&amp;nbsp;менял уже неделю. Запустил&amp;nbsp;&amp;mdash; те же&amp;nbsp;ошибки. В 2:45&amp;nbsp;я, наконец, понял в&amp;nbsp;чем проблема. Перевод стрелок! Ушел из&amp;nbsp;дома, погулять и&amp;nbsp;подумать, а&amp;nbsp;через двадцать минут все уже работало как раньше.&lt;br /&gt;
&lt;br /&gt;
Граждане! Не&amp;nbsp;программируйте во&amp;nbsp;время перевода часов на&amp;nbsp;зимнее время!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sau.ru/keywords/silverlight"&gt;silverlight&lt;/a&gt;</description><pubDate>Sat, 07 Nov 2009 17:13:51 +0500</pubDate></item><item><title>2005-2009</title><guid isPermaLink="true">http://sau.ru/2009/11/06/1</guid><link>http://sau.ru/2009/11/06/1</link><comments>http://sau.ru/2009/11/06/1/comments</comments><description>Четыре года сюда не&amp;nbsp;писал. В&amp;nbsp;жизни все изменилось, а&amp;nbsp;здесь все по-прежнему. Возвращаешься как в&amp;nbsp;старый дом, где все знакомо и&amp;nbsp;где давно не&amp;nbsp;был. Оглядываешься, заново узнаешь вещи, которые когда-то были привычными, смотришь на&amp;nbsp;свои старые работы&amp;nbsp;&amp;mdash; гордый из-за искренности и&amp;nbsp;немного смущенный наивностью&amp;hellip; Стараешься ничего не&amp;nbsp;испортить, и в то же&amp;nbsp;время начать все заново, с&amp;nbsp;чистого листа.&lt;br /&gt;
&lt;br /&gt;
Постараюсь и я. Блоггера из&amp;nbsp;меня не&amp;nbsp;получилось (этому есть с&amp;nbsp;десяток подтверждений&amp;nbsp;&amp;mdash; например, все предыдущие записи. Да и&amp;nbsp;эта, пожалуй), но и в&amp;nbsp;управдомы переквалифицироваться еще рановато. &lt;br /&gt;
&lt;br /&gt;
Пару месяцев назад мне понадобилось написать небольшое визуально-интерактивное приложение. Flash мне не&amp;nbsp;понравился с&amp;nbsp;первого взгляда, а&amp;nbsp;вот Silverlight от&amp;nbsp;Microsoft подошел идеально. Правда, не&amp;nbsp;один десяток раз приходилось сталкиваться с&amp;nbsp;тем, что элементарные вопросы отнимают много времени&amp;nbsp;&amp;mdash; слишком много там &amp;laquo;дизайнеров&amp;raquo; и&amp;nbsp;слишком мало программистов. Здесь не&amp;nbsp;будет &amp;laquo;10000&amp;nbsp;примеров кода на&amp;nbsp;Silverlight&amp;raquo; и &amp;laquo;Как написать Quake 4&amp;nbsp;на&amp;nbsp;Silverlight 2.0&amp;raquo;&amp;nbsp;&amp;mdash; а&amp;nbsp;просто решения конкретных задач, с&amp;nbsp;которыми мне приходилось сталкиваться.&lt;br /&gt;
&lt;br /&gt;
Конечно, при случае поговорим о&amp;nbsp;чем угодно. Зачем мне себя ограничивать? Ведь я же&amp;nbsp;снова дома.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sau.ru/keywords/sau-ru"&gt;sau.ru&lt;/a&gt;&lt;br /&gt;&lt;a href="http://sau.ru/keywords/silverlight"&gt;silverlight&lt;/a&gt;</description><pubDate>Fri, 06 Nov 2009 19:30:42 +0500</pubDate></item></channel></rss>