Автор|Дун Ян (Simu)
Произведено | Alibaba New Retail Tao Department Технологический отдел
Почему флаттер?
Итак, что заставляет все больше и больше разработчиков в группе использовать стек технологий Flutter? Какие преимущества Flutter привлекают местных разработчиков группы к разработке и реализации бизнеса с помощью Flutter?
С технической точки зрения я лично считаю, что три основные функции Flutter наиболее привлекательны для разработчиков:
- Высокая эффективность разработки и доставки, хороший опыт разработки
- Отличные кросс-мультитерминальные и мультиплатформенные возможности
- Сильная выразительность пользовательского интерфейса
Сегодня Flutter очень хорошо решил проблему кросс-энд согласованности.Набор кодов работает как на iOS, так и на Android без какой-либо разницы.Опыт разработки в основном близок к внешнему интерфейсу, и он поддерживает горячую перезагрузку на устройстве. В конце прошлого года Flutter запустил его в Android Studio.Предварительный просмотр в реальном времени и интерактивные возможности Hot UI с помощью плагинов, а также визуальный макет Layout Explorer делают эффективность разработки Flutter и эффективность интерфейса практически одинаковыми.
Развитие бизнеса электронной коммерции на современном этапе уже не ограничивается мобильными сценариями, все больше потребностей бизнеса выдвигают более высокие требования к кросс-энду и кроссплатформенности. Сценарии настольных приложений DingTalk/Qianniu и даже бизнес-сценарии, такие как Tmall Genie и офлайн-магазины, требуют многотерминального решения с лучшей адаптацией и более низкой стоимостью, чем стабильность веб-производительности в долгосрочной перспективе.
В настоящее время кросс-мультитерминальные технические решения в основном опираются на браузеры и клиентские системы, однако свойства песочницы самого браузера, его низкая степень интеграции с системой и низкая производительность на слабых устройствах снижают Эффективность исследований и разработок и удобство для пользователей Поднимите порог эффективности бизнеса.
Можно сказать, что текущие кросс-мультитерминальные и мультиплатформенные решения внутри группы практически отсутствуют. Flutter естественным образом поддерживает мультиплатформенную разработку по дизайну.Его нижний уровень основан на кроссплатформенном графическом движке Skia.Он строит вверх набор независимой от платформы системы рендеринга и системы обработки событий и настраивает объявление на основе виджетов в соответствии с Native R&D модель +Отзывчивая парадигма программирования, низкая зависимость от системных возможностей и отличное кросс-платформенное восстановление, поддержка нескольких платформ также является одной из стратегических целей Flutter.
.Flutter очень хорошо решает эту проблему.От анимации движения, анимации, основанной на физических свойствах, до относительно сложных специальных эффектов, таких как анимация героя между страницами и чересстрочная анимация параллакса, Flutter можно эффективно реализовать на разных платформах при низких затратах.
Вот интерактивная демонстрация на основе Flutter, анонсированная GSkinner на конференции Flutter Interact в конце прошлого года, чтобы каждый мог интуитивно почувствовать:кликните сюда
Вы можете видеть, что мощная выразительность пользовательского интерфейса Flutter может помочь разработчикам разрабатывать чрезвычайно классные пользовательские интерфейсы быстро, эффективно и с низкими затратами.Он очень подходит для различных сценариев в области электронной коммерции, где важно визуальное взаимодействие с пользовательским интерфейсом, и помогает компаниям создавать выразительные страницы. . . .
Статус-кво систематической конструкции Flutter
С другой стороны, с точки зрения отраслевых тенденций, технология Flutter стала направлением построения технологий, на котором сосредотачивается все больше и больше отраслевых партнеров.ByteDance, Meituan и другие компании создали свои собственные инженерные системы Flutter и обслуживали свои собственные бизнес-сценарии; Tencent также провела пробные испытания нескольких приложений на основе Flutter и предоставила возможность обслуживать апплеты во Flutter. Было проведено полезное исследование.
▐ Попытки и мысли о покупках с рук
Hand Tao начала изучать применение движка рендеринга Flutter на сцене апплетов в октябре 2018 года; во второй половине 2019 года он начал создавать базовые возможности Flutter и обслуживать специальный выпуск Taobao в ключевых технологиях, таких как движок, библиотека изображений, оптимизация памяти и производительность загрузки. В то же время благодаря преобразованию движка Flutter инкапсулируется возможность Flutter 2D Canvas, а небольшой программный компонент Canvas и небольшой игровой движок поддерживаются вверх, обслуживающие 2D/2.5D геймификация бизнеса и посадка в бизнес-сценарии.
С точки зрения бизнес-приложений:Самая большая ценность, которую в настоящее время приносит Flutter, — это повышение эффективности исследований и разработок. В условиях полной инфраструктуры и встроенных возможностей расширения, эффективность человека при разработке чистого бизнеса Dart на основе Flutter почти в 2 раза выше, чем предыдущая эффективность разработки на каждом конце, а способность реагирования на спрос в единицу времени соответственно улучшается почти на 2 раза В настоящее время он хорошо продуман для развития бизнеса Xianyu и специальных выпусков.
Текущие ограничения Flutter — это его динамические возможности и первоначальные инвестиционные затраты. Первоначальные инвестиционные затраты в основном относятся к затратам на техническое обучение и обновление модели команды R&D. Они включают в себя выбор технического маршрута, который мы и каждая бизнес-команда должны обдумать и оценить вместе. Мы не будем обсуждать это здесь.
Будущее исследование в динамическом направлении также будет долгосрочным игровым процессом. Если мы сможем решить динамическую проблему Flutter позже, то у Flutter есть все шансы стать одной из основных R&D-моделей бизнеса группы.
AliFlutter - Мобильная группа Economies Проект совместного строительства Flutter
- Выполнение построения системы Flutter с экономического уровня, построение общедоступной технической инфраструктуры Flutter, разработка контейнеров Flutter, промежуточного программного обеспечения и стандартов API, создание поддержки исследований и разработок Flutter, а также возможностей работы и обслуживания данных, а также повторное использование ключевых технологий;
- Объединение бизнес-единиц для создания экономического технического сообщества Flutter, накопления и совместного использования технологии Flutter и бизнес-компонентов, возможностей и решений Группы, обслуживания бизнеса Flutter Группы и совместного создания технологической экосистемы Flutter Группы;
- Создайте внешнее влияние Flutter на экономическом уровне и объединитесь со всеми BU, чтобы создать командные высоты Ali в области технологий Flutter в отрасли.
Общая архитектура AliFlutter в будущем выглядит следующим образом:
Первый шаг в создании AliFlutter,Он предназначен для создания инфраструктуры Flutter Группы, предоставления общедоступных контейнеров и компонентов, услуг поддержки НИОКР и стандартизированных процессов НИОКР, предоставления базовых возможностей общедоступных услуг НИОКР Flutter для бизнеса Группы Flutter, а также создания хорошей основы и платформы для совместного создания технологий и совместное использование;
инфраструктура
▐ Склад артефактов
▐ публичный репозиторий
Подобно npm в мире Node.js, Flutter использует pub для управления сторонними компонентами и зависимостями. Принимая во внимание требования простоты использования и безопасности, чтобы управлять общедоступными сторонними компонентами внутри группы, мы также создали общедоступную библиотеку Flutter для интранет-среды. Цель этой библиотеки — стать платформой публикации публикаций группы, управляя всеми пакетами публикации сторонних и сторонних производителей в группе.
▐ Контейнеры, промежуточное ПО и API
Для бизнес-доступа основная проблема, которая должна быть решена на этом этапе, заключается в предоставлении унифицированного контейнера среды выполнения Flutter, а также серии пакетов Flutter и возможностей API стандартизированного мобильного промежуточного программного обеспечения группы, а также в предоставлении стандартного расширения группы. для бизнеса самостоятельное развитие бизнес-функций.
Поскольку групповые приложения в основном основаны на гибридных стеках, мы используем FlutterBoost в качестве основы гибридного стека контейнеров Flutter и сотрудничаем со стандартным промежуточным программным обеспечением маршрутизации и навигации группы, чтобы обеспечить унифицированные возможности маршрутизации и навигации гибридного стека. стандартная маршрутизация.Реализуйте возможность гибридной навигации страниц Flutter и собственных страниц.
Подключаясь к платформе высокой доступности, контейнер предоставляет стандартные возможности мониторинга, такие как начальное отслеживание производительности и отчеты о сбоях, что обеспечивает основу для технического анализа производительности и устранения неполадок сервисов Flutter. Мобильный терминал Группы содержит полный набор стандартных систем промежуточного программного обеспечения, включая ряд базовых возможностей, таких как сетевая библиотека, библиотека изображений, push-сообщения, доставка конфигурации, сбор и мониторинг данных, а также беспрепятственное использование возможностей мобильного промежуточного программного обеспечения в системе Flutter. просто необходим для бизнеса.
В то же время ряд стандартных API-интерфейсов, сформированных во время построения системы апплетов, также в значительной степени реализовал абстракцию базовых возможностей полной операционной среды апплета, возможности стандартизированной системы доступа для системы Flutter и реализовали независимую от платформы кросс-платформенность. -конечные возможности.Это очень хорошее дополнение. Вместе с командой промежуточного программного обеспечения Taobao и командой апплетов мы инкапсулировали и стандартизировали базовое промежуточное программное обеспечение и реализацию API апплета на стороне Flutter, а также обеспечим систематическую поддержку промежуточного программного обеспечения Flutter и возможностей API в будущем.
▐ Стандартизировать сборки Flutter
Бизнес-приложения
▐ Департамент Сямэнь и группа поддержки бизнеса
В настоящее время специальная версия Taobao завершила преобразование подробного бизнеса Flutter и находится в сети.Использование Flutter может сократить человеческий вклад вдвое, в то время как ритм спроса остается неизменным, что сыграло очевидную роль в снижении давления бизнес-исследований. и разработка; в то же время общая производительность и стабильность приложения в основном такие же, как и Native.
Последующие специальные выпуски продолжат расширять масштабы преобразования бизнеса на основе Flutter и ускорять решения для бизнес-доменов на основе Flutter.
В настоящее время Hema, ICBU и Youku также обновили доступ к контейнерам и бизнес-адаптацию на основе AliFlutter. Hema использует игровой движок Xianyu Flutter для реализации бизнеса города Hema. ICBU использует Flutter на основных страницах, связанных со ссылками, сценариях Youku, таких как порядок членства. страницы реализованы на основе Flutter. В то же время мы также изучаем настольные решения Flutter с Dingding и Google.
▐ Флаттер Холст
С ростом числа интерактивных сценариев в маркетинге событий электронной коммерции и постоянным улучшением требований к производительности ключевым вопросом стал вопрос о том, как обеспечить высокопроизводительную и стабильную базовую возможность Canvas для обслуживания интерактивных сценариев с богатым взаимодействием.
В сценарии мини-программы Canvas играет важную роль как основная возможность переноса интерактивных игр. Однако из-за изолированного дизайна контекста приложения и контекста страницы в архитектуре апплета существует узкое место при обмене данными между рабочим приложением и средством визуализации страницы, и производительность веб-холста не может быть полностью использована. , его можно напрямую реализовать в родном приложении. Слой подключается к рабочему приложению, чтобы снизить затраты на связь и полностью использовать производительность Canvas.
Нижний слой Flutter основан на Skia, и его производительность и адаптивность к сложным и разнородным мобильным моделям были протестированы в течение длительного времени.Браузерный дизайн Flutter реализует независимый от платформы конвейер рендеринга и приложил большие усилия в браузере. Значительное упрощение, обеспечивающее высокую надежность и производительность. Затем, если этот конвейер рендеринга можно использовать напрямую для предоставления возможностей Canvas бизнес-контейнерам, а стандартные API-интерфейсы, совместимые с Web Canvas, можно напрямую предоставлять аплетам и небольшим игровым контейнерам с помощью методов привязки, с одной стороны, базовые возможности Flutter могут могут быть повторно использованы, что не является проблемой для среды, отличной от Dart. Среда обеспечивает поддержку рендеринга, а с другой стороны, Flutter может упростить эффективную реализацию конвейера рендеринга, чтобы обеспечить лучшую производительность рендеринга.
В настоящее время Flutter Canvas запущен на мобильном Taobao и провел пилотный проект в градациях серого в мини-программе спортивного банковского бизнеса.Изначально он может выполнять мини-программу Canvas для бизнеса; его производительность имеет преимущества на недорогих Android машин и может использоваться как решение Web Canvas, полезное дополнение.
В будущем Flutter Canvas будет использовать кроссплатформенные и высокопроизводительные функции конвейера рендеринга Flutter, а также поддержку адаптации Flutter для Vulkan и Metal, чтобы получить лучшую адаптируемость и производительность на мобильной стороне; в то же время, он будет продолжать внедрять 3D API, поддерживать будущие интерактивные бизнес-приложения.
будущее строительство
- С точки зрения кросс-конечных возможностей:Хотя Flutter обладает хорошей способностью пересекать несколько терминалов и высокой степенью сокращения, когда речь идет о возможностях платформы, его все еще необходимо реализовать за счет расширения каждого терминала, и еще не сформирован стандартизированный контейнер и возможности упаковки API, такие как в виде небольшой программной системы. Так как же лучше решить проблему контейнеризации Flutter, чтобы бизнес не воспринимал платформенные различия?
- С точки зрения способности к взаимодействию:Как Flutter использует свои собственные интерактивные возможности, чтобы обеспечить богатый интерактивный опыт, сравнимый с внешним интерфейсом, при этом снижая порог для разработки нативных богатых интерактивных функций и действительно привлекая нативных разработчиков к использованию технологии Flutter для развития бизнеса?
- С точки зрения эффективности НИОКР бизнеса:Хотя механизм Flutter Hot Reload/Hot UI позволил повысить эффективность разработки нативных страниц по сравнению с внешним интерфейсом, все еще есть много возможностей для улучшения инженерной развязки, и в настоящее время он не может эффективно поддерживать параллельную разработку нескольких бизнес-процессов. команды; с другой стороны, как объединить его с популярными бессерверными возможностями для реализации интегрированной модели НИОКР устройства и облака, чтобы бизнес мог реализовать замкнутый цикл НИОКР, также нуждается в проверке на практике.
- С точки зрения эффективности доставки бизнеса:В настоящее время Flutter по-прежнему относится к нативному решению, которое опирается на сквозную версию, а эффективность доставки низкая и не может полностью удовлетворить потребности в гибкости и эффективности системы электронной коммерции. решить динамическую природу Flutter и помочь бизнесу добиться быстрой итерации?
▐ Улучшение кросс-конечных возможностей: контейнеризация Flutter
API-интерфейс апплета хорошо зарекомендовал себя.В настоящее время API-интерфейс, предоставляемый системой апплетов Alibaba, достиг 200+, что очень хорошо для мобильного пользовательского интерфейса, мультимедиа, кэширования файлов, сети, возможностей устройств, безопасности данных и бизнес-приложений. Он инкапсулирован, что позволяет бизнес-разработчикам вызывать возможности системы для API на стороне апплета, не заботясь о реализации платформы.
Если мы сможем достичь унифицированного интерфейса в собственной реализации API, а затем предоставить интерфейсы для бизнес-использования через каждый контейнер, мы сможем лучше добиться закрытия и добиться унифицированного планирования, управления и контроля над системными ресурсами в контейнерах на унифицированном уровне реализации. .
▐ Улучшение интерактивных возможностей: пользовательский интерфейс + игровой движок
Лично я считаю, что эта точка опоры должна основываться на обобщении возможностей игрового взаимодействия, преодолении границы между пользовательским интерфейсом и игровым движком, использовании геймификации для создания более выразительного интерактивного опыта и создания нового игрового процесса и ценности для бизнеса.
Если в игровом приложении есть требование к пользовательскому интерфейсу, решение, как правило, состоит в том, чтобы создать простую систему пользовательского интерфейса и систему событий отдельно, а также наложить пользовательский интерфейс в игре путем самостоятельного рисования, как в случае с независимым игровым движком.
Мы считаем, что исследования в этом направлении еще больше раскроют технический потенциал Flutter, принесут больше возможностей для игр и творчества для бизнеса, высвободят воображение продуктов и дизайна и создадут большую ценность для бизнеса.
▐ Повышение эффективности НИОКР: инженерное разделение и интеграция устройств и облака
Инженерная развязка флаттера
С точки зрения инженерной развязки текущий контейнер AliFlutter в основном реализует развязку разработки страниц с помощью гибридного стека и стандартных возможностей маршрутизации.В будущей конструкции контейнеризации, предоставляя инкапсуляцию возможностей API апплета, бизнес не знает о платформе. и можем сделать У нас есть возможность отделить бизнес-исследования и разработки и получить опыт и эффективность исследований и разработок, которые близки к таковым при разработке мини-программ.
Интеграция устройства и облака
Сочетая облегченную контейнерную среду, возможность многоязычной поддержки и унифицированное серверное программирование API, учащиеся конечных сторон могут легко использовать клиентские языки, такие как Java, JS, Swift и даже Dart, для разработки бизнес-возможностей на стороне сервера. , а также реализовать оркестровку и обслуживание услуг.Конечная бизнес-логика FaaS и API генерируются автоматически для достижения унификации интерфейсных и серверных инженерных систем и эффекта замкнутого цикла бизнес-исследований и разработок.
Перемещая исходный интерфейс запроса на стороне клиента, собирая данные и преобразовывая логику в ViewModel на сервер, посредством сопоставления полей и макета страницы, мобильный терминал может напрямую получать ViewModel и обновлять страницу, а также двусторонние интерактивные данные состояния. через BinderAction, детали связи защищены, а эффективность разработки повышена.
Хорошие сквозные функции Flutter могут защитить сквозную дифференциацию, а преобразование Flutter в контейнеры еще больше упрощает бизнес-модель R&D с полной связью.
В будущем, в рамках модели FaaS, как ускорить набор общих сред планирования связи на стороне терминала и на стороне сервера, которые могут служить бизнес-исследованиям и разработкам группы, чтобы разработчики Flutter и предприятия группы могли пользоваться преимуществами бессерверных технологий. технологии и облачная интеграция Новые вопросы, которые нам необходимо изучить и определить вместе.
▐ Повышение эффективности доставки: динамизм флаттера
По моему мнению, основная проблема, которую должна решить динамическая технология, заключается в поиске разумного баланса между технической производительностью, эффективностью бизнес-итераций и гибкостью при условии обеспечения уверенности в бизнес-релизе.
Решение для динамических шаблонов представляет собой относительно зрелый набор шаблонных решений, основанных на технологии Native в группе. Оно ориентировано на рендеринг шаблонов пользовательского интерфейса без логики выполнения и среды выполнения. В настоящее время оно широко используется в некоторых основных бизнес-сценариях отдела электронной коммерции.
В системе Flutter команда Xianyu реализовала набор Dart SDK на стороне Flutter в соответствии со стандартным протоколом шаблонов и реализовала облегченную возможность оркестровки динамических компонентов на стороне Flutter посредством доставки шаблонов; и постепенно решила эту проблему с помощью более чем один год итераций. Он решает проблемы производительности рендеринга и согласованности рендеринга, а также лучше включает динамические возможности компонентов бизнеса Flutter.
Web on Flutter
В настоящее время небольшое программное решение, основанное на веб-рендеринге, имеет проблемы с производительностью, такие как большое время запуска и большой разрыв между производительностью рендеринга и собственным пользовательским интерфейсом.Эти проблемы в значительной степени связаны с бременем истории разработки движка браузера (сложный конвейер рендеринга). , многопроходная компоновка CSS и устаревшая реализация и т. д.), а также низкая эффективность связи JS-Native (мост).
В то же время виджеты Flutter продуманы до мелочей, а основные элементы, такие как атрибуты структурного макета, выражаются с помощью виджетов, а сложные компоненты могут быть сформированы с помощью комбинации основных виджетов. Возможность вертикальной стыковки различных НИОКР.
Но с точки зрения собственной разработки Flutter, поскольку существующие собственные возможности Flutter могут удовлетворить потребности бизнеса, ограниченная реализация CSS также может предоставить возможности, эквивалентные Flutter, для решения бизнес-задач. В то же время ограниченный CSS можно обменять на высокую производительность, сравнимую с Flutter, что вносит качественные изменения в производительность по сравнению с веб-реализацией.
Мы реализовали прототип этой идеи в рамках внутреннего проекта в конце 2018 года. Мы использовали C++ для перезаписи возможностей среднего и низкого уровня в фреймворке Dart, таких как виджеты, рендеринг, отрисовка и управление событиями Flutter, а также внедрили CSSOM + DSL в C++ для виджетов. -> Отзывчивая структура виджетов обеспечивает реализацию рендеринга непосредственно из уровня C++ и переносит расширение шаблона, вычисление древовидных различий и рендеринг, традиционно выполняемые JS, на уровень C++, а также реализует возможность diff из дерево виджетов, предоставляемое Flutter для дерева RenderObjects, что значительно повышает производительность.
Благодаря простой демонстрации производительность веб-рендеринга относительно небольших программ была значительно улучшена. Проблема с этим подходом заключается в долгосрочной поддержке разделения с кодовой базой Google.«Как соединить Flutter и веб-экосистему»В этой статье проводится более полное сравнение нескольких идей, которые группа пробовала в этом направлении. В будущем мы продолжим углубленное и непрерывное исследование в этом направлении.
Резюме и перспективы
Прежде чем команда мобильных технологий начала проект AliFlutter, технологический отдел Xianyu провел много исследований и инвестиций в создание технологии Flutter.
С другой стороны, он накопил технические и бизнес-решения Flutter и благодаря обратной связи с открытым исходным кодом для сообщества установил значительное техническое влияние и лидерство в техническом сообществе Flutter дома и за рубежом, и появилось несколько технических экспертов Flutter.
Далее, ключевая задача AliFlutter — создать поле Flutter на групповом уровне вместе с новаторскими приложениями, такими как Xianyu и Fortune, а также практиками Flutter, такими как Hema, Dingding, Fliggy, Youku, Ele.me и CBU. поднимите и подтяните экосистему Flutter группы, чтобы технологии и опыт можно было накапливать и совместно использовать, и вместе давайте сделаем технологическую систему Flutter больше и сильнее в экосистеме приложений Ali и действительно станем основной моделью исследований и разработок для бизнес группы, и пусть все участвуют Каждый может извлечь из этого пользу.