Сколько себя помню, я любил музыку. Некоторыми из моих любимых жанров всегда были рок, поп, электроника, альтернатива и иногда металл. Но есть один жанр, который меня всегда интересовал - классика. Я обнаружил, что иногда мне попадалась вещь, которая мне нравилась, но жанр в целом все еще казался довольно недоступным… то есть до тех пор, пока я не нашел Primephonic.
Primephonic - это потоковый сервис, предназначенный исключительно для классической музыки. Несколько недель назад я решил попробовать. Мне понравился опыт использования приложения. Я мог заниматься музыкой и узнавать о жанре, а также о его многочисленных поджанрах с помощью тщательно составленных плейлистов. Мне могли понравиться определенные пьесы, и я сохранил их в моем плейлисте Избранное. Я мог искать музыку по инструменту или по оркестру. И я мог слушать подкасты, в которых рассказывается об истории каждой эпохи в рамках жанра. Но цель этого поста не в том, чтобы осветить все крутые вещи, которые Primephonic может предложить тем, кто интересуется классической музыкой (их много!). Вместо этого я представлю свой взгляд на пользовательский интерфейс, управляемый сервером - концепцию, с которой я впервые столкнулся после прочтения сообщения в блоге Лоренса Ван Ден Овер под названием Обнаружение пользовательского интерфейса, управляемого сервером. В своем сообщении он описывает, как серверный пользовательский интерфейс использовался при разработке Primephonic для значительного улучшения производительности приложения, а также общего пользовательского интерфейса.
Что такое пользовательский интерфейс, управляемый сервером?
Пользовательский интерфейс, управляемый сервером (или управляемый сервером), означает, что сервер отвечает за отображение того, что пользователь видит на экране (или экранах), а не клиент. Чтобы проиллюстрировать разницу между традиционным пользовательским интерфейсом, управляемым клиентом, и пользовательским интерфейсом, управляемым сервером, я обращусь к примеру, приведенному в статье Джо Берча Пользовательский интерфейс, управляемый сервером, часть I: концепция. (Для сравнения, приведенного ниже, синтаксические различия между каждым набором данных важны только в той степени, в которой они отражают концептуальные различия между пользовательским интерфейсом, управляемым клиентом, и пользовательским интерфейсом, управляемым сервером).
Изображение выше демонстрирует управляемый клиентом пользовательский интерфейс, в котором клиент запрашивает данные с сервера, а API отвечает объектом, показанным на центральном изображении. Теперь рассмотрим, что видит пользователь до и после выполнения запроса. Конечно, после успешного завершения цикла запрос-ответ страница может выглядеть иначе, однако компоненты, составляющие экран / страницу, на самом деле не меняются. Сам пользовательский интерфейс «статически определяется клиентом». В этом примере сервер просто заполняет уже существующие компоненты пользовательского интерфейса.
На изображении выше показаны разные данные, возвращаемые API. В этом изображении потока данных клиент-сервер приложение / клиент не имеет компонентов, необходимых для создания пользовательского интерфейса. В результате эти компоненты предоставляются сервером. Джо Берч лучше всего говорит об этом, когда пишет: «Сервер вернет то, как должен выглядеть этот экран - это касается как данных для экрана, так и того, как эти данные должны быть представлены… [O] ur приложение становится простой рендерер визуальных компонентов ».
Преимущества серверного пользовательского интерфейса
Меня, как начинающего программиста, сначала смутил Server-Driven UI. Я использую React всего несколько недель, и в течение этих нескольких недель много времени было потрачено на изучение искусства создания молниеносных одностраничных приложений - тем самым сводя к минимуму взаимодействие клиентов с сервером. «Зачем делать экраны полностью зависимыми от данных, получаемых с сервера? Разве это не должно убивать производительность? " Я поинтересовался. Лоуренс Ван Ден Овер предлагает ответ в своем сообщении Обнаружение пользовательского интерфейса, управляемого сервером. Сначала он объясняет, что JSON можно легко сжать от 20 до 30 раз, эффективно уменьшая проблему количества данных до одной части более крупной головоломки, связанной с производительностью. В конечном итоге Лоренс заключает, что «воспринимаемая производительность более важна, чем фактическое время, потраченное на обработку данных». А поскольку запросы данных могут выполняться параллельно, любая потеря производительности эффективно «компенсирует увеличенный размер запроса».
Лоренс также описывает еще одно преимущество пользовательского интерфейса, управляемого сервером, в том, что касается взаимодействия между интерфейсной и серверной командами. Он объясняет, что пользовательский интерфейс, управляемый сервером, эффективно объединил разработчиков внешнего и внутреннего интерфейса. Используя пользовательский интерфейс, управляемый клиентом, инженеры внешнего интерфейса обрабатывали вопросы, касающиеся пользовательских потоков и шаблонов взаимодействия, в то время как инженеры внутреннего интерфейса отвечали на вопросы о данных, поступающих с конечных точек REST. С помощью пользовательского интерфейса, управляемого сервером, разработчики внешнего и внутреннего интерфейса начали думать об одном и том же - экранах! Перемещение разговора в сторону этой новой точки соприкосновения между фронтендом и бэкэндом упростило общение между различными командами.
Я перечислил другие основные преимущества пользовательского интерфейса, управляемого сервером, ниже, любезно предоставленного Шивой Ганешем Кантамани и его сообщением в блоге Изучение пользовательского интерфейса, управляемого сервером.
1. Компаниям больше не нужно зависеть от пользователей, чтобы обновить приложение, чтобы отобразить определенный пользовательский интерфейс или изменить порядок пользовательского интерфейса (по крайней мере, по большей части).
2. Конкретные функции можно протестировать на лету.
3. Легко поставлять новые функции и создавать больше повторно используемых компонентов.
4. Нативный опыт для пользователей и реактивный для компаний.
Это далеко не полный список, однако в нем рассматриваются ключевые преимущества использования пользовательского интерфейса, управляемого сервером. Более подробный анализ преимуществ будет отложен для следующего сообщения в блоге. Я также воздержусь от обсуждения важного вопроса о том, когда использовать пользовательский интерфейс, управляемый сервером, по двум причинам. Во-первых, я надеюсь провести больше исследований по этой теме и протестировать ее самостоятельно, прежде чем составить ответ. Во-вторых, есть много других замечательных сообщений в блогах, посвященных именно этой теме (особенно хороши публикации Лоренса Ван Ден Увер и Джо Берча).
Заключение
Для тех, кто не знал о пользовательском интерфейсе, управляемом сервером, до прочтения моего сообщения, я надеюсь, что теперь у вас есть базовое понимание того, как он работает, и его преимущества по сравнению с традиционным пользовательским интерфейсом, управляемым клиентом. Для тех, кто немного знал о пользовательском интерфейсе, управляемом сервером, я надеюсь, что мое объяснение помогло заполнить пробел в вашем понимании. Лично я был взволнован, обнаружив, что приложение, которым я недавно стал наслаждаться, предлагает такой интересный вход в эту техническую тему. И, наконец, если вы хотя бы отдаленно заинтересованы в расширении своей палитры классической музыки, я настоятельно рекомендую вам скачать Primephonic.
Удачного кодирования!