Впервые информация об Atlas стала доступна широкой общественности на PDC 2005. И буквально с того же момента возник вопрос, который до сих пор остается без ответа, – является ли Atlas очередной реализацией идей Ajax, но только от Microsoft, или это конкурирующая технология, призванная заменить Ajax? Как выяснится далее, обе точки зрения имеют право на жизнь.
Не секрет, что Ajax базируется на хорошо известных технологиях. Но хотя Internet Explorer был первым браузером, полностью их поддерживающим, Microsoft, увы, не поспешила взять на вооружение новую концепцию. Главным апологетом Ajax оказалась Google, удивившая мир целой серией проектов с нехарактерной для Web-решений интерактивностью, таких как GMail, Google Maps, Google Suggest, а теперь и Google Spreadsheets.
Однако в том, что Microsoft не вошла в число первопроходцев Ajax, нет ничего удивительного. C большой долей уверенности можно говорить, что причиной тому стала необходимость следовать собственной стратегии – корпорация направляет значительные усилия на развитие и продвижение технологии ASP.NET, основные принципы которой в определенном смысле противоречат Ajax.
Действительно, важным козырем ASP.NET является возможность создания Web-приложений с применением современных языков программирования и платформы .NET, при этом максимальная нагрузка, в том числе и по формированию интерфейса пользователя, ложится на серверную часть, что позволяет упростить разработку и сделать решение в значительной степени независимым от браузера. Такой подход эффективен, когда с Web-приложением работают в среде с высокой пропускной способностью каналов связи и при этом имеют большое значение надежность решения и низкая совокупная стоимость владения. Подобное сочетание требований характерно для корпоративных проектов, эксплуатируемых в интранет, и в этом случае основные идеи ASP.NET себя вполне оправдывают.
Однако когда речь идет о продуктах, ориентированных на конечных пользователей и предназначенных для Интернета, все не так просто – часто реактивность интерфейса и дополнительные удобства становятся главными критериями, влияющими на выбор. Не удивительно, что Ajax сегодня набирает обороты и, в некотором смысле, даже становится модным.
Тем не менее его классическую реализацию вряд ли можно рассматривать как панацею, интерактивность и высокая реактивность пользовательского интерфейса даются достаточно дорогой ценой, причем в самом прямом смысле – стоимость разработки и сопровождения Ajax-приложений существенно выше по сравнению с традиционными тонкими клиентами, не рассматривающими браузер как платформу для своего исполнения (достаточно вспомнить, сколько времени GMail находится в стадии бета-тестирования).
Но, в конце концов, ничто не мешает совместить преимущества обоих подходов: получить реактивный интерфейс и в то же время сохранить простоту разработки. Похоже, именно это и было основной задачей, поставленной перед создателями Atlas.
Содержание
Архитектура Atlas
Atlas состоит из клиентской и серверной частей, каждая из которых, в свою очередь, подразделяется на несколько уровней.
Клиентскую часть составляют:
- уровень совместимости, обеспечивающий поддержку различных браузеров (на текущий момент в их число входят Internet Explorer, Firefox и Safari, вероятно, в ближайшее время к ним добавится Opera). Он призван избавить разработчика от необходимости адаптировать код создаваемых Web-приложений под каждую конкретную программу;
- базовые службы, которые должны сделать программирование на JavaScript максимально похожим на полноценное ООП;
- базовая библиотека классов, включающая средства для работы со строками, широкие возможности отладки и т. п. (многие классы реализованы по примеру структуры .NET Framework);
- сетевой уровень, обеспечивающий коммуникации с Web-службами в асинхронном режиме посредством вызова XMLHTTPRequest;
- уровень пользовательского интерфейса. Здесь реализованы декларативный синтаксис и связь с источниками данных;
- уровень специальных Atlas-ориентированных элементов управления, упрощающих построение пользовательского интерфейса.
Серверную часть формируют:
- уровень серверных элементов управления. В частности, здесь реализуется ScriptManager, отвечающий за отправку клиенту программного кода и преобразование декларативной XML-разметки;
- шлюз, обеспечивающий взаимодействие Atlas-решения с Web-службами;
- шлюз для доступа к ключевым службам ASP.NET.
Клиентская часть полностью реализована на JavaScript и загружается при исполнении браузером, серверная имеет вид сборки .NET 2.0. Несмотря на то что вместе они формируют единую среду, клиентская часть не привязана жестко к серверной, т. е. может использоваться относительно самостоятельно (без ASP.NET и IIS).
Простейшее Atlas-приложение
Прежде чем приступить к созданию Web-приложений с помощью Atlas, необходимо загрузить и установить последнюю версию этой среды для Visual Studio 2005. Дальнейший процесс разработки происходит по той же схеме, что и для обычных ASP.NET-проектов, – нужно только выбрать соответствующий шаблон. Основные же отличия следующие:
- добавится ссылка на сборку Microsoft.Web.Atlas.dll, которая помещается в папку Bin-проекта;
- создастся файл Web.config со специальными разделами для настройки параметров Atlas.
![]() |
Листинг 1. Код Web-службы, возвращающей строку с текущим временем и датой |
![]() |
Листинг 2. Элемент секции <head> .aspx-файла |
![]() |
Листинг 3. Секция <body> .aspx-страницы |
![]() |
Листинг 4. Код JavaScript-функций |
Для примера сконструируем интерактивную страницу, способную выводить текущие дату и время. В качестве источника данных выступит простая Web-служба, которая содержит всего один метод (Листинг 1).
Начнем с организации поддержки Atlas в ASP.NET-странице, для чего в секции <head> стандартного .aspx-файла необходимо вставить код, отвечающий за подключение ключевого элемента среды – ScriptManager. Здесь же нужно указать ссылку на нашу Web-службу (Листинг 2).
Затем оформим тело страницы, указав секцию Results для вывода результатов (Листинг 3). Добавим JavaScript-код функции DoHello, отвечающей за асинхронный вызов метода Web-службы, и OnRequestComplete, размещающей результат в положенном месте (Листинг 4).
Работа готового приложения происходит достаточно стандартным для Ajax образом, но даже такой простой пример хорошо иллюстрирует и основные особенности Atlas: серверной частью Web-приложения может быть обычное ASP.NET-решение, например Web-служба, а вызов XMLHTTPRequest осуществляется самой средой Atlas.
Расширения JavaScript
Об ограничениях JavaScript известно давно. На самом деле ни один программист, ценящий свое время, не станет рассматривать этот язык в качестве основного инструмента для создания серьезного Web-приложения. Пожалуй, наиболее существенной причиной тому является слишком ограниченная поддержка ООП.
Microsoft могла бы пойти своим излюбленным путем и реализовать в Internet Explorer новую версию JavaScript, устраняющую наиболее серьезные проблемы, и, естественно, несовместимую с прочими браузерами. Однако постоянные антимонопольные разбирательства и динамика на рынке браузеров делают подобный шаг сегодня излишне рискованным, поэтому в корпорации поступили иначе. Расширенные возможности этого языка содержатся в Atlas, значит, они доступны и во всех поддерживаемых браузерах.
В текущей версии прежде всего были усовершенствованы средства ООП, в частности, появились пространства имен, позволяющие группировать сходную функциональность, интерфейсы, расширены возможности наследования. Также вместе с Atlas поставляется библиотека классов, призванная упростить разработку на JavaScript.
Трансформация ASP.NET-приложений
Однако достоинства Atlas становятся особо заметны, когда речь идет о преобразовании существующих ASP.NET-приложений или создании новых – в соответствии с принципами Ajax.
Наиболее интересен в данном контексте элемент управления UpdatePanel. Он позволяет задать на странице области, которые могут обновляться независимо от остального наполнения. Попросту говоря, с его помощью достаточно «обернуть» нужные части страницы, а всю работу по реализации механизма обновления среда Atlas полностью берет на себя. Перерисовку можно осуществлять полностью программно либо с помощью триггера, срабатывающего при определенных событиях, например, при выборе пользователем значения из выпадающего списка.
Подобный сценарий применения Atlas будет наиболее интересен ASP.NET-разработчикам, поскольку он вообще избавляет их от необходимости работать с JavaScript, а преобразование страницы может занять не более пяти минут, включая и время тестирования.
Кроме того, даже стандартные элементы управления ASP.NET становятся более интерактивными благодаря специальным «расширителям» (extenders) – например, с их помощью для поля ввода можно организовать автозаполнение.
Для поддержания визуальной обратной связи с пользователем во время обновления данных Atlas предлагает элемент управления UpdateProgress. Также существует возможность задать callback-функции, которые будут вызваны в случае превышения времени ожидания при асинхронном вызове Web-службы.
Atlas-приложения могут работать и со сложной инфраструктурой сайтов или взаимодействующих между собой Web-сервисов (что характерно для концепции Web 2.0). С этой целью в Atlas поддерживается специальный механизм мостов (bridge), с помощью которых можно получать данные от удаленных Web-служб и представлять их в контексте одного первичного сайта, просматриваемого пользователем. Для этого, кстати, не обязательно наличие административных полномочий, что актуально в обычных условиях, применяемых хостинговыми компаниями.
С помощью Atlas реализуется и поддержка пользовательских профилей – к примеру, персонализированная страница, настроенная в одном браузере, будет так же выглядеть и в другом.
Декларативная разметка
Другая интересная возможность, предоставляемая Atlas, – это поддержка декларативной разметки, посредством которой можно реализовать ту же функциональность, что и с помощью JavaScript.
![]() |
Листинг 5. Пример декларативной разметки |
Блок декларативной разметки начинается со стандартного тега <script>, но с указанием для атрибута type значения «text/xml-script». Далее идут специальные теги и атрибуты, с помощью которых задается реакция на события, последовательность исполнения действий, передаваемые параметры и пр. К примеру, Листинг 5 представляет ту же функциональность, что и реализованная на JavaScript в Листинге 4.
На первый взгляд декларативная разметка может показаться более громоздкой, чем код сценария, который она заменяет. Однако это впечатление обманчиво – для таких рутинных операций как обработка событий, передача данных и вызов методов Web-служб ее применение будет гораздо прозрачнее. Но главное преимущество состоит в том, что ее достаточно просто генерировать и поддерживать программными средствами – разработчик в этом случае может обойтись исключительно визуальными конструкторами, не прибегая к написанию кода вообще.
Atlas Control Toolkit
![]() |
Элементы управления из Atlas Control Toolkit позволяют с минимальными усилиями значительно повысить интерактивность интерфейса Web-приложений |
Наряду с самой платформой Atlas Microsoft работает также над набором элементов управления – Atlas Control Toolkit (atlas.asp.net/atlastoolkit). Занимается этим специальная команда – Agility Team – некое спецподразделение, главная задача которого состоит в полевых испытаниях новейших технологий корпорации.
Atlas Control Toolkit содержит много интересных элементов управления, открывающих доступ ко всем преимуществам Ajax-подхода при построении пользовательского интерфейса. Все они поставляются в полностью готовом виде, что избавляет от необходимости погружаться в детали реализации тех или иных механизмов.
Atlas – это не только ASP.NET и IIS
В том, что Atlas поддерживает различные браузеры, нет ничего удивительного, поскольку сегодня Microsoft обязана считаться с пользователями альтернативных программ. Однако настоящей сенсацией стало известие о том, что в качестве серверной платформы для Atlas может использоваться не только ASP.NET, и даже не обязательно IIS.
Невероятно, но факт: Microsoft обещает поддержку других Web-серверов (это достигается благодаря независимости клиентской и серверной составляющих Atlas). Наверняка для связки IIS/ASP.NET будет предоставлено больше возможностей, но все же вариант применения Atlas с Apache и PHP выглядит достаточно интересным.
Трудно сказать, оценят ли такой шаг сторонники альтернативных платформ, однако сам по себе он заслуживает, как минимум, уважения.
Заключение
Возвращаясь к вопросу о том, что же представляет собой Atlas, можно утверждать, что эта среда унаследовала от Ajax базовые технологии, а от ASP.NET – идеологию разработки. Таким образом, налицо некоторая двойственность. С одной стороны, это, несомненно, очередная реализация концепции Ajax, но с другой – альтернатива традиционным Ajax-решениям, поскольку Atlas призван в максимальной степени сохранить принципы и достоинства ASP.NET. Более того, как мы выяснили, с помощью Atlas можно создавать полноценные Ajax-приложения, вообще не прибегая к помощи JavaScript.
Не вызывает сомнения, что Atlas завоюет популярность среди разработчиков, использующих технологии Microsoft. Сегодня среда еще находится в стадии бета-тестирования, но уже можно посетить сайты, которые ее используют: Windows Live, конструктор персонализированных домашних страниц PageFlakes, онлайновый почтовый клиент и RSS-агрегатор Squeet, сервис для отслеживания продаж и популярности книг TitleZ, развлекательный ресурс YTV. Но гораздо более интересно оценить дальнейшие перспективы Atlas, как самодостаточной технологии.
Учитывая, насколько органично удалось разработчикам Microsoft вписать Atlas в существующую идеологию ASP.NET, можно утверждать, что Atlas станет стандартной составляющей последующих версий ASP.NET. Однако для самой Microsoft Atlas является, скорее, переходным этапом на пути к куда более впечатляющей Windows Presentation Foundation/Everywhere (WPF/E) – независимой от платформы среде представления информации и построения пользовательского интерфейса.
e-mail автора: [email protected]
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: