вторник, Октябрь 20, 2009
понедельник, Октябрь 05, 2009
silverlight install experience
Встречаются пользователи – ну, как дети.
Такой увидит картинку с надписью “Install Silverlight” и замрет в ступоре.
Поэтому если мы хотим сделать все красиво то нужно
а) Объяснить что происходит и куда тыкнуть
б) обновить страницу после установки Silverlight
Первый пункт решается пояснительным текстом и красивой кнопкой. Такой, чтоб ткнуть в нее хотелось рефлексорно.
Второй – технически. Сам установщик сильверлайта ничего кроме, собственно, установки – не умеет. Поэтому проверку «установлен ли сильверлайт» и обновление страницы будем делать сами.
Для начала добавим вот такой код в тэг object, в котором вызывается .xap файл:
1: <div id="reloader"></div>
2: <script type="text/javascript">
3: $(function()
4: {5: window["sl_refresh_timeout"] = window.setInterval(
6: function()
7: {8: $("#reloader").load("/где-тотам/reloader.html");
9: }, 5000); 10: });11: </script>
т.е: в div с id=”reloader” средствами jquery ajax каждые 5 секунд будет подгружаться некий html с сервера
теперь посмотрим что в этом html:
1: <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="0" height="0" style="visibility: hidden;">
2: <param name="source" value="где-то там/silverlight/sl_reloader.xap"/>
3: <param name="onerror" value="onSilverlightError" />
4: <param name="background" value="white" />
5: <param name="windowless" value="false"/>
6: <param name="minRuntimeVersion" value="3.0.40624.0" />
7: </object>
т.е.: просто подгружаем еще один silverlight control.
А контрол этот – результат компиляции пустого silverlight проекта, у которого в файл App.xaml.cs в метод application_startup добавлен код перегружающий страницу:
1: public App()
2: { 3: Startup += application_startup; 4: InitializeComponent(); 5: } 6: 7: private void application_startup(object sender, StartupEventArgs e)
8: { 9: HtmlPage.Window.Eval( "window.location.reload()" );
У меня такой .xap весит 3 килобайта.
Остался последний штрих: в, собственно, большой silverlight проект, который мы так желаем видеть загруженным, добавить одну строчку:
1: public App()
2: { 3: Startup += application_startup; 4: InitializeComponent(); 5: } 6: 7: private void application_startup( object sender, StartupEventArgs e )
8: {9: HtmlPage.Window.Eval( "window.clearInterval(window[\"sl_refresh_timeout\"])" );
чтобы процесс постоянной перегрузки релоадера прекратился.
Итак, резюмирую:
на странице с сильверлайт-проектом, в тэг object добавляем понятное пользователю описание «Почему мне нужно нажать на эту красивую кнопку», собственно, саму красивую кнопку и ajax подгружающий вспомогательный silverlight файл. Как только браузер окажется в состоянии воспринимать silverlight, страница перегрузится и установленный в скрипте интервал будет отменен основным silverlight`овым объектом.
воскресенье, Сентябрь 27, 2009
Для всех страдальцев
Мечтающих о переходе с asp.net на asp.net mvc:
краткое руководство с исходниками: как использовать новые части приложения написанные на mvc из asp.net.
Таким образом можно постепенно переписывать существующие webcontrols, например.
пятница, Июль 10, 2009
Silverlight 3 RTW
3-й сильверлайт вышел, что не может не радовать.
Ссылка на установку, Silverlight Tools для Visual Studio и Silverlight 3 SDK.
Ура-ура.
Note: что-то интересное произойдет тут http://www.seethelight.com/ через 337 минут (на момент написания) :)
пятница, Апрель 03, 2009
СПб Alt.Net
Волевым усилием справился сегодня с хронической болезнью - синдромом тяжелой на подъем пятой точки и отправился на встречу пока еще малочисленных петербургских альтнетчиков.
Да и повод был весомый - морально поддержать однополчанина :)
Семинар был посвящен интереснейшим штукам - ASP.NET MVC про который уже многие слышали (надеюсь), хотя еще не все понимают, что он изменит им жизнь к лучшему; а так же замечательному Spark View Engine, который по лаконичности и ясности кода используемого в шаблонах со страшной силой заруливает в минуса все известные мне аналогичные системы.
Собственно, тем изначально предполагалось больше, но множество вопросов превратили встречу в обсуждение, что imho здоровенный плюс по сравнению с теми несколькими унылыми "лекциями" на которых мне когда-то доводилось бывать.
Питерским читателям:
Все, кто знал и не пришел - сами себе злобные буратины.
Всем остальным рекомендую заглянуть на следующую встречу.
Резюмирую (глобально, давно хотел составить этот список):
Дотнетчикам, которые хотят быть "впереди на полшага (намного больше, на самом деле)" - в обязательном порядке осваивать: ASP.NET MVC, Spark, SharpArchitecture, NHibernate/Fluent NHibernate, Castle Windsor (или ему аналогичные системы), xVal, NHibernate Validator и конечно же jQuery.
Из композиции всех этих добряков выходит совершенно убийственный в своей мощности набор для разработки.
Альтернатива, в .net, как и была - одна: тулбоксы, дизайнеры, спагетти-код и омерзительный ненатуральный WebForms.






