Denis Gladkikh
Russian   |  English

Выбранный тег: WPF

Страница  1  2  3  

Почему тормозит Silverlight?

Такой вопрос “Почему тормозит Silverlight?” достаточно часто можно услышать, особенно если вы разрабатываете решения при помощи технологии Silverlight. Часто вы не можете выиграть тендер, или уговорить заказчика на использование технологии Silverlight в вашем приложении, только потому что за ним уже закрепилась эта популярность мышления, что все приложения на Silverlight тормозят. Давайте попробуем обсудить этот вопрос.



Никогда не делайте классы и пространства имен с одним и тем же именем

Был у нас team leader (дальше просто лид). Тогда нас всех еще набирали на работу в компанию, где я сейчас работаю. Тогда намечалось создание нового продукта. Тогда нас брали, чтобы мы реализовали этот продукт. Перед тем как нас брали лид сделал правильную вещь, он остановился на модульной архитектуре, выбрал Prism, создал несколько модулей на клиенте, а на сервере под них сервисы. Раздал каждому разработчику по модулю (они практически были все независимы) и ждал результата. Очень все было верно, разработчики знали друг друга плохо, мы писали потихоньку код и знакомились.



Application Developers Days 2010–как это было…

Если вкратце – это было незабываемо! Конференция проходила в два дня в Ярославле 23-24 сентября (четверг и пятницу) – может быть, эти даты служат причиной, почему многие кто “хотел” не попали на конференцию, все-таки два рабочих дня. По мне так, ну и хорошо, нам больше пирожков досталось.

Давайте о главном, о докладах. Столько ненужной и неполезной мне на данный момент информации я не получал никогда, но в то же время столько интересной информации я тоже не получил никогда (кто знает, может, пригодятся мне когда-нибудь эти знания). Именно так можно охарактеризовать конференцию. Темы докладов были настолько разрозненные, что иногда просто было сложно переключаться. Люди уже просто терялись, было два доклада с одинаковым набором слов “Статический анализатор кода”, один в первый день, другой во второй день. И тот народ, который был на первом докладе, во второй день мне явно говорил – “неее, туда мы не пойдем, нас там, в прошлый раз загрузили этим анализатором”, и благо я объяснил сомневающемуся народу, что доклад будет совсем не про то, что тема-то совершенно другая. 

Главное, что я получил с этой конференции – это новые знакомства. Столько новых лиц, интересных личностей. Я наконец-то увидел кто это - Алёна C++. Кстати, ее доклад, раскрывающий простые принципы разработки AI в компьютерных играх – неописуемо интересный. Про каждый доклад, на котором я был, мне писать не хочется, каждый был в той или иной мере интересным и познавательным, посмотрите просто в твиттере тред с #ADD2010 и вы все поймете, ну и само собой про каждый доклад можно было бы немного понудить, вроде: это очевидно, а тут можно было остановиться и т.п.. После мероприятий в оба дня были небольшие afterparty, на которых очень хорошо пообщались с докладчиками и организаторами конференции. Знаете, так и хочется перечислить все доклады, на которых я был, поблагодарить каждого, не обойти стороной одного очень эксцентричного человека (думаю тут ясно про кого я), но я все-таки не буду вас нагружать этим. Попробуйте приехать на следующую такую конференцию, пока правда не понятно где она будет и когда именно. Я чуть-чуть застал это обсуждение, но в то afterparty, понятное дело, точного решения пока выявлено не было.

Теперь собственно про мой доклад. Мне предстояло биться за аудиторию с Мишей Черномордиковым, немного опасался, что ко мне может вообще никто не прийти на доклад с темой “Silverlight/WPF: возврат от паттерна MVVM to MVP”, опасения не оправдались – народ был, наверняка не столько, как было у Миши, но мне хватило аудитории. После доклада подарил подписку MSDN Ultimate одному из слушателей, ну и вопросов было предостаточно, что очень порадовало – это все-таки самая весомая оценка для меня. И простит меня Стас Фомин, который написал чудо программку, которая записывала все доклады, и который объяснял мне как этой программкой пользоваться, я тупо забыл включить запись. Саму презентацию я выложил Add2010 - Silverlight/WPF: MVP&MVVM, но больше у меня было, конечно же, слов, чем слайдов. Запись выступления будет, но вот последние 10 минут, где я знакомлю с примером – не знаю в каком качестве будут. Если есть желающие – могу безвозмездно рассчитаться с вами в виде LiveMeeting с прочтением полностью моего доклада.



Небольшой пример использования Code Contract

Признаюсь честно, что с темой Code Contract в .Net 4 я знаком давно, но вот реально ее использовать мне что-то не очень-то хотелось. Привык я к простым и обычным проверкам, вроде

if (argument == null) 
    throw new ArgumentNullException(“argument”)

А вот большого плюса от контрактов я не увидел. И вот недавно переставлял себе Windows из-за счастливого приобретения Intel® X25-M, и так получилось что случайно выбрал в фиче R# или Visual Studio 2010 при щелчке на классе левой кнопкой мышки при удержании Ctrl переход на метаданные, а не как обычно Object Explorer. И вот как-то перейдя на один из классов System.xxx попался мне исходный код (метаданные) одного из базовых классов .Net, там я заметил, что контракты распространенно используются в базовых классах фреймворка. Кстати, кто-нибудь знает как сделать так, чтобы при щелчке на классе с зажатым Ctrl все-таки переходить в Object Explorer?



Регистрация горячей клавиши (hotkey) в системе для WPF приложения

Пару дней назад мне попался на форумах GotDotNet вопрос [C# + WPF] Отлов нажатий клавиш, хуки, горячие клавиши в проекте WPF, зашел туда, посмотрел, и в голове всплыло, что год назад я реализовывал похожее на WinForms, регистрировал глобальные клавиши в системе для приложения. Делал я это для проекта Vista Keys Extender. Так как я на 100% помнил, что у меня там все работало, я сразу предложил автору вопроса посмотреть на тот мой проект, чтобы найти нужное решение. Однако, мой проект не подошел для решения данного вопроса, так как в WPF работа с сообщениями реализовано по-другому. Все же я решился помочь автору в этом вопросе и разобраться с данной проблемой. Отталкиваться я начал опять же с моего проекта, шаг за шагом разбираясь, что нужно изменить и как.



Принял участие в подкасте 2Гига (Выпуск #22)

2ГигаПринял участие в подкасте 2Гига (С участием Евгения Жаркова и Владимира Юнева). С ребятами очень приятно вести и поддерживать беседу, 70 минут пролетели как 10, не могу сказать, что получился полностью технический подкаст, скорее поверхностный, но все же было интересно. Рекомендую ;) Если есть вопросы или предложения – я всегда тут.

Содержание, примерно, было следующим:

Послушать можно на  RPOD, POD.FM



Выступление на ADD2010: Silverlight/WPF: возврат от паттерна MVVM к MVP

Пару дней назад я упомянул, что подал тезис на конференцию разработчиков Application Developers Days 2010, которая пройдет в Ярославле 23-24 сентября. Сегодня меня обрадовали, объявили, что мой доклад прошел, его тема «Silverlight/WPF: возврат от паттерна MVVM к MVP»:

В данном докладе автор на примерах обрисует особенности реализации знаменитых паттернов MVP и MVVM, применяемых при разработке приложений на WPF и Silverlight. Даст их подробное сравнение на примере данных технологий, укажет основные плюсы и минусы реализаций данных паттернов, а так же обрисует доработанный паттерн MVP с облегченной моделью представления, который является синтезом паттернов MVP и MVVM для разработки приложений на данных технологиях.

Я уже довольно давно недоволен паттерном MVVM, а вот почему, и что я предлагаю взамен (это предложение строится на моем опыте, а так же опыте коллег-разработчиков WPF/Silverlight) я расскажу на конференции Application Developers Days 2010 в Ярославле. Доклад на 100% еще не готов, потому если есть какие-либо предложения, идеи или советы – буду рад комментариям. У меня осталась одна подписка Visual Studio 2010 Ultimate + MSDN Premium Subscription, которую, скорее всего я разыграю за интересный вопрос или предложение на конференции (если они действительно будут). Если нет, то отдам докладчику, который мне понравится своим докладом и которому она действительно нужна.

Полностью тезис можно прочитать в этом документе add.doc, основная идея доклада из тезиса ниже.



Конференция Application Developer Days в Ярославле 23-24 сентября

Вчера отослал тезисы на конференцию Application Developer Days (Ярославль, 23-24 сентября) для секционного доклада, который, надеюсь, будет достаточно интересен для Silverlight и WPF разработчиков (было бы хорошо, если вообще для всех разработчиков), это будет не обычный доклад о технологиях, а немного о более высоком (очень надеюсь, что у меня это удастся). Если же не попаду на конференцию в качестве докладчика – ничего страшного, этот доклад опубликую где-нибудь (тот же http://techdays.ru), но на конференцию все равно пойду за деньги, так как уже список мастер-докладов впечатляет, мне хочется послушать:

  • Дмитрий Завалишин - Расскажет о текущем состоянии в разработке своего любимого детища — оригинальной операционной системы PhantomOS, близкой по концепции Microsoft Singularity, но при этом open-source.
  • Олег Царев, разработчик ядра MySQL расскажет о внутренней кухне.
  • Тему Javascript и javascript-фреймворков поднимет основатель javascript.ru, Илья Кантор.
  • Вадим Климонтович поделится своим опытом обработки ОЧЕНЬ БОЛЬШИХ объемов данных, и использование для этого NOSQL-подходов.

Так же опубликовали, что будут круглые столы, ну и наверняка много интересных и новых знакомств.

Кстати, как оказалось – срок подачи докладов продлили до 28 августа. Вообще, это нормальное явление, что сроки подачи докладов научных конференций всегда сдвигают. Что-то вроде менеджеров, которые говорят сделать вчера, а выкладывать изменения через неделю. Так что, может быть, я и зря так спешил до сегодняшнего числа подать заявку. Хотя, все равно бы оттянул бы время до последнего. Так получилось, что у меня одна из фирм организаторов (BYTE-Force) знакомая (еще бы, в одном городе живем) и со мной поделились информацией. Места для докладчиков еще есть (но немного), подать заявку на участие еще можно (28 августа), а так же намекнули, что хоть и требуется полностью доклад, но сойдет и подробные тезисы, так как программистов написать доклад – это очень сложно, будут делать исключения, если тезисы зацепят.

От себя могу предложить помощь, если что требуется узнать в Ярославле или что-то нужно рассказать. Город не родной, но тут уже живу 8 лет. В общем, до встречи на конференции!

Подробнее о конференции почитать можно на официальном сайте конференции http://add.it-conf.ru/. У меня, почему то, были сложности с поиском меню, чтобы подробнее почитать обо всем - оно справа.



Экспорт в Excel из Silverlight/WPF DataGrid

Экспорт табличной части в Excel из приложения достаточно распространенная задача, и решать ее можно по разному. Конечно решение зависит от того, что за приложение вы разрабатываете. Если это приложение разрабатываемое для автоматизации бизнес процессов, и оно предназначено для установки в несколько контор, то скорее всего вы можете диктовать условия (рекомендации по использованию), необходимые для вашего приложения. Либо заказчик выставит требования, под которые вы будете его разрабатывать. В этом случае, экспорт проще всего реализовывать через COM, используя инфраструктуру Excel (либо OpenOffice), тогда и реализовать данную задачу при помощи данного подхода будет просто, и это даст вам наибольшую гибкость и возможность использовать всю мощь таблиц Excel. Об этом вариант и пойдет разговор ниже. Другой вариант – ваше приложение предназначено для домашних пользователей, в этом случае диктовать обязательную установку MS Office или OpenOffice не очень хорошо, потому лучше не завязываться на них, а использовать либо сторонние компоненты для создания документов, либо экспортировать в xml/html формат, который понимает MS Office (так делает, например, JIRA). Правда в этом случае будет тяжело удовлетворить просьбы клиентов, вроде: сделать так, чтобы экспортируемый документ был подготовлен для печати в альбомном виде с необходимыми полями, хотя может быть и возможно.



Основы создания модульных приложений

В дополнение к вебкасту Prism: Composite Application Guidance for WPF and Silverlight хотелось бы сделать еще несколько умозаключений. “Призма” на данный момент очень распространенный подход к разработке программных продуктов. За рубежом если вы найдете какую-нибудь работу на WPF или Silverlight первый вопрос, который вам зададут “А знаете ли вы призму?”. Чтобы узнать ее можете посмотреть первые 20 минут скринкаста, где я описываю основные моменты данного подхода. Узнать призму – это безусловно хорошо, но еще лучше знать зачем она нужна. Постараюсь привести пару простых примеров модульных приложений.



Страница  1  2  3