2010-06-09 4 views
3

Я немного смущен, когда лучше использовать Модули Flex или RSL libriaries (в Flex 3.5).Flex Modules vs RSL

Моя цель состоит в том, чтобы разделить мой проект на несколько проектов модулей, поэтому я могу тестировать и работать отдельно. Предположим, у меня есть приложение Customer и приложение Vendor. У меня также есть интерфейсная панель с двумя кнопками. Каждая кнопка запускает приложение Customer или приложение Vendor.

Эти приложения делают разные вещи. Они также имеют некоторые функции .as и общие компоненты.

Я понимаю, что если я создаю основной проект (для входа пользователя и отображения первой панели) и двух модулей (клиент, поставщик), я должен иметь все эти компоненты в своем проекте Eclipse, не так ли?

Вместо того, чтобы делать модули, должен ли я создавать SWC для поставщика и другие приложения для клиентов и звонить из основного приложения с помощью RSL?

Итак, какой вариант больше подходит? Что вы мне посоветуете? Какие компромиссы по каждому варианту?

С другой стороны, это гибкое приложение интегрировано с Java через Blaze и ibatis для управления постоянством и поддерживается веб-сервером apache. Я считал также создание независимых военных файлов, чтобы сохранить эту разницу, но я думал, что это не оптимизирует гибкий код. Я прав?

спасибо.

Ноль

ответ

2

модулей предлагают более тонкий полный контроль над тем, когда содержимое загружается - и, необязательно, - выгружено.

Предполагая, что пользователь не имеет RSL-кеширование локально, он загружается как часть начальной загрузки приложения.

Используя модули, вы можете отложить эту нагрузку до тех пор, пока пользователь не запросит ее.

В вашем случае это звучит так, будто вы хотите использовать комбинацию того и другого.

Объявляйте модуль каждый для приложений Заказчика и Поставщика и загружайте соответствующий модуль только при нажатии кнопки. Это избавит вас от затрат на загрузку избыточного модуля.

Общая логика, разделяемая между собой, может войти в RSL, который будет кэшироваться на стороне клиента и загружен только один раз.

+0

Hi Marty, Большое спасибо за ваш ответ. – nil

+0

очень профессиональный ответ. благодаря! – ufk

3

Модули и RSL служат для разных целей.

RSL может содержать код и активы и загружаться в память при загрузке основной swf, как если бы они были частью одного и того же файла.

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

Модули - это, по сути, внешний SWF, который может быть загружен по требованию, с добавлением большого количества кода, специфичного для Flex, чтобы убедиться, что функции Flex работают должным образом.Например, наследование типов и встроенные шрифты могут быть проблематичными в загруженных SWF, если они не обрабатываются правильно. Компоненты интерфейса Flex имеют определенную логику, чтобы убедиться, что эти функции работают правильно с модулями. Модули также касаются междоменных проблем (например, вы не можете нормально получать события мыши, когда мышь находится над SWF из другого домена, но модули работают вокруг этого).

Модули загружаются по требованию, а обычно содержит виды. Основная цель модуля - отложить загрузку представления до тех пор, пока оно не понадобится. Это ускоряет первоначальную загрузку приложения, и пользователю остается только загрузить это представление, если он действительно хочет посмотреть на него.

Модули имеют значительные накладные расходы по сравнению с загрузкой SWF, но вам нужно будет использовать модуль, чтобы гарантировать, что все функции Flex работают должным образом.

Оба модуля и RSL могут быть оптимизированы для удаления кода, который уже включен в конкретное приложение. Это, однако, имеет гораздо большее значение для модулей, поскольку это в основном приведет к поражению основного варианта использования RSL, сделав его пригодным только для использования в одном приложении.