Опубликован: 01.03.2010 | Доступ: свободный | Студентов: 958 / 46 | Оценка: 4.38 / 4.31 | Длительность: 09:26:00
Лекция 1:

Обзор современных средств разработки интерактивных приложений

Лекция 1: 123 || Лекция 2 >

Анимация в коде приложения

Flash/Flex: Основана на фрэймах.

Silverlight: Основана на временных интервалах

Для программистов работать с фреймами чрезвычайно неудобно. Потому как при необходимости рассчитывать для каждого фрейма состояние анимации, никто не гарантирует, что все фреймы будут проходить с одинаковой скоростью. Да, и не надо забывать, что шкала фреймов одна на всю сцену. И если в ней задано 24 фрейма в секунду, то сделать анимацию длиной 0.8 секунды уже нельзя. К выходу Flex CS3 Adobe предоставила механизм эффектов. Программировать собственные эффекты также сложно, но они хотя бы не привязаны к шкале фреймов. В Silverlight перенесли механизм анимации из WPF, использующий временные интервалы. Простой, удобный, легко настраиваемый как из XAML, так и из кода, не привязанный ни к какой общей шкале фреймов, каждая анимация живет собственной "жизнью". Поэтому в номинации "анимация в разметке и коде" побеждает Silverlight.

Стандартные элементы управления

Flash/Flex: Достаточно широкий набор стандартных элементов управления, а также расширенные элементы управления, вроде коллекции чартов или OLAP data grid.

Silverlight: Набор стандартных элементов управления + Silverlight Toolkit + Silverlight SDK (те же грид, чарт и т.п.) + бесплатные элементы управления третьих фирм (например, Visifire).

Обе технологии имеют достаточное количество элементов управления для создания пользовательских интерфейсов.

Пользовательские элементы управления

Flash/Flex: Внешний вид элементов управления создается во Flash и AI в виде набора графических символов, функционал либо во Flash, либо во Flex. Внешний вид контрола, созданного в "дизайнере", невозможно изменить из кода.

Silverlight: Внешний вид создается в Expression Blend или Expression Design, затем может быть изменен в xaml или из кода.

В вопросе создания элементов управления Silverlight бесспорно впереди. Потому что пользовательские элементы управления в связке Flash/Flex делать весьма неудобно. Нужно нарисовать элемент управления во Flash или AI, разбить содержимое на нужный набор клипов, затем экспортировать во Flex и там использовать. Повторить N раз до тех пор, пока элемент не станет таким, каким он нам нужен. Сравните это с возможностью редактировать в Blend Silverlight- элемент прямо на форме, где он используется, при этом "не закрывая студию". Если нужно добраться из кода во Flex до чего-либо, что не является клипом, надо снова лезть во Flash и выделять это в клип.

Отдельно хочется сказать про шаблоны во Flash/Flex. Не про то, что они на самом деле не шаблоны, а всего лишь имитация, а про то, что создание элемента управления, в котором отдельные визуальные элементы должны создаваться с помощью шаблонов - это часто работа вслепую. Потому что посмотреть на элемент управления в дизайнере Flash нельзя - не подхватится влияющий на отрисовку код, надо запускать приложение. Однако в случае действительно сложного элемента управления часто трудно понять, какая из составляющих ведет себя неверно. Начинается перебор всего подряд.

Кастомизация элементов управления

Flash/Flex: Используются CSS-like стили

Silverlight: Используется взятый из WPF, модифицированный механизм стилей. Добавлены VisualState и VisualTransition, а также понятие Control Contract.

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

Работа с XML

Flash/Flex: ECMAScript for XML (E4X)

Silverlight: LINQ to XML

LINQ to XML имеет ряд преимуществ перед другими способами работы с XML, в том числе и реализацией E4X во Flash/Flex. Начиная от удобного синтаксиса, и заканчивая возможностью использования LINQ to XSD. А если вы пишете не на C#, а на VB.NET, то у вас есть возможность смешивать код на бейсике и XML, используя при этом XML IntelliSense.

Взаимодействие с браузером

Flash/Flex: Есть.

Silverlight: Есть.

Настольные приложения

Flash/Flex: Есть.

Silverlight: Есть.

Silverlight 3.0 дает возможность создавать самостоятельные, оффлайновые приложения для настольных систем, подобно платформе Adobe AIR. Наиболее привлекательно в подобных приложениях то, что они строятся из онлайн-приложений без малейших изменений в коде. Достаточно создать XML-файл (AppManifest.xaml) и задать несколько параметров. С этого момента приложение может работать как в пределах браузера, так и вне его.

Однако это только часть возможностей. Функциональность приложений можно расширить через интерфейс локального хранения данных, названный Isolated Storage. В Silverlight данные пользователей могут храниться локально вне зависимости от того, используется ли веб-приложение, или настольная версия приложения, или же первое превращается во второе и наоборот.

Для запуска приложения Silverlight вне браузера на нем придется щелкнуть правой кнопкой мышки и явно дать команду на инсталляцию в системе. Технология Adobe позволяет просто скачать приложение - и его сразу можно использовать.

Как бы то ни было, способность приложений Silverlight 3.0 к самостоятельной работе вне браузера является наиболее важным нововведением. Если учесть огромные наработки и базу ранее созданного на платформе .NET кода, можно без сомнений ожидать взрывного роста количества настольных приложений Silverlight.

Связывание данных

Flash/Flex: Возможно только в MXML. Достаточно просто реализуется синтаксически, но изменение связывания из кода невозможно. Связывание работает для всех свойств или классов, помеченных атрибутом bindable.

Silverlight: Binding аналогично WPF.

Обе технологии представляют хорошие средства для связывания. Silverlight позволяет задать следующие привязки:

  • Source определяет, где происходит связывание. Это может быть ресурс в XAML, в этом случае он задается как StaticResource (Статический ресурс), или другой связываемый источник, например IEnumerable.
  • Path - это идентификатор свойства, которое связывается с источником.
  • Mode определяет режим связывания. Может принимать значения OneWay, что определяет связывание только с возможностью чтения; TwoWay, что означает связывание с возможностью как чтения, так и записи; или OneTime, что определяет одноразовое связывание, выполняемое лишь при первом формировании отображения элемента управления.
  • Converter используется, если необходимо преобразование данных при связывании. Converter включает имя экземпляра класса Converter. Также могут использоваться ConverterParameter (Параметр конвертера) и ConverterCulture (Региональные настройки конвертера) для более тонкой обработки.

Многопоточность

Flash/Flex: Нет

Silverlight: Есть

Здесь Flash/Flex безоговорочно сливает. Полноценная многопоточная модель нужна в RIA намного чаще, чем это может показаться, поскольку даже мелкие "подвисания" интерфейса могут вывести пользователя из себя. Да и возможность запускать те или иные задачи в фоне бывает крайне полезна.

Поддержка печати

Flash/Flex: Есть.

Silverlight: Нет.

Что не говори, а возможность печати нужна не так уж и редко. И если в случае Flash/Flex можно печатать прямо из приложения, то в Silverlight приходится делать это через сервер.

Заключение

Silverlight относится к Web 3.0, где основа основ - не Java/JS, а полноценнное веб-приложение. И если Flash был некой реализацией JVM, то Silverlight ассоциируется с более совершенным CLR(.NET), который как нельзя лучше подходит для создания RIA-приложений для Web. При этом, для работы с Silverlight необязателен Visual Studio - есть более дизайнерское решение - Expression Blend. Изучение же XAML и основ C# для создания приложений не вызывает трудностей и нередки случаи безболезненного перехода с ActionScript.

Лекция 1: 123 || Лекция 2 >