Напишите нам прямо сейчас, наши специалисты расскажут об услугах и ответят на все Ваши вопросы.
Напишите нам прямо сейчас, наши специалисты расскажут об услугах и ответят на все Ваши вопросы.
Наш специалист свяжется с Вами, обсудит оптимальную стратегию сотрудничества, поможет сформировать бизнес требования и рассчитает стоимость услуг.
Наш специалист свяжется с Вами, обсудит оптимальную стратегию сотрудничества, поможет сформировать бизнес требования и рассчитает стоимость услуг.
Заполните онлайн-заявку и получите выгодное спецпредложение прямо сейчас.
За вами будет закреплен персональный менеджер, который расскажет о платформе, ответит на все ваши вопросы и сформирует для вас коммерческое предложение.
Наш специалист свяжется с Вами и
обсудит время собеседования.
При разработке одного из проектов в компании 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 Marketplace нужно написать куратору и доплатить разницу. Разница составляет примерно 400 000 рублей.
Никаких сверх оплат не будет.
Также переход на маркетплейс можно сделать в любой момент, независимо от срока давности.
Кстати возможно потребуется расширение сервера, что можно сделать бесплатно в DST.
База данных и структура у них одна и та же, поэтому не нужно менять товары или дизайн.
Оплата и переход на новую лицензию. Для перехода на DST Marketplace нужно написать куратору и доплатить разницу. Разница составляет примерно 400 000 рублей.
Никаких сверх оплат не будет.
Также переход на маркетплейс можно сделать в любой момент, независимо от срока давности.
Кстати возможно потребуется расширение сервера, что можно сделать бесплатно в DST.
База данных и структура у них одна и та же, поэтому не нужно менять товары или дизайн.
Оплата и переход на новую лицензию. Для перехода на DST Marketplace нужно написать куратору и доплатить разницу. Разница составляет примерно 400 000 рублей.
Никаких сверх оплат не будет.
Также переход на маркетплейс можно сделать в любой момент, независимо от срока давности.
Кстати возможно потребуется расширение сервера, что можно сделать бесплатно в DST.
База данных и структура у них одна и та же, поэтому не нужно менять товары или дизайн.
Оплата и переход на новую лицензию. Для перехода на DST Marketplace нужно написать куратору и доплатить разницу. Разница составляет примерно 400 000 рублей.
Никаких сверх оплат не будет.
Также переход на маркетплейс можно сделать в любой момент, независимо от срока давности.
Кстати возможно потребуется расширение сервера, что можно сделать бесплатно в DST.
Для этого нужно написать своему куратору, который работает с вами, о желании перейти с одной лицензии на другую.
Доплатить разницу в стоимости между лицензиями.
Важно отметить, что никаких сверх оплат с вас никто не возьмёт.
Для этого нужно написать своему куратору, который работает с вами, о желании перейти с одной лицензии на другую.
Доплатить разницу в стоимости между лицензиями.
Важно отметить, что никаких сверх оплат с вас никто не возьмёт.
Для этого нужно написать своему куратору, который работает с вами, о желании перейти с одной лицензии на другую.
Доплатить разницу в стоимости между лицензиями.
Важно отметить, что никаких сверх оплат с вас никто не возьмёт.
Для этого нужно написать своему куратору, который работает с вами, о желании перейти с одной лицензии на другую.
Доплатить разницу в стоимости между лицензиями.
Важно отметить, что никаких сверх оплат с вас никто не возьмёт.
— Тематические доски объявлений: Ориентированные на конкретные ниши (недвижимость, авто, работа, цифровые товары и т.д.).
— Региональные доски объявлений: Сосредоточенные на конкретных географических регионах.
— Рынки, связанные с инновациями: Технологии, электронная коммерция, зелёная энергетика, здоровье и фитнес.
Ну а для быстрого запуска и эффективного управления доской объявлений рекомендуется использовать платформы, такие как DST Доска объявлений, которые предоставляют широкий функционал, интуитивно понятный интерфейс и возможности для масштабирования бизнеса.
Современное программное обеспечение для управления инцидентами, использующее искусственный интеллект, автоматизацию и мониторинг в реальном времени, играет ключевую роль в выявлении, диагностике и устранении сложных сбоев в этих распределенных системах. Важно отличать инциденты от операционных событий и проблем, чтобы эффективно управлять и предотвращать повторные сбои.
Ключевым преимуществом внедрения интеллектуальных систем управления инцидентами является их способность к самообучению и адаптации. Анализируя каждый инцидент, ИИ-система совершенствует свои алгоритмы, что позволяет более эффективно справляться с аналогичными проблемами в будущем.
Важным аспектом современного управления инцидентами становится предиктивная аналитика, позволяющая выявлять потенциальные угрозы до того, как они перерастут в серьезные проблемы. Это особенно актуально для распределенных систем, где зависимость между различными компонентами может быть неочевидной.
Комплексное решение, объединяющее возможности искусственного интеллекта, автоматизацию рутинных процессов и непрерывный мониторинг в реальном времени, создает надежную защиту от различных типов инцидентов — от аппаратных сбоев до кибератак. Такой подход не только минимизирует время простоя систем, но и существенно повышает общую устойчивость ИТ-инфраструктуры к различным видам угроз.
В условиях растущей зависимости бизнеса от цифровых технологий эффективное управление инцидентами становится не просто технической задачей, а стратегическим приоритетом для любой организации, стремящейся сохранить конкурентоспособность на рынке.
Внедрение искусственного интеллекта в процессы управления инцидентами позволяет не только оперативно реагировать на возникающие проблемы, но и предвидеть потенциальные угрозы, анализируя огромные массивы данных в режиме реального времени. Интеллектуальные системы способны выявлять скрытые закономерности и аномалии, которые могут ускользнуть от внимания даже опытных специалистов.
Автоматизация процессов восстановления после сбоев существенно сокращает время простоя систем и минимизирует финансовые потери компании. Особенно это актуально для распределенных облачных архитектур, где традиционные методы мониторинга и устранения неполадок часто оказываются недостаточно эффективными.
Интегрированный подход к управлению инцидентами, сочетающий возможности ИИ, автоматизацию и непрерывный мониторинг, позволяет создать проактивную систему защиты, способную не только устранять последствия сбоев, но и предотвращать их возникновение.
Весь процесс настройки и наполнения сайта занял у нас минимум времени, что позволило сразу же приступить к продвижению и привлечению клиентов.
В итоге, мы получили не просто доску объявлений, а полноценную платформу, которая стала нашим основным инструментом для взаимодействия с рынком и монетизации наших услуг. Этот опыт показал, что правильный выбор платформы — залог быстрого и успешного старта в современном бизнесе.