Облако тегов
Последние записи
- Maven+Spring+Hibernate+dbunit
- Водяные знаки
- Ошибка при установке AIR - Error #2032
- Контекстное меню в AdvancedDataGrid
- Повышение производительности AS3 приложений
- AdvancedDataGrid cортировка
- Создание Flex-приложений c использованием Parsley. Часть 3, MVC
- Создание Flex-приложений c использованием Parsley. Часть 2, обмен данными
- Создание Flex-приложений c использованием Parsley. Часть 1, связывание
- Принципы организации выкладываемых примеров
Полезные ссылки
Природа не понимает шуток. Она всегда честна, всегда серьёзна, всегда сурова. Она всегда права, а ошибки и промахи делают только люди. Человек, который относится к природе с пренебрижением, не способен её оценить, и только понимающему, чистому и правдивому, она покоряется и открывает свои тайны.
Иоган Вольфнг фон Гёте
Большое спасибо
| Создание Flex-приложений c использованием Parsley. Часть 1, связывание |
| 27.09.2009 20:36 |
|
Когда мы начинаем писать приложение, на любой технологии, мы хотим написать "правильный" код, который позволял бы нам легко менять структуру приложения взаимосвязи между различными компонентами приложения. Хочется, чтобы одни модули/части проекта не зависели от других для дальнейшего использования.
Познакомившись с технологией Flex, которая мне понравилась, я в начале не придал внимания этому вопросу, и только после погружение в серьёзный проект я стал скучать по культовому в Java среде Spring. Начал смотреть на предмет аналогичных проектов для Flex приложений. Познакомившись с несколькими проектами я остановился на двух Spring Actionscript(в новом окне) и Parsley. Прочитав документацию, мне больше понравился второй вариант.
В этой статье и её приложении я опишу как я вижу возможность использования этой библиотеки для разработки приложения средней и высокой сложности.
Для примера я взял простой вариант с приложением "записная книжка", написанный как Air приложение, работающее с локальной БД SqlLight. Весь код приложения можно скачать из моего SVN репозитария https://gubber.ru/svn/samples/tag/parsley1/parsley/. Логин и пароль для доступа test/test. Возможно предложенный пример покажется излишне рафинированным/избыточным. Приступим.
Примечание: для этого примера я взял модифицированную таблицу с постраничной навигации вот из этого источника(в новом окне).
Parsley позволяет конфигурировать проект при помощи трёх вариантов MXML, AS и XML-вид. Все они решают одну и ту же задачу. Вопрос в том, что в одном случае удобно использовать один вариант в другом - другой В данном примере используются первые два варианта.. Для себя я определил сферы применения каждого следующим образом:
Первая задача, которая встаёт перед нами - это написать все компоненты будущего проекта, сконфигурировать каждый из них и внедрить одни компоненты в другие.
Вот как выглядит файл объявления различных компонентов для нашего приложения
ContactbookConfig.mxml
В данном примере у нас определено четыре компонента из различных уровней приложения. LocalContactService обеспечивает доступ к БД и обращение к физическим данным. ContactPanel - панель, которая отображает список контактов, а так же форму для добавления/редактирования контакта. Для использования данных компонентов мы должны сконфигурировать наше приложение, используя данный конфигурационный файл. Конфигурация, в моём случае происходит в основном классе Contactbook.mxml
Конфигурирование приложения должно происходить как можно раньше, именно по этой причине создание контекста происходит по событию . В данном случае во всё приложение у нас создаётся компонент MainView. Который и отвечает за отображение информации. Ниже приведено несколько фрагментов кода MainView, в которых происходит инициализация компонента и связывание его с компонентами в конфигурационном файле.
В данном примере кода происходит простое связывание компонентов, объявленных в данном класс и в файле конфигурации. При добавлении компонента в родительский объект генерируется событие dispatchEvent(new Event('configureIOC', true)), которое оповещает Parsley контекст, что данный компонент надо включить в обработку.
Примечание: переменная inited была введена для удаления избыточного добавления слушателей событий, пока мне не удалось разобраться в чём ошибка.
Теперь обратим своё внимание на 18 и 19 строчку. Как раз в этом месте и происходит прямое связывание переменной panel и компонента, который создаётся во время конфигурировании приложения. Т.к. у нас указана просто директива [Inject], то связывание происходит по классу объекта. Parsley ищет в конфигурации объект экземпляр данного класса, и связывает объект и переменную. Если же нам необходимо в конфигурации создать несколько объектов одного класса, и использовать их в различных местах, то для этого используется механизм выбора, когда в директиве указывается какой именно объект нам нужен. В случае с объектами для идентификации используется поле id, пример такого связывания можно увидеть в классе ContactAction.
На этом первую часть своего повествования я завершу. В следующей статье я опишу моменты связанные с обменом данными между различными компонентами приложения. В третьей части я опишу модель построения конкретного приложения с моим видением того как должно быть организовано правильное MVC приложение.
|