RSS

Комментарии

Хорошая статья. От себя добавим. Выпускать приложения для лишь одной мобильной платформы – не актуально и нужно заботиться о разработке сразу двух версий, для iOS и Android. И здесь можно выбрать два пути: работать на «нативных» языках программирования для каждой операционной системы или использовать кроссплатформенные фреймворки.

При разработке одного из проектов в компании DD Planet я сделал ставку на последний вариант. И в этой статье расскажу об опыте разработки кроссплатформенного приложения, проблемах, с которыми мы столкнулись, и найденных решениях.

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

Для начала рассмотрим, какие подходы используются, когда нужно получить сразу два приложения: под iOS и Android.

Первый – cамый затратный, как по времени, так и по ресурсам: разработка отдельного приложения для каждой из платформ. Сложность этого подхода заключается в том, что каждая из операционных систем требует своего подхода: это выражается как в языке, на котором ведется разработка (для Android – Java или Kotlin, для iOS – Objective-C или Swift), так и способах описания UI части приложения (axml и xib или storyboard файлы соответственно).

Уже этот факт подводит нас к тому, что для такого подхода необходимо формирование двух команд разработчиков. Помимо этого придется дублировать логику для каждой из платформ: взаимодействие с api и бизнес-логику.

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

Использование кроссплатформенного фреймворка (Xamarin.Forms, например) дает возможность писать код на одном языке программирования и описать логику данных и логику UI один раз, в одном месте. Поэтому необходимость использовать две команды разработчиков отпадает. А по итогу компиляции проекта на выходе получаем два нативных приложения. И это – второй подход.

Многие, думаю, знают, что такое Xamarin, или хотя бы слышали о нем, но как это работает? Xamarin основан на open-source реализации платформы .NET — Mono. Mono включает в себя собственный компилятор C#, среду выполнения, а также ряд библиотек, включая реализацию WinForms и ASP.Net.

Цель проекта — позволить запускать программы, написанные на C#, на операционных системах, отличных от Windows — Unix-системах, Mac OS и других. Сам же фреймворк Xamarin, по сути своей – библиотека классов, предоставляющей разработчику доступ к SDK платформы и компиляторы для этих них. Xamarin.Forms, в свою очередь, позволяет не только писать под обе платформы на одном языке, но проектировать дизайн экранов с использованием XAML разметки, привычной тем, кто уже имел опыт работы с WPF приложениями. В итоге сборки проекта получаем практически идентичный вид на всех платформах, так как на этапе компиляции все XF контролы преобразовываются в нативные для каждой платформы.

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

Один язык программирования, мало кода и так далее. Все это звучит красиво но, Xamarin.Forms – не серебряная пуля, и вся его красота разбивается о камни реальности. Как только возникает ситуация, когда встроенные в XF-контролы уже не отвечают предъявленным к ним требованием, структура экранов и контролов становится всё сложнее и сложнее. Для обеспечения комфортной работы с экранами из общего проекта приходится писать все больше и больше кастомных рендеров.

На этом перейду к третьему подходу, который мы и используем при разработке приложений.

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

Имеем все те же три проекта: общий PCL проект, но уже без Xamarin Forms, и два проекта Xamarin Android и Xamarin iOS. По-прежнему имеется возможность писать всё на одном языке, общая логику между двумя проектами, но нет ограничений единой XAML разметки. UI-составляющая контролируется каждой из платформ и использует нативные средства, на Android – нативный AXML, на iOS – XIB-файлы. Каждая платформа имеет возможность соблюдать свои гайдлайны, так как связь между Core и платформенными проектами организовывается только на уровне данных.

Для организации такой связи можно использовать паттерн проектирования MVVM и достаточно популярную его реализацию для Xamarin – MVVMCross. Его использование позволяет держать общую ViewModel для каждого экрана, где описана вся “бизнес-логика” работы, а его отрисовку доверить платформе. Так же это позволяет двум разработчикам работать с одним и тем же экраном (один с логикой — другой с UI) и не мешать друг другу. Кроме реализации паттерна, получаем достаточное количество инструментов для работы: реализация DI и IoC. Для подъема взаимодействия с платформой на уровень общего кода разработчику достаточно объявить интерфейс и реализовать его на платформе. Для типовых вещей MvvmCross уже предоставляет набор собственных плагинов. В команде мы используем плагин мессенджера для обмена сообщениями между платформой и общим кодом и плагин для работы с файлами (выбор изображений из галереи и др.).
Кроссплатформенная разработка позволяет сэкономить время и деньги;

Создавать приложение со сложным дизайном удобнее, описывая его на платформе, а не в общем коде;

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

Абсолютное позиционирование и ленивая инициализация позволяют реализовывать сложные и ресурсоемкие экраны;

SignalR – удобное решение для двустороннего клиент-серверного взаимодействия в реальном времени;

При обновлении данных в реальном времени нельзя мешать пользователю взаимодействовать с приложением;

Взгляд на проблему под разными углами позволяет найти удачное, а иногда и необычное, решение;

Используйте десятки контроллеров на одном экране, устанавливайте несколько SignalR-соединений, переворачивайте экраны, пишите код, оптимизируйте, экспериментируйте.

Если говорить о масштабирование DST Store в DST маркетплейс то любая версия DST Store может обновиться до DST Marketplace без остановки работы сайта.

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

Оплата и переход на новую лицензию. Для перехода на DST Marketplace нужно написать куратору и доплатить разницу. Разница составляет примерно 400 000 рублей.

Никаких сверх оплат не будет.

Также переход на маркетплейс можно сделать в любой момент, независимо от срока давности.

Кстати возможно потребуется расширение сервера, что можно сделать бесплатно в DST.
Если говорить о масштабирование DST Store в DST маркетплейс то любая версия DST Store может обновиться до DST Marketplace без остановки работы сайта.

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

Оплата и переход на новую лицензию. Для перехода на DST Marketplace нужно написать куратору и доплатить разницу. Разница составляет примерно 400 000 рублей.

Никаких сверх оплат не будет.

Также переход на маркетплейс можно сделать в любой момент, независимо от срока давности.

Кстати возможно потребуется расширение сервера, что можно сделать бесплатно в DST.
Если говорить о масштабирование DST Store в DST маркетплейс то любая версия DST Store может обновиться до DST Marketplace без остановки работы сайта.

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

Оплата и переход на новую лицензию. Для перехода на DST Marketplace нужно написать куратору и доплатить разницу. Разница составляет примерно 400 000 рублей.

Никаких сверх оплат не будет.

Также переход на маркетплейс можно сделать в любой момент, независимо от срока давности.

Кстати возможно потребуется расширение сервера, что можно сделать бесплатно в DST.
Если говорить о масштабирование DST Store в DST маркетплейс то любая версия DST Store может обновиться до DST Marketplace без остановки работы сайта.

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

Оплата и переход на новую лицензию. Для перехода на DST Marketplace нужно написать куратору и доплатить разницу. Разница составляет примерно 400 000 рублей.

Никаких сверх оплат не будет.

Также переход на маркетплейс можно сделать в любой момент, независимо от срока давности.

Кстати возможно потребуется расширение сервера, что можно сделать бесплатно в DST.
Да, перейти с DST Store на DST Marketplace можно без дополнительных затрат. Для этого необходимо выполнить следующие шаги:

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

Доплатить разницу в стоимости между лицензиями.

Важно отметить, что никаких сверх оплат с вас никто не возьмёт.
Да, перейти с DST Store на DST Marketplace можно без дополнительных затрат. Для этого необходимо выполнить следующие шаги:

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

Доплатить разницу в стоимости между лицензиями.

Важно отметить, что никаких сверх оплат с вас никто не возьмёт.
Да, перейти с DST Store на DST Marketplace можно без дополнительных затрат. Для этого необходимо выполнить следующие шаги:

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

Доплатить разницу в стоимости между лицензиями.

Важно отметить, что никаких сверх оплат с вас никто не возьмёт.
Да, перейти с DST Store на DST Marketplace можно без дополнительных затрат. Для этого необходимо выполнить следующие шаги:

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

Доплатить разницу в стоимости между лицензиями.

Важно отметить, что никаких сверх оплат с вас никто не возьмёт.
Мы сейчас работаем напряму с клиентами сами, но в дальнейшем планируем привлечь поставщиков и вырасти до маркетплейса. Можно ли перейти с DST Store на DST Marketplace без дополнительных затрат?
Мы сейчас работаем напряму с клиентами сами, но в дальнейшем планируем привлечь поставщиков и вырасти до маркетплейса. Можно ли перейти с DST Store на DST Marketplace без дополнительных затрат?
Мы сейчас работаем напряму с клиентами сами, но в дальнейшем планируем привлечь поставщиков и вырасти до маркетплейса. Можно ли перейти с DST Store на DST Marketplace без дополнительных затрат?
Мы сейчас работаем напряму с клиентами сами, но в дальнейшем планируем привлечь поставщиков и вырасти до маркетплейса. Можно ли перейти с DST Store на DST Marketplace без дополнительных затрат?
Для создания успешной доски объявлений по моему мнению, необходимо тщательно выбирать перспективное направление, учитывая рыночные тренды, спрос, конкуренцию и собственные ресурсы. Наиболее перспективными направлениями являются:

— Тематические доски объявлений: Ориентированные на конкретные ниши (недвижимость, авто, работа, цифровые товары и т.д.).
— Региональные доски объявлений: Сосредоточенные на конкретных географических регионах.
— Рынки, связанные с инновациями: Технологии, электронная коммерция, зелёная энергетика, здоровье и фитнес.

Ну а для быстрого запуска и эффективного управления доской объявлений рекомендуется использовать платформы, такие как DST Доска объявлений, которые предоставляют широкий функционал, интуитивно понятный интерфейс и возможности для масштабирования бизнеса.
Современные ИТ-системы, характеризующиеся сложными, взаимосвязанными и облачными архитектурами, подвержены различным типам инцидентов, начиная от сбоев оборудования и заканчивая проблемами с облачными сервисами. Эти инциденты могут серьезно повлиять на доступность сервисов и доходы. Эффективное управление ИТ-инцидентами, включающее централизованную регистрацию и отслеживание, необходимо для быстрого восстановления нормальной работы.

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

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

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

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

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

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

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

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

Весь процесс настройки и наполнения сайта занял у нас минимум времени, что позволило сразу же приступить к продвижению и привлечению клиентов.

В итоге, мы получили не просто доску объявлений, а полноценную платформу, которая стала нашим основным инструментом для взаимодействия с рынком и монетизации наших услуг. Этот опыт показал, что правильный выбор платформы — залог быстрого и успешного старта в современном бизнесе.
Спасибо за ответы, а что думаете по поводу DST Board, у кого какой был опыт?