XAML в одночасье стал одной из самых «горячих» частей программной модели, которую предложит Microsoft с выходом Vista. Если коротко, то XAML — это базирующийся на XML-синтаксисе скриптовый язык для создания интерфейсов как для desktop-приложений, так и для веб-сервисов. Что заставляет нас ждать XAML? Компания Microsoft, что бы о ней ни говорили, всегда отличалась своим умением создавать новые технологии на основе уже существующих, оставляя все преимущества и добавляя новый функционал. Отличный пример — Microsoft .NET Framework.
XML был разработан в основном для хранения данных. Специалисты же из Microsoft серьезно расширили область применения и возможности XML, превратив его в XAML — язык программирования для .NET. То есть в ближайшее время мы, если работаем на этой платформе, уже будем активно использовать новую технологию в повседневных проектах. Из явных преимуществ XAML помимо простоты в понимании и использовании можно также упомянуть возможность использования любого из представленных в семействе .NET языков программирования в качестве CodeBehind. Главная прелесть XAML состоит в том, что с его помощью мы не просто описываем элементы пользовательского интерфейса, их размеры и цвет, расположение, но и управляем событиями и методами.
Кроме того, не стоит забывать и о преемственности: каждый современный веб-специалист знаком с XML, поэтому трудностей с изучением XAML у него возникнуть не должно. Итак, я обрисовал ситуацию вокруг новой технологии от Microsoft вкратце, а теперь перейдем к более детальному обсуждению.
Что такое XAML
Определение я дал чуть выше, поэтому начнем сразу с конкретики. Первое, что следует запомнить, — декларативность. XAML — декларативный язык. Второе — это тот факт, что основным и фактически единственным применением новой технологии является разработка пользовательского интерфейса, но, с другой стороны, достаточно глубокая и, я бы сказал, продвинутая. Если говорить о структуре XAML, то код состоит из тегов, хранится в отдельных файлах с расширением .xaml — этот подход похож на уже применяющийся в модели Windows Forms.
XAML — декларативный XML-язык для описания пользовательского интерфейсаТеперь короткий пример.
<?xml version="1.0" standalone="yes"?>
<Window>
<Button>Hello, Hostinfo</Button>
</Window>
Думаю, что ни у кого их читателей настоящего материала не возникло проблем с расшифровкой примера. В нем дано базовое описание обычного окна с одной-единственной кнопкой. Аналогичные теги в XAML есть для всех необходимых контролов. Более того, у разработчиков есть возможность включать код C# или VB.NET прямо в файлы XAML.
Почему именно XAML? Ответ прост. Как я уже говорил, XML был создан исключительно для хранения и эффективного обмена данными и не имел функционала для полноценного программирования — не тот формат. XAML расширяет возможности тегового подхода, добавляя необходимый функционал для разработки полноценных приложений, которые могут одинаково работать в вариантах desktop и веб. Иными словами, по мнению многих экспертов главная цель XAML — свести воедино два мира программирования: Windows и Web.
Рассказывая об этой технологии, невозможно не упомянуть Windows Presentation Foundation (WPF, бывший Avalon). WPF является новой API в .NET Framework 3.0 (бывшие WinFX). С помощью WPX разработчики могут работать напрямую из любого языка семейства, могут описывать элементы пользовательского интерфейса в XAML, могут комбинировать эти две техники. Возможностей у WPF очень много: от стандартных объектов Windows (кнопки, поля ввода и т. д.) до 3D-графики, специальных эффектов и элементов мультимедиа.
Однако не стоит думать, что раз XAML имеет неразрывную связь с WPF, то работать с ним можно будет лишь на платформе Windows. Уже существует инициатива WPF/E (Windows Presentation Foundation/Everywhere), которая, скорее всего, портирует XAML на другие платформы достаточно быстро. Кроме того, слишком часто встречаются высказывания, в которых функционал XAML и WPF по ошибке или нарочно перемешивается. В связи с этим следует помнить, что хоть они и идут рука об руку, но все же XAML — это язык на базе XML-разметки, а WPF — графическая API.
Синтаксис XAML с виду привычен, факт. Он описывает объекты, их свойства и способы взаимодействия в рамках приложения. Свойства могут обозначаться в качестве атрибутов тега или с помощью period notation, когда child тега описывает его свойство. Обе методики показаны в примере.
<object>
<child property="x" property="y">
<child.property>
<class property="u" property="v"/>
</child.property>
</child>
</object>
Общее описание XAML я закончу еще двумя очень важными моментами. Во-первых, не следует даже сравнивать XAML с SVG, как это стало модным в последнее время. Эти две технологии разные, и созданы они для разных целей. Если SVG — это стандарт исключительно для работы с двухмерной векторной графикой, состоящий из XML-разметки и API для управления, то XAML имеет 3D-функционал и не является API.
Второй момент — это последствия внедрения новой технологии. Фактически XAML позволяет отделять дизайнерскую работу от программистской, что существенно повышает эффективность обеих. Иными словами, теперь нет никакой необходимости в очень плотном контакте между дизайнерами пользовательского интерфейса, качество и проработка которого в последнее время играют все большую роль, и непосредственно разработчиками.
Web 2.0 + .NET 3.0
Интересную комбинацию я поставил в подзаголовок, верно? Веб-приложения второго поколения на данный момент являются основным трендом, поэтому каждый разработчик спит и видит, как бы усовершенствовать уже существующий инструментарий и получить что-то новое. Одно из преимуществ современных AJAX-приложений — это полноценный пользовательский интерфейс, который постепенно приближается к desktop-приложениям. Первый шаг в этом направлении Microsoft сделала, выпустив AJAX framework под названием Atlas. Следующий шаг — XAML и .NET 3.0.
К релизу Windows Vista и всего сопутствующего запланирован и релиз продуктов из линейки Microsoft Expression. Скажем и о них пару слов.
- Microsoft Expression Graphic Designer. Этот графический пакет нам интересен лишь в плане общего контекста. К разработке он имеет весьма опосредованное отношение: Expression Graphic Designer — это просто средство для работы с изображениями, комбинирующее работу с вектором и растром. Перспектива неплохая, но детально говорить о ней не будем.
- Microsoft Expression Interactive Designer. Тут дела обстоят уже чуть интереснее: упомянутый продукт поможет разработчикам создавать интерфейсы для desktop-приложений, работающих на базе WPF. Однако это снова не Веб, поэтому движемся дальше.
- Microsoft Expression Web Designer. А вот этот пакет — как раз то, о чем стоит рассказать подробнее. Это полноценное средство для разработки веб-приложений, ориентированное в первую очередь на дизайн. Однако на официальном сайте XAML не упоминается, но многие аналитики предсказывают, что этот функционал все же там будет в том или ином виде.
WPF — это API в .NET 3.0
Пример приложения на XAML |
В любом случае, Expression Web Designer и Expression Interactive Designer с самого начала направлены в сторону Rich Internet Applications (RIAs), что не может не радовать. Тут, кстати, можно упомянуть и основных конкурентов Microsoft: компанию Adobe с недавно вышедшей второй версией Flex (применение этой технологии кажется более узким), Laszlo Systems с бесплатным продуктом Openlaszlo, который также позволяет разрабатывать RIAs как для платформы Flash, так и с использованием DHTML. Думаю, в ближайшие пару лет мы станем свидетелями очень любопытных событий, которые вполне могут изменить лицо современного Веба еще раз.
Web 3D
Последнее, о чем хотелось бы рассказать в статье, — это заложенный в WPF 3D-функционал, который, ко всему прочему, будет доступен из XAML. Правда, мы не можем говорить точно, станет ли Интернет трехмерным, пока не будет наработан какой-то опыт или пока не получим финальные версии технологий в свои руки для экспериментов. Но поразмышлять все-таки можно.
.NET 3.0 может сделать Интернет трехмерным3D-графика уже давно стала стандартом визуализации во многих сферах (наука, медицина, промышленность и т. д.), но все попытки сделать Веб объемным до сих пор так и не принесли существенных результатов. Правда, есть X3D, но эта технология — тема для отдельного материала. Но поможет ли .NET 3.0 со всеми его новшествами добиться результата и на этом поприще? Известный эксперт по веб-технологиям Рон Де Серанно (Ron DeSeranno) считает, что да.
Схема обработки XAML |
В одной из своих статей он рассказывает о том, как к нему на курсы по .NET 3.0 пришла женщина-разработчик и показала веб-приложение, которое находилось у нее в работе. Это была RIA для местного книжного магазина. Женщина открыла веб-браузер, набрала URL, и приложение загрузилось. Пользователь мог не просто посмотреть изображение магазина, но и перемещаться по нему в полностью трехмерном пространстве и даже брать книги с полок, причем качество картинки было очень приличным, со слов Рона Де Серанно.
Если рассмотреть эту историю в ракурсе современных технических средств, то трехмерный Интернет не выглядит такой уж далекой фантазией. Сегодня чувствуется скорее недостаток инструментов, чем возможностей для их потенциального применения. И Microsoft делает многое для того, чтобы их становилось больше. С другой стороны, корпорация Билла Гейтса снова предпринимает попытку заставить рынок и общественность играть по своим правилам. Что из этого получится, скоро увидим.
Если же оценивать непосредственно XAML, то технология представляется более чем удобной и перспективной. Если все будет так, как обещано, то будет совершен еще один шаг по преодолению барьера между desktop- и веб-приложениями, а это, согласитесь, существенно. В любом случае, загадывать рано, поэтому придется еще чуть-чуть подождать.
Статья получена: hostinfo.ru