Windows Vista и Avalon

Решил тут отвлечься немного от написания Perl’овых скриптов. Я вешаюсь тут от разгребания того кода, что мне достался от предыдущих разработчиков проекта. Так писать еще надо умудриться… жуть. Ну, да ладно. Сча не об этом.

Отвлекался я читая книгу Professional WinFX Beta. Jean-Luc David, Bill Ryan, Ron DeSerranno и Alexandra Young не плохо потрудились. За полтора часа освоил — хоть и чисто теоретически — весь этот сыр-бор, которому Microsoft сначала дала имя Avalon, а затем переименовала в Windows Presentation Framework. По сути получается, что если прийдется писать какое-нть приложение в будущем на основе WinFX, то прийдется столкнуться как минимум с двумя следующими товарищами — Avalon’ом и XAML.

Люди, которые когда-либо сталкивались с Glide’ом или Macromedia Flash, найдут огромное сходство между этой парой и парой в составе XAML и Avalon’а. Как показывает практика (да и история тоже), Microsoft ничего нового не придумывает, но… Кажется, последнее время у них более менее получается аккуратно интегрировать все изобретенные другими людьми «колеса» в движимую «телегу». ;)

XAML — eXtendable Application Markup Language — основанный на XML язык, который используется в WinFX для описания графического интерфейса. Это декларативный язык. Т.е. позволяющий вам задавать объекты и их свойства. Например, кнопка с таким-то цветом фона расположенная там-то и там-то с такими-то минимальными полями вокруг себя и т.п. Список стандартных объектов, присутствующих в WinFX, неплох. Тут вам и кнопки, списки, всякие текстовые редакторы, изображения, контейнерные панели для расположения объектов и т.п.

Помимо всего прочего, в XAML включили еще и кучу графических примитивов, во многом схожих с теми, что можно встретить в SVG (дело Adobe живет и процветает ;).

Также интерфейсы могут меняться во времени или в зависимости от свойств других объектов. Для этого в XAML включили TimeLine’ы и прочие сценические примитивы. Последнее жутко напоминает какой-нть Flash-ролик… только в виде XML. ;)

Не обошлось и без поддержки стилей. Т.е. во всем этом графическом интерфейсе, описанном XAML’ом, можно быстро, используя опять же XAML, изменить внешний вид объектов a-la наложить CSS на дерево XHTML. Там есть все: и селекторы по типу объекта, и селекторы по имени класса, и селекторы по “наведению мышки” (вспомним A:hover в CSS) и т.п. ;)

Понятно дело, что все это просто так не будет рисоваться, прыгать, вертеться и т.п. Для этого и есть Avalon. Роль он выполняет примерно такую же, как Macromedia Flash Player для .swf файлов. С той лишь разницей, что проигрывает пользовательские интерфейсы.

Т.е. для разработки добротной десктопной проги под WinFX (а оно у нас будет в недалеком будущем в Windows Vista) нужно в простом приближении сделать следующее: нарисовать XAML интерфейс, используя один из существующих редакторов, подцепить его в C# прогу (или VB.NET или чего угодно, что работает с .NET платформой, и запустить это все через Avalon. Второе и третье происходят, можно считать, автоматом. Второе — при создании проекта в Visual Studio .NET 2005, а третье — при запуске приложения. Самое сложное получается будет описать саму логику программы, которая в процессе работы будет просто менять XAML дерево. Вот и все. Вот такие тапочки.

Забавно то, что при таком раскладе над видом пользовательского интерфейса и логикой программы могут работать разные команды народа с наименьшими напрягами между собой. Для их удобства Microsoft разделила внешний вид и логику. Идея не новая, но, afaik, первый раз получившая жизнь в разработке софта для Windows. А учитывая богатые возможности Avalon’а касательно рендеринга, можно думать, из этого что-нть хорошее да выйдет.

Выводы: жду релиза Windows Vista, затариваюсь книгами по C# и .NET и… там что-нть придумаем. Ибо мне это интересно. ;)

[del.icio.us] [Digg] [Facebook] [Google] [Kaboodle] [MySpace] [Slashdot] [StumbleUpon] [Technorati] [Yahoo!] [Email]
Bookmark the permalink. Follow any comments here with the RSS feed for this post. Post a comment or leave a trackback: Trackback URL.

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*