ТЕХНОЛОГИИ
Широкий выбор технологий делает возможным создание самых разных, гибких, быстрых и компактных приложений. В зависимости от задачи, сроков и бюджета, целесообразно применять то или иное сочетание технологий.
Что касается веб-приложений, выбор технологий разработки в последнее время расширился, появилось много фреймворков, которые успели себя хорошо зарекомендовать.
Среди javascript фрейворков, я бы выделил 2 :
Оба ориентированы на удовлетворение потребностей при работе с элементами веб-страницы. Оба поставляют мощный функционал для упрощения и ускорения реализации требуемого поведения веб-страницы, добавления в нее уже реализованных компонентов, таких, например, как таблицы с возможностью редактирования значений ячеек и.т.д.
Что касается платформы для разработки приложений, я считаю наиболее богатой по возможностям ASP.NET, однако, ее использование требует значительных денежных вложений. Такими вкусностями, как AJAX, сегодня не удивишь. ASP.NET предоставляет средства для простого и быстрого создания таких приложений, не требующего глубокого вникания в реализацию. Также просто на ASP.NET могут перейти программисты настольных приложений, так как разработка приложений на Web Forms и Win Forms похожи.
Рассмотрим подробнее JQuery
HTML была одной из первых вещей, которую Джон Резиг освоил когда он только начал заниматься программированием. Резиг программировал на QBasic, когда один его знакомый показал ему, как создать веб-страницу (используя Angelfire), а также основы HTML. Отец подарил ему на Рождество две книги по HTML. Именно тогда, когда он только начал программировать на Visual Basic, HTML и веб-дизайн очень заинтересовали его.
Но страсть к JavaScript пришла значительно позже, примерно в 2004 году. Тогда Резиг получал степень в области компьютерных наук и работал на полставки в местной фирме Brand Logic. Он занимался дизайном сайта, в котором создавался пользовательский скроллинг. Джон был разочарован и расстроен, особенно потому, что использовал код других разработчиков, после чего решил серьезно изучить JavaScript. Изучив, пришел к выводам, что JavaScript — это простой, но изящный язык, который является невероятно мощным решением многих задач. В течение ближайших пары лет Д. Резиг создал множество различных JavaScript приложений, прежде чем закончить создание jQuery. Библиотека была представлена общественности на компьютерной конференции «BarCamp» в Нью-Йорке в 2006 году.
Основной целью создания jQuery Резиг видел возможность закодировать многоразовые куски кода, которые позволят упростить JavaScript и использовать их так, чтобы не беспокоиться о кросс-браузерных вопросах. Ночь в начале 2006 года Резиг запомнил на всю жизнь как счастливую: он закончил работу над jQuery и запустил его в Internet Explorer — все заработало. Это был успех!
Возможности
- Переход по дереву DOM, включая поддержку XPath как плагина;
- события;
- визуальные эффекты;
- AJAX-дополнения;
- JavaScript-плагины.
Рассмотрим ExtJS
Так как фреймворк ExtJS уже давно стал нашим основным и любимым инструментом, то мы очень ожидаем предстоящих анонсов на первой конференции для разработчиков и пользователей ExtJS. Пока же «екстовцы» порадовали нас, выпустив уже давно обещанный продукт, да еще и под отличной лицензией (для тех, кому это действительно было важно). И так, мы дождались Ext Core 3.0, видимо, первой ласточки из серии релизов третьей линейки, которую очень ожидаем (в первую очередь, это, конечно, релиз новой версии полного фреймворка, в частности, новые визуальные компоненты). Давайте поближе посмотрим на Ext Core 3.0.
И так, Ext Core — это попытка войти в мир простых веб-сайтов и разработок, где требуется некоторый минимум AJAX-инструментов, и где до этого времени работали такие средства как jQuery или Dojo. Если раньше разработка с использованием ExtJS требовала подключения всей библиотеки (ну или своей кастомной сборки), что для простых проектов, где использовалось всего пару процентов возможностей, было неприемлемо, теперь у нас есть полностью готовое ядро, имеющее идентичный с основной библиотекой API и возможности, достаточные для реализации множества необходимых функций. Да-да, возможно вы заметите сходство с основной библиотекой, которая также делится на ext-core, ext-adapter и основной файл. В данном случае мы имеем нечто среднее, объединение функционала из адаптеров (используете только собственный адаптер, который ext-base, использовать сторонние адаптеры в Ext Core нельзя) и базовых возможностей библиотеки, при этом все объединено в один файл, не требуя даже стилей, которых нет, так как нет возможности работать с виджетами и интерфейсными элементами. Да, Ext Core убирает из доступного нам богатства возможностей уникальную и лучшую, по моему мнению, систему визуальных компонент, оставляя только основные функции и методы, на основе которых мы можем строить все, что угодно.
Кстати, если присмотреться, в каталоге src есть полный набор компонентов, из которых состоит Core, что очень удобно для исследования его внутренностей. Хотя, если вы работали с обычным ExtJS Framework, то ничего нового для вас не будет, можете подключать библиотеку к проекту и сразу браться за работу. Лицензия MIT, под которой распространяется проект, позволяет, в отличие от GPL, который используется в ExtJS, использовать код в собственных закрытых и коммерческих проектах без необходимости открывать исходные коды. Так что, если вам в реальности не надо все возможности ExtJS, но, допустим, в будущем все же планируются, то можно использовать его уже здесь и сейчас, мне кажется, что добавить поддержку остальных компонент в проект, уже использующий Core-версию, не будет никаких сложностей (но надо поэксперементировать, чем я и займусь на днях).
Размер кода также оставляет приятные впечатления — без архивирования Core занимает всего 76 Кб, что, по моему, даже лучше, чем у jQuery, дебаг версия конечно, больше, целых 180 Кб, однако заявляется, что при использовании gzip сжатия размер сокращается до 25 Кб, что сравнимо с лучшими показателями современных библиотек аналогичного функционала.
Что же включено в Core библиотеку?
Все возможности по работе с элементами страницы — манипуляция с DOM, CSS, унифицированная работа с событиями, скрывающая браузерные нюансы, подсистема, отвечающая за визуальные эффекты, которые применяются при работе с элементами страницы, анимация и подобные уже классические функции. После беглого осмотра мне кажется, что API никак особо не изменен по сравнению с полной ExtJS, поэтому во многих случаях совместимость с кодом обеспечена. Приведу список классов, включенных в Core — Ext.CompositeElementpte, Ext.DomHelper, Ext.DomQuery, Ext.Element, Ext.EventManager, Ext.EventObject, Ext.Fx.
Поддержка системы шаблонов — Ext.Template, однако жаль, что не перенесена более мощная и расширенная система шаблонов XTemplate из основной версии. Однако все основные функции доступны, так что вполне можно работать на клиенте в практически том же стиле, что и на сервере (я имею ввиду что-то типа Smarty или другого шаблонизатора).
Поддержка AJAX. Для сохранения одинаковой архитектуры, в Core введен модуль Data, в котором пределен компонент Connection, предоставляющий низкоуровневый доступ к XMLHTTPRequest. К сожалению, в Core доступна только работа через этот компонент, соответственно, нет знакомых нам прокси для соединения через тег скрипт или iframe. Однако это не так часто используется, да и в основном уже в веб-приложении, а значит, тогда лучше использовать полный ExtJS. Традиционный Ajax класс расширяет компонент Connection, предоставляя унифицированный доступ к обработке запросов. Можно указывать и собственные HTTP-заголовки, отправлять формы и переопределять метод отсылки данных, перехватывать глобальные события. Странным и даже грустным выглядит отсутствие компонента UpadateManager, который для любого элемента предоставлял возможность одним методом update/load изменять содержимое через ajax. Хотя нет, стоп, метод load есть и доступен, однако с ограничением на выполнение скриптов, что во многих случаях все же ограничение и требует каких-то изворотов. Лично я попробую добавить традиционный UpdateManager в эту библиотеку.
Расширение базовых классов Javascript. Указывая на то, что сам JS очень гибкий язык, разработчики дополняют и расширяют базовый функционал некоторых встроенных объектов, тем не менее пытаясь минимально влиять на сам язык, так, чтобы сохранилась возможность, к примеру, работать с несколькими библиотеками одновременно. Среди расширенных возможностей стоит выделить расширение функций — createCallback, createDelegate и defer, к возможностям класса Array добавлены методы определения индекса по значению элемента и его удаление. Примитив String расширен функцией format, которая по сути такой себе низкоуровневый шаблонизатор (в данном случае есть специальное замечание, что этот метод может конфликтовать при использовании на страницы Ajax.NET, речь идет, видимо, об этой библиотеке)
Служебные методы, включая основной функционал, инкапсулированный в глобальный класс Ext — определение платформы и браузера, работа с URL и JSON данными, работа с массивами через each, определение типов переменных.
Работа с таймерами и периодическими событиями. Мало описанные но очень полезные компоненты — отложенные задачи (DelayedTask), расширенная версия таймера TaskRunner для периодической обработки данных (запуска указанной функции). Вот этим возможностям я, честно, очень рад, так как достаточно часто использовал в проектах.
И, наконец, в Core включена вся мощная ОО инфраструктура, на базе которой, собственно, и построен весь фреймворк. Можно свободно создавать собственные классы, использовать наследование (в терминах библиотеки — extend), переопределение/перегрузку (override), работа с прототипами. Сюда же включены и реализации некоторых наиболее часто используемых паттернов — Singlton, Observable. И, в придачу, поддержка пространств имён.
Собственно, вот и все, чем нас радует ExtJS. Я бы сказал, что очень неплохо, хотя, выросши на основном фреймворке, иногда чувствуешь нехватку некоторых его возможностей, однако не следует забывать, что область применения Ext Core и основного фреймворка кардинально различается. Но если вы, к примеру, делаете веб-приложение, то сам сайт для него вполне логично сделать совместно с той же библиотекой, однако не заставляя посетителя загружать мегабайтный ExtJS, вместо этого просто берем Core, при этом никакого переобучения разработчикам по сути не надо, а дальнейшее расширения проекта не столкнется с необходимостью переписывать код. Мне кажется, что Core — это просто мост между разработками, когда для базового фронт-енда мы используем облегченную библиотеку, а дальше «подтягивается» тяжелая артиллерия в лице виджетов и компонентов для работы с данными. И вот здесь реализация динамической подгрузки новых компонент была бы очень кстати, аналогично сделанному в Dojo.
Core отлично подходит и для базового изучения возможностей всего фреймворка, так как здесь нет столько классов и их хитросплетения, а значит, начинающий разработчик сможет постепенно разобраться, а потом перейти к работе с уже более масштабным проектом. Хотя отсутствие некоторых привычных инструментов может поначалу смутить профессионального разработчика, но к этому быстро привыкнешь, да и статус текущей версии всего лишь бета, возможно, скоро там появится все, о чем мы так долго мечтали…
Ссылки
- Сообщество пользователей Интернет [Электронный ресурс] – Режим доступа к статье:TechDays Доклады, презентации.
- Сообщество пользователей Интернет [Электронный ресурс] – Режим доступа к статье:HabraHabr
- Сообщество пользователей Интернет [Электронный ресурс] – Режим доступа к статье:The Code Project Учебные проекты, исходные коды
- Сообщество пользователей Интернет [Электронный ресурс] – Режим доступа к статье:GotDotNet.Ru Новости События Статьи Блоги по .NET