Каковы плюсы и минусы переноса приложения из AS2 в AS3? - PullRequest
3 голосов
/ 15 сентября 2009

У меня есть клиент, спрашивающий меня: "Каковы плюсы и минусы в переходе с AS2 / Flash на AS3 / Flex?" У него проблемы с производительностью и ремонтопригодностью в приложении.

Я как-то ненавижу эти вопросы, потому что я просто хочу сказать: «AS3 / Flex будет быстрее и удобнее в обслуживании», но я знаю, что должен быть более конкретным. Приложение близко к 100 000 строк кода, плохо документировано, и кажется, что пользовательский интерфейс генерируется динамически.

Очевидно, что переход с Flash / AS2 на Flex / AS3 будет дорогостоящим, но стоит ли повышать скорость и удобство обслуживания? Кто-нибудь знает, в какой степени это улучшит скорость и ремонтопригодность? Есть ли что-то, что вы не можете сделать в AS3, что вы можете сделать в AS2? Я бы не догадался. Есть ли в AS3 действительно важные вещи, которые вы не можете сделать в AS2?

Полагаю, вторая половина этого вопроса состоит в том, как правильно ответить на подобные вопросы при работе с клиентами? Несмотря на то, что я потратил много часов на просмотр десятков тысяч строк кода, я не уверен, что могу быть очень точным.

Спасибо!

Ответы [ 9 ]

3 голосов
/ 15 сентября 2009

Performance Поскольку у вас есть 100 000 строк кода, выполнение кода на виртуальной машине, которая в 10 раз быстрее (как говорит сам Adobe), безусловно, повысит производительность. Но как производительность текущего приложения? если это достаточно хорошо, то вы действительно не должны рассматривать этот профессионал.

Ремонтопригодность и возможность повторного использования Если текущую кодовую базу сложно поддерживать и она не пригодна для повторного использования, она требует рефакторинга, а не переписывания на новом языке. AS3 поддерживает методы кодирования, которые помогают в поддержке и повторном использовании, но это не значит, что вы и ваша команда будете следовать им. Также возможно, что с AS3 у вас будет кодовая база, которую сложно поддерживать. Также возможно реорганизовать ваш код AS2 в удобном и многократно используемом виде.

Новые технологии Я считаю, что это единственный настоящий профи здесь. Flex / AS3 - это новая технология. Это хороший и чистый. Многие люди решительно поддерживают это. Adobe подталкивает всех к переходу с AS2 на AS3. Будет все труднее нанимать новых разработчиков AS2. Будет меньше инструментов разработки, поддерживающих AS2. И я полагаю, что рано или поздно вам придется переключиться.

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

2 голосов
/ 15 сентября 2009

Самая большая и самая важная причина для обновления заключается в том, что для Adobe AS2 является мертвым языком. AS2 запускается внутри собственной специальной виртуальной машины (точнее, AVM1), которая вместе с остальной частью проигрывателя Flash навсегда застряла в мире Flash 8. Никакие новые функции или оптимизации никогда не вернутся к AS2 - период .

Кроме того, если это приложение будет работать долго, важно понимать, что количество разработчиков, которые знают и понимают AS2, со временем будет только уменьшаться. Если с приложением произойдет переход к AS3, было бы проще (и, вероятно, дешевле) сделать это раньше, чем позже.

2 голосов
/ 15 сентября 2009

В Википедии есть приличный список новых функций по версии Flash Player:

http://en.wikipedia.org/wiki/Adobe_Flash_Player

Все, начиная с версии 9, доступно только для AS3. Вот несколько основных моментов, в том числе некоторые мои собственные:

  • Поддержка Flex 2+ (версия 4 выйдет в начале следующего года)
  • Поддержка Adobe AIR
  • Бинарные розетки
  • Поддержка H264 / AAC
  • 3-D преобразования
  • Новый движок для разметки текста
  • Аппаратное ускорение

Написав приложения Flex, работающие под FP8 (Flex 1.5) и FP9 + (Flex 2+), я могу сказать, что это значительно быстрее. Для бизнес-приложения, в котором люди проводят много времени ежедневно, я думаю, что это может быть заметным улучшением, которое уменьшит растягивание волос конечным пользователем. Существуют метрики производительности для низкоуровневых операций, таких как конкатенация строк и сортировка массивов, но эти метрики не приравниваются к приросту производительности, который вы видели бы в реальном приложении. В действительности они будут меньше, но измеримы.

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

1 голос
/ 28 ноября 2009

AS3 превосходит AS2 - по многим причинам выше, включая производительность виртуальной машины, более строгий компилятор для обеспечения практики чистого кодирования (строгая типизация и т. Д.). Я не видел, чтобы кто-нибудь упоминал, что вы можете изменить родительский объект объекта во время выполнения в AS3, чего вы не могли сделать в AS2, и если вы столкнулись с этой проблемой, вы знаете, что это за дорожное препятствие.

Но, что более важно, когда вы кодируете вещи в AS3, ОНИ РАБОТАЮТ, КАК ОНИ ПРЕДЛАГАЮТСЯ. Ничего из этого необычного материала для AS2, где вы обнаруживаете ошибки, недостатки и просто странные результаты из-за ограничений кода на довольно регулярной основе!

Если вы рассматриваете возможность переноса / перезаписи, вам также следует учитывать любую кривую обучения, которую вам, возможно, придется подождать, если ваша команда разработчиков имеет опыт работы с AS2, но не с AS3.

С кодовой базой в 100 000 строк (что довольно много для любого стандарта ActionScript), портирование станет кошмаром, если код не документирован, не элегантен и не организован. Вы могли бы обнаружить, что переписывание с нуля, начав с создания более эффективной и организованной структуры / шаблона проектирования для приложения, в конечном итоге значительно сокращает размер кодовой базы ... возможно, это должно быть всего лишь 50000 строк кодовой базы, если это сделано правильно?

удачи!

1 голос
/ 15 сентября 2009

Другие ответы хорошо охватили основы, но я просто добавлю, что с точки зрения производительности, выполнение скриптов для хорошо написанной AS3 имеет тенденцию выполняться где-то в 3-100 раз быстрее в AS3, чем в AS2. Это широко варьируется в зависимости от того, что делается. Обратите внимание, однако, что для большинства приложений проблемы с производительностью не полностью или даже в первую очередь из-за выполнения сценария. Обычно рендеринг является самым большим узким местом, и в этом случае переключение на новую виртуальную машину AS3 может дать умеренные преимущества или, возможно, вообще ни одного. Только профилирование может сказать, увидит ли ваше конкретное приложение значительное улучшение производительности или нет.

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

Еще одна вещь, которую другие не рассмотрели - совместимость между содержимым AS2 и AS3 очень плохая. Если вы, скорее всего, будете загружать внешний контент (SWF) или пытаться использовать сторонние библиотеки (графические компоненты или тому подобное), вы, скорее всего, увидите, что большинство такого контента уже AS3, а материал AS2 будет только стань реже.

0 голосов
/ 15 сентября 2009

AS3 не лучше, чем AS2

Я не совсем понимаю всю эту штуковину AS2 ... я знаю лишь очень немногих людей, которые, кажется, действительно понимают большие возможности AS2 ... AS2 можно сравнить с Ruby, тогда как AS3 - это именно то, где Java было 10 лет назад ... да, это медленно, но гораздо мощнее и выразительнее, чем AS3 ... я не знаю ни о каких фундаментальных возможностях AS3 и AS2 (не путайте язык и API), кроме правильной обработки ошибок ... по теме, не связанной с другими вопросами, я недавно углубился в детали ... AS3 имеет доступ к гораздо большему API, но большинство важных вещей - это то, что вам не нужно в бизнесе приложение ...

AS2 может быть очень производительным и элегантным, если вы действительно используете его в полной мере ... если вы хотите иметь такую ​​же гибкость в AS3, как и в AS2 (или, по крайней мере, в наилучшем приближении, которое вы можете получить), вы обнаружит, что большая часть вашего ускорения выполнения кода выходит за пределы окна ...

Не использовать AS3

Я серьезно ... Если вы хотите нацелиться на AVM2, используйте либо Flex через MXML с наименьшим возможным количеством AS3, либо Haxe ... используйте Flex, если быстро разработка важна для вас, и Хэкс, если это больше касается производительности (ну, есть и другие причины, чтобы сделать это, но они более субъективны, я думаю) ...

до сегодняшнего дня AS3 был тупиком ... язык не изменился с тех пор, как он был представлен ... конечно, у flashplayer появились новые функции, но AS3 осталась AS3 с момента его выпуска 3 года назад, за исключением Vector, что является довольно странной вещью ... вы можете заметить, что потребовалось 3 года от AS1 до AS2 и еще 3 от AS2 до AS3 ... и это действительно время для AS4, но Adobe, похоже, не работать над чем-то подобным ... вместо этого они все больше и больше фокусируются на расширении своей палитры продуктов ...

Что делать?

подтекстом у меня сложилось впечатление, что у вас есть около 100000 строк кода для спагетти ... так что настоящая проблема - это код, а не язык ... вам нужно переписать ... если вы считаете, что это имеет смысл , вы даже можете переписать его в AS2 (хотя я все же рекомендую использовать Haxe) ... единственное, что можно использовать в AS2, это то, что вы можете скопировать и вставить некоторые реализации, если вам повезет ... но вы на самом деле нужно просто создать чистое приложение с нуля, используя лучшее из того, что обеспечивает используемый вами язык, являясь подмножеством OOP, AOP и FP (Haxe / AVM1 допускает все эти вещи) или декларативный подход, разрешенный MXML ...

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

Когда дело доходит до клиентов ...

... я бы посоветовал вам сказать им простую правду: у них может быть программное обеспечение, которое обеспечивает фиксированный набор функций по наименьшей возможной цене (что, вероятно, то, что у них есть сейчас, в вашем случае), или у них может быть гибкое / расширяемое / хорошо разработанное программное обеспечение ... и даже если они выберут последнее, они должны будут признать, что время от времени вам нужно делать радикальные шаги, такие как переписывание ... постоянное ухудшение кода это неоспоримое явление ... когда вы разрабатываете программное обеспечение, вы начинаете принимать решение, в каких направлениях оно может развиваться, в котором оно не может, и вы придете к точке, где неясная пачка грязных хаков добавится для реализации функциональности, которая программное обеспечение не было выложено, сделает дальнейшие расширения неэкономичными ... не стесняйтесь указывать своим клиентам, когда программное обеспечение, которое вы хотите расширить (будь то ваше или нет), это очень хороший момент для переписать, вместо того, чтобы позволить им платить за всю неэффективную работу, необходимую для добавления дополнительных функциональность, в которой они нуждаются ... стоимость программных расширений растет экспоненциально ... после переписывания эта стоимость возвращается к тому, что "близко к 0-мелкой части" ... это ваш собственный опыт, чтобы определить, в каком Смысл в том, что имеет больше смысла делать переписывание (если, на мой взгляд, для того, чтобы действительно выполнить эту оценку, необходимо просмотреть 100К строк кода, это, безусловно, хорошее время для переписывания) ... получить представление о том, что вы думаете, где программное обеспечение должно идти, что для этого нужно, и выбирать наиболее эффективный способ сделать это ...

0 голосов
/ 15 сентября 2009

Я бы предположил, что перенос 100 000-строчного приложения из AS2 в AS3 действительно мало чем отличается от полного перестроения с нуля, учитывая количество времени, которое потребуется. Вы обнаружите, что многие из этих 100 000 строк могут даже не понадобиться. И если код включает в себя какие-либо фреймворки и т. Д., Я был бы еще более обеспокоен, поскольку вам, возможно, придется портировать их самостоятельно, и в этот момент вы могли бы просто начать снова. Вашему клиенту нужно подумать о том, как долго он хочет жить этим проектом. Если прошло меньше нескольких лет, я говорю, не беспокойся. Если это приложение - их бизнес, я говорю о версии 2.0, и пока вы переписываете функции в AS3, найдите время, чтобы улучшить функциональность и удобство использования приложения.

0 голосов
/ 15 сентября 2009

Я лично никогда не мог переварить AS2 и полностью избегал языка до 3. Есть много причин, которые уже были опубликованы другими, но вот краткий список выше моей головы:

  • Код многоразового использования проще создавать
  • Вы можете следить за продукцией, проверенной лучше всего практика
  • доступ к надежной микроархитектуре каркасы (Robotlegs, Swiz, PureMVC, Мате, Петрушка и др.)
  • Увеличена скорость
  • Не застревает только со вспышкой или просто Flex, доступ к обоим компонентам библиотеки
  • Воспользуйтесь преимуществами новых возможностей игрока
  • доступ к загрузке библиотек, которые as3 вывел на сцену
  • способность использовать предстоящие технологии, такие как Flash Catalyst
  • Надежная IDE, которая повышает эффективность и умение работать с большими командами
  • Не привязан к временной шкале f. N.

Для меня выбор не Flash / AS2 и Flex / AS3 - вы не теряете Flash ... вообще. Вы получаете только Flash, Flex и чистый AS3.

0 голосов
/ 15 сентября 2009

Я бы хотел масштабировать аппаратное обеспечение, прежде чем приступить к обновлению базы кода приложения (особенно, если вы думаете, что его будет сложно обновить). Это будет быстрее и дешевле масштабировать оборудование.

...