Почему WPF живее всех живых?

Я долгое время был разработчиком систем для десктопа. Сначала это был WinForms, потом более мощный и гибкий WPF. С тех пор прошло много времени и курсирует множество слухов и мнений о том, что WPF завершает свою жизнь, ведь сейчас столько разговоров о том, что можно писать настольные приложения на JS. А еще Microsoft усиленно двигает в массы платформу WinRT для разработки новых приложений. Это не могло меня и коллег оставить равнодушным.Так почему же мы, команда GoSharp конференции (да, да, это о C#), решили сделать акцент на десктопной разработке в разрезе WPF? Далее я хочу показать какие светлые и темные моменты есть в существующем положении фреймворка и почему все же стоит в него вкладывать силы и время.

938afe25e8e345939524d7534a77c258.png

Существует мнение, что развитие десктопной разработки остановилось в своем развитии и для этого есть несколько предпосылок. Одна из них — остановка, или даже лучше сказать стагнация, в самой базе, в визуальном фреймворке WPF. Значительных обновлений для него не было вот уже лет 5, как может показаться. Официальный тулкит давно не обновлялся, точнее с февраля 2010 года, т.е. вот как раз те самые 5 лет. При этом компании, специализирующиеся на кастом-компонентах, как например DevExpress и Telerik успешно выпускают обновления и составляют планы на будущее относительно WPF. Даже если вы ориентированы на новинки, то компоненты для WinRT все равно используют концепции и общую структуру XAML, который никуда не уходит.Далее мы хотим представить причины, по которым WPF некоторые считают неактуальным, и опровержение этих причин.

Причины для беспокойстваПричин для беспокойства можно выделить с дюжину. Но не все они реально так страшны и существенны. Пройдемся кратко по основным.Блог команды WPF давно не обновлялся.

Так же, как и у любой другой команды, у команды WPF есть свой блог, в котором по идее должны быть описаны планы и достижения команды. К сожалению, в блоге давно нет новой информации. Это может натолкнуть на мысли, что всех разогнали или что писать не о чем. Однако, это не так и блог стал обновляться 4 месяца назад и последняя запись появилась 20 дней назад. Более того, появился генеральный план развития фреймворка, а также краткие описания новых фич доступных с последними CTP.

Официальный WPF тулкит давно не обновлялся

Официальная страница WPF Toolkit на CodePlex не обновлялась с 2010 года. А это ведь когда-то была площадка для обкатки новых компонентов, которые открыто допиливались и в случае успеха вливались в основные релизы фреймворка. Такое положение дел так же может внушать подозрения о том, что ничего нового нам ждать не приходится и останется только закупать компоненты у больших компаний или что-то делать на коленке, долго и мучительно, если это не профильное направление вашей деятельности. Но неофициальный тулкит Extended WPF Toolkit живее всех живых и последний релиз пришелся на 13 февраля 2015 года. Т.е. вот на прошлой неделе был. Этот тулкит поддерживает Xceed, но вложения идут в опенсорс проект, а значит они видят будущее за ним. Титульный баннер однозначно выражает оптимизм по этому счету.

a76fe1231f91423ebb7d91cf7d7ff362.png

Более того, обратившись к одному из крупнейших реселлеров компонентов, в разделе Best Sellers, можно видеть, что компоненты для WPF входят в топ 5 продаж среди всех продуктов.

Сертификация по WPF

В интернетах можно найти слухи и сообщения о том, что основная сертификация по WPF 70–511 заканчивается в 2015 году и не будет продлеваться. Это не является правдой, в чем вы можете убедиться лично, пройдя по ссылке.

Сертификация по WPF до сих пор в силе и активно продается, хотя служба поддержки и признает этот курс несколько устаревшим. Однако никаких сообщений о том, что данная сертификация устаревает и уходит на покой нет.

Нет интеграции с Win8+

Во время релиза WPF4, значительная часть улучшений была посвящена интеграции с Windows 7, однако этого не наблюдается с новыми операционными системами. Уже на носу Windows 10, а никаких новых фич связанных с возможностями ОС в WPF не наблюдается.

Новая стратегия Microsoft

В феврале 2014 года новым СЕО стал Сатья Надела, который пришел из «облачного» департамента, что может намекать. Сатья заменил Балмера, который как-то не стремился развиваться в сторону мобильного рынка и облачных технологий. Возможно в этом кроется причина такого резкого рывка Microsoft в сторону мобильной разработки и такого продвижения Azure. Сейчас компания движется под лозунгом «сначала облака и мобильность», что ведет к отходу от традиционной модели настольных приложений и активного использования WPF.

Windows Store

Публикация WPF приложений в Windows Store невозможна. Можно сделать приложение визитку, которое загрузит и установит полновесное приложение, но это выглядит как обходной путь. Однако Microsoft пытается сформировать некоторый условный рефлекс, как у Apple и Android пользователей, что все приложения устанавливаются только через Store. Это так же является некоторым звоночком не в пользу WPF.

Мобильный рынок

Это сумеречная зона для WPF, так как он никогда не задумывался как средство для мобильной разработки. Эту роль прочили Silverlight for Windows Phone, однако всем известна судьба этой затеи. Реалии мира же сейчас таковы, что все большее количество контента мы потребляем с помощью мобильных устройств и многие разрабатывают мобильные версии для основных программ. Если это ваш случай, то скорее всего вы будете использовать отличный от WPF стэк технологий.

Кроссплатформенность

Существование и развитие Mono позволяет говорить о некоторой кроссплатформенности .NET стека, и для большинства фреймворков есть версия под Mono. Однако только не для WPF. Хотя недавнее открытие исходных кодов и энтузиазм в этой связи настраивает на то, что WPF все же может переехать на Mono и выступать в роли провайдера пользовательского интерфейса.

Многие тревожные соображения нивелируются или же отменяются последними действиями Microsoft. И это действительно похоже на реальную активность, а не создание видимости активности. К тому же причин отменять панику и продолжать использовать WPF больше, чем негативных моментов.

Позитивные моменты для будущего WPF Активная команда WPFКоманда WPF действительно проснулась и их блог стал обновляться.

Есть потенциал для разработки

Команда WPF работает над улучшением быстродействия фреймворка и над поддержкой тач-экранов и экранов с высокой плотностью, а это ведь характеристики современных мобильных девайсов. Поддержка отладки и профилирования в новой студии. Публикация глобальных планов. Всё это внушает оптимизм. Кстати, по этому поводу можно посмотреть интервью на Channel9 о будущем WPF.

Новые инструменты

Популярный инструмент Prism, набор инструментов и лучших практик разработки на WPF,  обновился до версии 5. Далее, активно развивается неофициальный расширенный набор инструментов для WPF Extended WPF Toolkit, который обновился буквально пару дней назад. В разработке новых инструментов не уступают и флагманы типа DevExpress.

Два наиболее популярный MVVM фреймворка: MVVM Light Toolkit и Caliburn.Micro так же проявляют активность. Для первого последний чекин датируется 21 февраля 2015 года, для второго — 16 марта 2015 года. И это не единичные чекины раз в полгода, а регулярная работа.

Можно сказать что экосистема инструментария для WPF жива и эволюционирует, что особенно важно для бизнеса, потому что он не останется со своими проблемами один на один в случае чего.

Изменения в управлении

В конце 2012 года Стивен Синофски покинул пост President of the Windows Division и Microsoft вообще. Почему это хороший знак для WPF? Потому что он был известен как знатный ненавистник .NET и плохо ладил с другими командами. Возможно это и есть основная причина его отставки.

7a3f84c11fc94b8ab0f6b6cd423e59e3.jpg

Это так же частично может объяснять, наряду с техническими причинами, почему .Net не был использован как основной технологический стек для новый операционных систем Windows, тогда как по факту это один из лучших продуктов Microsoft. Снаружи конечно же сложно оценить верность слухов и сплетен вокруг Стивена и его влияния на то, как получились системы Windows 8 и старше.

Инертность рынка ОС

Инертность рынка ОС и добро и благо. Сейчас для WPF это хорошо, потому что бизнес и частные пользователи не переходят мгновенно на новые версии ОС, по целому ряду веских причин: это стоит денег, это отнимает время, это всегда риск, и часто это просто бесполезно.

Для компаний миграция на новую ОС это всегда головная боль и проблемы. Необходимо убедиться в совместимости всех сервисов, всех своих наработок. Убедиться что вендоры могут предоставить соответствующих экспертов и поддержку, подготовить свой персонал. Вообще переход на новую ОС может составлять 2 года и более. На этом фоне выглядит несколько странным и интригующим заявление о том, что каждые 2 года Microsoft будет выпускать новые версии своих продуктов, включая ОС. За примером далеко ходить не надо, многие компании не переходят с семерки на 8 и 8.1 ожидая, вполне закономерно как дела будут с новой версией и не стоит ли перейти сразу на нее.

На текущий момент распределение ОС от Microsoft выглядит примерно так:

Windows 8 + 8.1: ~15% Windows 7: ~55% Windows Vista: ~5% Windows XP: ~25% Т.е. более чем на 80% машин не доступны функции WinRT и остается только одна опция — WPF. Принимая во внимание, что цикл обновления ОС и приложений составляет около 5 лет, сейчас WPF является единственным выбором, если вы решаете сделать приложение не за выходные и на ближайшие полгода.Инертность ALM

Не многие знают, что написать программу стоит немалых денег. Сначала в серии встреч со всеми заинтересованными сторонами, надо оценить, какое влияние имеет ПО на текущие процессы в общем бизнес-процессе. Надо найти ключевых пользователей и убедить их, что требуется обновление ПО. Затем новое ПО надо разработать, при этом старое должно работать как ни в чем не бывало. Новое приложение должно работать бок о бок со старым, чтобы можно было сравнить результаты и понять, что ничего не упущено и все работает как минимум на том же уровне, не хуже. Так же вовлекаются ребята их DB отделов, чтобы поработать с бэкапами, инженеры сети, чтобы настроить новые правила для файрволов и так далее.

И это только малая часть всего процесса, но и его хватает, чтобы понять, что приложений на только что появившихся технологиях еще долго не будет. Поддержка WPF со стороны бизнеса будет сильна, потому что это уже стабильная технология для которой есть специалисты и на этом можно строить свои процессы. Кстати, до сих пор порой требуются спецы по Delphi5 или Fortran для поддержки приложений и они стоят сейчас очень дорого. Хотя в целом так далеко ходить не надо, до сих пор актуальны огромное количество приложений написанных с использованием WinForms, так что списывать со счетов WPF было бы слишком преждевременно.

WPF зрелая технология

Для многих разработчиков очевидно, что первая версия приложения отнимает наибольшее количество времени и сил. В таком ключе можно рассматривать выпуск WPF 3.0 и WPF 3.5. После победы над детскими болячками, приложения на WPF 4 уже стали «полными», разработчики стали уделять внимание быстродействию, что намекает на стабильность основной технологической базы. Наконец в версии 4.5 разработчики добавили еще украшательств и еще больше повысили производительность.

Чем более зрелая технология, тем меньше трудозатрат она требует. Таким образом после 8 лет разработки, поддержка WPF почти не требуется, что показывает зрелость. Но, как уже я писал выше, разработчики решили не забросили его, а решили оживить фреймворк в соответсвии с духом времени.

Line of Business (LOB) Application

Локальные бизнес приложения это та область в которой WPF не только выживет, но в которой доминирует и будет показывать себя лучшим образом. Почему?

Во-первых, потому что накоплен огромный опыт в разработке приложений на WPF и их развертывании в системе. Потому что это .Net платформа, которая сама по себе уже зрелый продукт. Если компании имеют достаточно приложений на .net, то нет никаких причин останавливаться и переходить на другой стек. Гораздо легче использовать существующих программистов для покрытия всех бизнес-потребностей. К тому же интеграция приложений на одной платформе будет существенно легче.

Еще одной причиной, почему WinRT пока не может прийти на смену WPF — это то, что нет такого же инструментария. Например, таких вещей как ORM в духе NHibernate или EntityFramework, которые необходимы любому in-house приложению.

Безопасность, для многих является краеугольным камнем, например в финансовых приложениях. Поэтому использование WinRT может быть не только не нужно, но и не желательно.

Интеграция с WinForms

За более чем 10 лет компании создали огромное количество приложений на WinForms и переделать их в один момент по другие технологии не представляется возможным. Огроным плюсом в этом случае является взаимная между WinForms и WPF возможность использовать компоненты друг друга и внедрять друг в друга. Таким образом миграция с одной технологии на другую может проходить постепенно и относительно безболезненно.

c41df33911074bf4b73ba648ea8d1baf.gif

Насколько я знаю, пока что WinRT никак не может внедряться в WinForms компоненты, формы.

Как вы можете видеть, положительных моментов намного больше и именно это внушает нам оптимизм, что WPF не будет забыт и еще долгое время будет востребован для интересных задач. WPF не умирает и на уходит в закат. Сейчас он находится в зените своего развития и это именно поэтому мы хотим сделать конференцию по тому, как лучше создавать бизнес-приложения с использованием WPF и лучших практик по организации энтерпрайз интерфейсов пользователя.

b4e6deaa5b4d4398860ecc58e5bfc2b5.png

Если вы так же вовлечены в разработку с использованием WPF, создаете сложные интерфейсы, работаете со сложным бизнес-доменом, вас интересуют вопросы, связанные лучшими практиками и тенденциями в десктоп приложениях, и вы хотите найти коллег и единомышленников, чтобы поделиться своим мнением по поводу всего вышесказанного — добро пожаловать на конференцию. Нам есть, о чем рассказать друг другу!

Если более конкретно, то мы обсудим темы:

История пользовательских интерфейсов и как сделать UI\UX удобным для корпоративного пользователя. Через окна в облака. Не создавайте медлительных зомби-приложений. Используйте Rx! На реальном примере. А также что вы недооценили в TPL? EF-ом ли единым живы большие приложения? Прототипирование приложений Как написать толковые UT на пользовательский интерфейс. Реальный опыт разработки. Холивар на тему полного и анемичного домена И другие захватывающие истории!  Регистрируйтесь! До 23 марта действует специальная цена.

© Habrahabr.ru