В этом уроке вы узнаете, как архитектор ПО принимает решение об использовании толстого и тонкого клиента при проектировании мобильного приложения и какие технологии используются для их реализации.
Даня
Я вот заглянул в магазин приложений — там есть приложение Оtium 🧐
Айгуль
Ну, логично. У большинства онлайн-кинотеатров есть мобильные приложения, это очень удобно.
Даня
Это понятно. Вопрос в другом — какая у этого приложения архитектура? Какая-то своя? Мобильная? 😆
Айгуль
Архитектура мобильных приложений тоже построена на основе клиент-серверного стиля.
Даня
Так, а клиент какой? Сколько звеньев?
Айгуль
Стоп, давай по порядку. Всё объясню 🤓
Мобильные устройства
Мобильные устройства — это не только смартфоны, но и планшеты, умные устройства, которые носят на лице и теле (часы, очки, браслеты), умные колонки и многое другое. Люди и организации используют их, чтобы выполнять рабочие задачи, управлять финансами, обучением, развлечениями, занятиями спортом.
Мобильные устройства от настольных компьютеров и ноутбуков отличает большое разнообразие:
Технических характеристик
Например, первый Apple iPad имел процессор A4, тогда как современный iPad оснащён уже процессором А13.
Разрешений экранов
Например, Apple Watch 7 (41 мм) имеет разрешение 352×430 пикселей, а планшет Huawei MatePad T10s — 1920x1200 пикселей.
Возможностей, которые может использовать мобильное приложение
Например, GPS-трекер, гироскоп, сканер пространства (LiDAR), сканер объёмно-пространственной формы лица человека (Face ID), сканер отпечатка пальца.
Операционных систем
Например, Apple iPad работает с iPadOS, Apple Watch c watchOS, а умная колонка с голосовым помощником HomePod— c tvOS.
Мобильные устройства также отличаются портативностью. Пользователь может брать такие устройства с собой, поскольку они маленького размера и взаимодействуют с другими устройствами с помощью беспроводных технологий — WLAN, WiFi, 2G, 3G, 4G LTE (Long-Term Evolution) и прочих.
Мобильные приложения также имеют клиент-серверную архитектуру, в связи с чем архитектор ПО должен определить, как будет распределяться бизнес-логика между клиентом (мобильным устройством) и сервером. Он может спроектировать архитектуру с использованием:
Толстого клиента.
Тонкого клиента.
Архитектура может быть двухзвенной, трёхзвенной или многозвенной. Организация серверов мобильных приложений не отличается от приложений для настольных компьютеров и ноутбуков.
Толстый клиент
Если будущее мобильное приложение использует возможности устройства и редко обращается к серверу, архитектор ПО может выбрать толстый клиент.
Например, мобильное приложение для бега использует GPS-трекер устройства, чтобы отслеживать продвижение бегуна по маршруту. Такое приложение может редко обращаться к серверу, например, только для передачи данных о завершённой пробежке.
Толстый клиент мобильного приложения выполняет:
Логику представления.
Бизнес-логику.
Логику доступа к данным.
На стороне сервера остаётся хранение данных.
Поскольку мобильные устройства легко брать с собой, они могут использоваться в местах, где связь недоступна. Поэтому в отдельных случаях приложение может временно сохранять данные на мобильное устройство.
Например, пока мобильное устройство подключено к сети, оно передаёт данные о маршруте на сервер. Когда оно теряет подключение (если бегун поднялся в гору или убежал в лес), приложение может сохранить данные о маршруте на устройство, чтобы при первой возможности передать их на сервер. Хранение данных на сервере позволяет бегуну видеть свои маршруты с разных устройств, в том числе с ноутбука.
Толстые клиенты мобильных приложений это:
Почта, которая может хранить письма на мобильном устройстве.
Например, Microsoft Outlook, Gmail, Яндекс Почта.
Календарь, который может работать в оффлайн-режиме, то есть без постоянного взаимодействия с сервером. Календарь может обращаться к серверу для получения и отправки изменений в расписании, чтобы данные календаря были синхронизированы на всех устройствах.
Стандартное приложение с функцией календаря, как правило, предустановлено во множестве операционных систем мобильных устройств.
Тонкий клиент
Если будущее мобильное приложение нуждается в значительных вычислительных мощностях и/или будет всегда подключено к сети во время работы, то архитектор ПО может выбрать тонкий клиент.
Мобильные устройства по определению должны быть компактнее настольных компьютеров и ноутбуков. Инженеры-проектировщики вынуждены идти на компромиссы между размером мобильных устройств и их техническими характеристиками. Поэтому, как правило, мобильные устройства обладают меньшими вычислительными мощностями, чем, например, серверы.
В связи с этим чаще всего в архитектуре мобильных приложений мобильные устройства являются тонкими клиентами. Они выполняют только логику представления, тогда как сервер:
Поисковые системы, пользователи которых нуждаются в актуальных результатах поисковых запросов.
Например, Google, Яндекс, Yahoo!, Baidu, Bing, DuckDuckGo, Ask, AOL.
Интернет-магазины, клиенты которых нуждаются в актуальной информации о товарах.
Например, Яндекс Маркет, OZON, Amazon, М.Видео.
По описанию будущего мобильного приложения определите, какой тип клиента будет использоваться в его архитектуре.
Мобильное приложение должно предоставлять пользователям возможность скачать электронные книги на устройство, читать их офлайн и добавлять к ним заметки. Оно будет обращаться к серверу для загрузки новых книг и для синхронизации библиотеки на разных устройствах.
Толстый клиент
Основные данные будут храниться на мобильном устройстве, а к серверу приложение будет обращаться редко — только для загрузки книг, поэтому в его архитектуре используется толстый клиент.
Мобильное приложение должно предоставлять пользователям возможность записаться на тренировку в ближайший тренажёрный зал при наличии там свободных мест.
Тонкий клиент
Данные о тренировках приложение будет получать с сервера, а на стороне клиента только их отображение, значит, это тонкий клиент.
Мобильное приложение позволяет управлять умным домом, локально сохраняя карты комнат с подключёнными устройствами и показания датчиков.
Толстый клиент
Приложение будет использовать возможности мобильного устройства для сохранения карт и показаний датчиков, поэтому это толстый клиент.
Мобильное приложение должно предоставлять пользователям возможности заказа спортивной одежды и аксессуаров с учётом актуальных акций и специальных предложений.
Тонкий клиент
Приложение будет выполнять только логику представления, то есть отображать получаемую информацию и отправлять нужные запросы на сторону сервера. Всё остальное будет отдано серверу. Поэтому приложение в данном случае — это тонкий клиент.
Мобильное приложение должно предоставлять пользователям возможность мониторинга пульса и уведомлять их о наличии тахикардии.
Толстый клиент
Так как приложение будет использовать возможности мобильного устройства, получая доступ к данным сбора пульса, это толстый клиент.
Даня
Получается, у мобильного приложения Оtium — тонкий клиент? 😏
Айгуль
Да! Потому что требуется стабильное соединение с сетью, и нет тяжеловесных функций вроде расчётов. Ещё многое зависит от того, как реализовано ПО клиента.
Даня
Не очень понимаю, о чём ты.
Айгуль
Смотри, вот приложение Оtium — нативное.
Даня
Да?! 😅
Айгуль
Конечно! Нужно это обсудить.
Технологии разработки мобильных приложений
В реализации программного обеспечения толстого и тонкого клиента существует множество особенностей. Они проявляются особенно ярко, когда речь заходит о мобильных приложениях в силу отличий между мобильными устройствами и настольными компьютерами.
Существует три основных технологии разработки мобильных приложений:
Нативное приложение.
Мобильное веб-приложение.
Многофункциональное интернет-приложение.
ПО толстого и тонкого клиента может быть реализовано как нативное приложение. При этом, как правило, ПО тонкого клиента использует для работы веб-браузер.
Нативные приложения
Для разных устройств одного производителя, как правило, предусмотрены отдельные операционные системы. Например, Apple iPad работает с iPadOS, Apple Watch c watchOS, а HomePod — c tvOS.
В таком случае команде разработки не остаётся иного выхода, кроме как реализовать отдельные мобильные приложения для каждой конкретной ОС. Такие приложения называют нативными.
Нативное приложение (Native Application) — это приложение, реализованное для работы с конкретной операционной системой.
Нативные приложения написаны на языке программирования, который специально разработан для конкретной ОС. Например, Swift для iOS, iPadOS, watchOS и tvOS. Это позволяет в полной мере использовать возможности операционной системы и самого устройства, а значит, обеспечивает наилучший вариант пользовательского взаимодействия.
Однако в случае, например, добавления функций в приложение, обновления ОС или замены устройства на новое, каждое нативное приложение должно быть изменено.
Например, после того, как в 2017 году Apple презентовала FaceID, клиентские мобильные приложения многих банков были обновлены для предоставления пользователям возможности авторизации с помощью этой технологии.
Также, если команда разработки реализовала нативные приложения для устройств Apple, то при появлении пользователей, владеющих устройствами Samsung, разработчиками придётся написать мобильное приложение с нуля.
Чтобы минимизировать издержки от реализации и поддержки нативных приложений, команды разработки используют кросс-платформенные фреймворки.
Кросс-платформенные фреймворки
Фреймворк (Framework) — это программная среда, которая упрощает и ускоряет разработку программного обеспечения за счёт готовых технических решений, функциональных и/или графических возможностей.
Кросс-платформенные фреймворки позволяют упростить и ускорить разработку ПО для различных операционных систем.
Разработчики могут создавать мобильные приложения с использованием единого набора исходного кода (например, на Javascript), а далее использовать фреймворки и «адаптировать» нативные приложения под разные устройства.
В этом случае, если в приложение под iOS или Android необходимо внести изменения, они вносятся в единый исходный код, а далее с помощью кросс-платформенного фреймворка соответствующие приложения обновляются.
Так, например, мессенджер Skype разработан с помощью фреймворка React Native, благодаря которому команды разработки могут добавить функции одновременно для нативных приложений для iOS и Android.
Мобильные веб-приложения
Мобильные веб-приложения независимы от операционной системы и могут запускаться на любом устройстве, на котором установлен веб-браузер. Они разрабатываются с использованием таких технологий, как HTML5.
Мобильные веб-приложения не могут использовать возможности устройства, предоставляют достаточно ограниченный пользовательский опыт и требуют доступа к сети.
Пример такого приложения — сайт новостного агентства, который открывается в веб-браузере на любом устройстве и подстраивается под разрешение экрана.
Многофункциональное интернет-приложение
Если будущее мобильное приложение нуждается в широких графических возможностях и должно быть переносимым на другие операционные системы (платформы), оно может быть реализовано как многофункциональное (насыщенное, обогащённое) интернет-приложение (Rich Internet Application — RIA).
RIA предоставляет те же графические и функциональные возможности, что и нативное приложение, поэтому его пользовательский интерфейс получил название насыщенным (Rich User Interface).
При этом в отличие от нативного приложения, RIA не требует установки на мобильное устройство и использует веб-браузер для работы. Таким приложениям может потребоваться установка дополнительного программного обеспечения. Например, плагинов для веб-браузера.
Они не нуждаются в существенной вычислительной мощности, поэтому подходят мобильным устройствам.
Ярким примером таких приложений являются системы поддержки принятия решений (СППР). Такие системы предназначены для представления важных для организации или отдельного человека данных в разных формах, преимущественно в графической. Так как в разное время и для разных решений пользователям требуются разные данные, то СППР предоставляют возможность настройки состава, расположения и размера элементов интерфейса.
В таких системах пользователь может настраивать внешний вид экранов на своё усмотрение, добавляя, удаляя, перемещая элементы интерфейса и изменяя их размер. Например, графики, таблицы, диаграммы, отчёты и карты.
СППР на мобильных устройствах помогают руководителям всегда иметь под рукой нужные данные.
Другими примерами многофункциональных интернет-приложений являются:
Системы управления содержимым (Content management system — CMS), которые позволяют управлять информацией веб-сайта без привлечения разработчиков.
Например, Joomla!, Drupal, WordPress.
Виртуальные рабочие столы, которые позволяют настраивать внешний вид экрана, используя, например, элементы интерфейсов разных веб-сайтов.
Например, NETVIBES, IFS Aurena.
Соотнесите описание мобильного приложения с технологией, которая используется для его разработки.
Приложение для iOS поддерживает только тёмный вариант оформления интерфейса, в то время как приложение для Android позволяет как собрать свой вариант оформления интерфейса, так и выбрать один из готовых.
Нативное приложение
Так как для разных платформ реализован разный вариант интерфейса, речь идёт о нативном приложении.
Сайт небольшого интернет-магазина можно открыть в браузере на iOS и Android.
Мобильное веб-приложение
Сайт открывается в браузере и не использует никаких дополнительных возможностей мобильного устройства, поэтому речь идёт о мобильном веб-приложении.
Система открывается в веб-браузере и позволяет создать веб-сайты без привлечения разработчиков.
Многофункциональное интернет-приложение
Это пример многофункционального интернет-приложения. Оно предоставляет те же графические и функциональные возможности, что и нативное приложение, но при этом требует для запуска и работы только веб-браузер.
Подведём итоги
От настольных компьютеров и ноутбуков мобильные устройства отличает разнообразие:
Технических характеристик.
Разрешений экранов.
Возможностей, которые может использовать приложение.
Операционных систем.
А ещё их отличает портативность.
Архитектура мобильных приложений также построена на основе клиент-серверного стиля и может использовать:
Толстого клиента.
Тонкого клиента.
Она может быть двухзвенной, трёхзвенной или многозвенной. Организация серверов мобильных приложений не отличается от настольных.
В реализации программного обеспечения толстого и тонкого клиента существует множество особенностей. Они проявляются особенно ярко, когда речь заходит о мобильных приложениях. Это связано с существенными отличиями мобильных устройств от настольных компьютеров и ноутбуков.
ПО клиента может быть реализовано как:
Нативное приложение.
Мобильное веб-приложение.
Многофункциональное интернет-приложение.
Теперь вы знакомы с особенностями клиент-серверной и серверной архитектуры, можете выбрать, какой тип клиента подходит приложению. В следующих уроках вы изучите монолитные и распределённые стили.