Windows-приложения в веб-браузерах пользователей. Свое облако с блэк-джеком и т.д
Идея запускать приложения не на компьютере пользователя, а на удаленном сервере, и транслировать изображение пользователю по сети – не нова, и давно «витает в воздухе». Согласитесь, идея хорошая: ведь для установки любого нового ПО на свой компьютер необходимо разобраться с политикой лицензирования (кому это актуально), найти дистрибутив (желательно, без вредоносного ПО внутри), установить и настроить ПО — иногда просто руки опускаются. Кроме того, подход с трансляцией ПО снимает необходимость в своем производительном «железе», что становится актуальным в свете ежегодного роста продаж планшетных компьютеров и смартфонов. Да и интернет есть повсюду в мегаполисах: слушать музыку и смотреть кино онлайн, в конце концов, все уже давно привыкли.
Вот только ни одного полнофункциональной разработки, подходящего для применения в сети Интернет до сих пор так и не видно. Мы подумали, что это никуда не годится и решили сделать ее.
Давайте поподробнее
С моей стороны будет, наверное, не совсем честным не упомянуть про вполне себе существующие, и даже неплохо себя зарекомендовавшие Citrix XenApp и Microsoft App-V. Оба продукта неплохо справляются со своей задачей в крупных организациях, но вот беда: оба решения малопригодны для публичного предоставления сервиса (то есть, для сети Интернет). Виной тому технические особенности, ведь эти системы изначально проектировались для интеграции заказчику. Причем речь идет в первую очередь о крупном бизнесе, так как среднему и малому бизнесу такие системы не по карману. Да и клиентское ПО надо ставить на пользовательские устройства, разбираться, настраивать. На практике оказывается, что не для любых устройств есть клиенты (я про планшеты. Смартфоны и вовсе не поддерживаются), несмотря на заверения дистрибьюторов. Стоит ли говорить, что попытки построения публичного сервиса на базе данных продуктов ничем хорошим не заканчивались, насколько мне известно.
А почему бы не сделать систему, способную транслировать Windows-приложения именно для глобальной сети, подумали мы?
Говоря про Windows-приложения, мы имеем в виду любое программное обеспечение, способное функционировать под управлением операционной системы Microsoft Windows. Почему взяли фокус именно на Windows-приложения? Все очень просто: Windows-приложения – это приложения для бизнеса, для работы, для учебы, приложения, которыми пользуются (и, что немаловажно, умеют пользоваться) миллиарды людей по всему миру. Количество приложений уже разработанных под Microsoft Windows, полагаю, исчисляется миллионами, что представляет собой огромный неисчерпаемый функционал, который было бы, на мой взгляд, здорово аккумулировать в одном месте.
В качестве главного критерия системы была выбрана простота понимания для конечного пользователя, чтобы даже моя мама, привыкшая работать с уже установленным и настроенным ПО на своем ноутбуке не самой последней модели, легко разобралась.
Еще одним важным критерием стало желание поддерживать различные типы современных устройств (персональные компьютеры под управлением различных OS, планшеты, мобильные устройства, современные телевизоры, поддерживающие технологию smart TV и другие). Решение напрашивалось само собой: транслировать windows-приложения надо с удаленного сервера в веб-браузеры конечных пользователей, ну или на веб-страницу, если быть более точным. Вот только как это сделать?
Реализация
Начиналось все со старого Б/У сервера, размещенного в коридоре квартиры, и кодинга до поздней ночи. Что только не пробовали в своем поиске: даже использовать Silverlight в качестве программной платформы для портирования .net-приложений пользователю, но ввиду очевидных ограничений по набору возможных к доставке приложений от этого варианта отказались. Сконцентрировались все-таки на трансляции приложений в кроссплатформенную среду и более от этого направления не отходили. По нашему мнению, трансляция отображения работы приложений является на данный момент времени лучшим методом для «доставки» приложений пользователям.
- сервер доступа web-клиентов – обеспечивает взаимодействие сервера приложений с клиентами;
- сервер приложений – обеспечивает передачу событий клавиатуры и мыши приложениям, отправку изображения клиенту, изоляцию приложений друг от друга;
- сервер управления – обеспечивает управление инфраструктурой;
- файловый сервер – обеспечивает хранения пользовательских данных.
Сервер приложений является ядром и наиболее не простой частью разрабатываемой системы. Передача изображения от запущенного на сервере ПО осуществляется с помощью снятия скрин-шотов и передачей полученных кадров в режиме реального времени. Изображение разбивается на области, и пользователю передаются только изменения для экономии трафика. Изначально планировалось использовать технологию Desktop Duplication API, но так как она может дуплицировать только рабочий стол целиком, а нам нужны окна, то от нее пришлось отказаться. Модуль создания скриншотов в итоге пришлось разрабатывать самостоятельно. Для разработки кодека в качестве «образца для подражания» был принят FreeRDP WebConnect, серверную часть естественно писали сами. Для передачи событий клавиатуры и мыши приложениям имитируются события на стороне сервера с использованием функций send input.
Файловый сервер и сервер управления представляют меньше интереса, по этой причине не будем на них заострять внимание.
На данный момент бета-версия выглядит так:
И немного импрессионизма в Gimp от автора статьи
Windows классических приложений и конфиденциальности
Классические приложения — это особый тип приложений, которые не будут просить разрешение на доступ к данным, связанным с настройками конфиденциальности в Windows. Некоторые классические приложения могут не даже запрашивать разрешение на доступ к личным данным, сохраненным на вашем устройстве. Классические приложения также не отображаются в списке приложений на страницах параметров конфиденциальности, которые позволяют выбрать, какие приложения могут использовать данные, связанные с этим параметром конфиденциальности.
Что представляют собой классические приложения?
Их можно скачать с веб-Microsoft Store, скачать из Интернета или установить с использованием определенного типа мультимедиа (например, компакт-диска, DVD- или USB-накопителя). Они открываются с помощью .EXE, .MSI или .DLL и обычно работают на вашем устройстве, в отличие от веб-приложений (которые работают в облаке).
Почему в некоторых приложениях Microsoft Store «Предоставлено и обновлено» разработчиком приложения?
Приложения с этой меткой загружаются с веб-сайта разработчика и обновляются разработчиком, а не обновляются с помощью Microsoft Store.
Ознакомьтесь с политиками конфиденциальности установленных классических приложений, чтобы получить дополнительные сведения о том, как они могут использовать личные данные, хранимые на вашем устройстве. Вам также следует проверить, предоставляют ли установленные классические приложения собственные параметры для управления доступом к личным данным. Чтобы еще больше снизить риск доступа приложения к личным данным, когда параметр конфиденциальности выключен, следует устанавливать приложения и службы только из надежных источников.
Существуют различные исключения для доступа и использования личных данных на устройстве с помощью классических приложений за пределами средств контроля конфиденциальности, доступных в Windows.
Местоположение
Даже если вы выключили параметр определения местоположения устройства, некоторые сторонние приложения и службы могут использовать другие технологии (такие как Bluetooth, Wi-Fi, модем сотовой связи и т. д.) для определения местоположения вашего устройства с различной степенью точности. Корпорация Майкрософт требует от сторонних разработчиков программного обеспечения, разрабатывающих приложения для Microsoft Store или разрабатывающих приложения с помощью инструментов Майкрософт, использовать параметры определения местоположения Windows, если только вы не предоставили стороннему разработчику требуемого по закону согласия на определение вашего местоположения. Чтобы обеспечить более полную защиту данных о вашем местоположении, можно отключить радиокомпоненты вашего устройства, например Wi-Fi, Bluetooth, модем сотовой связи и GPS-компоненты, которые могут использоваться приложениями для определения вашего точного местоположения. Однако эти действия также влияют на работу других функций, таких как звонки (в том числе экстренные вызовы), отправку сообщений, подключение к Интернету и связь с периферийными устройствами, например наушниками.
«Камера», «Микрофон» и другие параметры конфиденциальности, напрямую связанные с периферийным устройством
Отключение этих параметров конфиденциальности может не повлиять на некоторые классические приложения. Например, приложение, которое также устанавливает драйвер, может взаимодействовать напрямую с оборудованием камеры или микрофона, обходя возможности Windows по управлению доступом. Для более надежной защиты персональных данных, связанных с этими параметрами, рекомендуется отключить эти устройства, например отсоединить или отключить камеру или микрофон.
Другие параметры конфиденциальности
Для других параметров конфиденциальности, не упомянутых выше, не существует действий, которые позволяют гарантировать, что классические приложения не будут получать доступ к персональным данным без вашего ведома, если вы решили установить или использовать приложение.
Создание Windows-приложений
Создание консольного приложения Visual Studio
Создание оконного приложения Visual Studio
Введение в создание оконных приложений
Функции API для работы с консолью
Структура оконного приложения
Элементы управления окна
Графика в оконных приложениях
В операционной системе Windows возможны 3 типа структур программ:
- диалоговая (основное окно — диалоговое),
- консольная, или безоконная структура,
- классическая (оконная, каркасная) структура
Диалоговые приложения для Windows имеют минимальный интерфейс связи с пользователем и передают информацию пользователю посредством стандартных диалоговых окон (например, окно сообщения MessageBox() ). Работа программы происходит «вслепую».
Неоконные (консольные) приложения представляет собой программу, работающую в текстовом режиме. Работа консольного приложения напоминает работу программы MS-DOS. Но это лишь внешнее впечатление. Консольное приложение обеспечивается специальными функциями Windows. Консольные приложения представляют собой систему средств взаимодействия пользователя с компьютером, основанную на использовании текстового (буквенно-цифрового) режима дисплея или аналогичных (командная строка MS-DOS, Far). Консольные приложения очень компактны не только в откомпилированном виде, но и в текстовом варианте, и имеют такие же возможности обращаться к ресурсам Windows посредством API-функций, как и оконные приложения.
Оконные (каркасные) приложения строятся на базе специального набора функций API, составляющих графический интерфейс пользователя (GUI, Graphic User Interface). Главным элементом такого приложения является окно. Окно может содержать элементы управления: кнопки, списки, окна редактирования и др. Эти элементы, по сути, также являются окнами, но обладающими особыми свойствами. События, происходящие с этими элементами (и самим окном), приводят к приходу сообщений в процедуру окна.
Разница между оконными и консольными приложениями Windows состоит в том, с каким типом информации они работают.
Microsoft радикально обновила веб-версию магазина приложений для Windows
Microsoft переписала веб-версию Microsoft Store с нуля, переосмыслив пользовательский интерфейс и существенно упростив поиск приложений. Новый магазин приложений разработан как замена существующему способу поиска приложений Windows в интернете, при котором ссылки с сайта открываются в клиенте Microsoft Store в Windows 10 или Windows 11. Microsoft отказалась от своей старой кодовой базы React, перейдя на Shoelace, Lit и Vite для фронтенда и на C# ASPNET для серверной части.
«Старый сайт представлял собой кодовую базу React, построенную на устаревшей платформе пользовательского интерфейса, — пояснил инженер Microsoft Джуда Габриэль (Judah Gabriel). — Мы создали новый, тщательно продуманный пользовательский интерфейс с более простыми способами поиска новых приложений и современным стеком веб-технологий. Я надеюсь, что люди найдут это полезным».
Обновлённая веб-версия магазина упрощает поиск приложений для Windows или игр Xbox для ПК, которые можно загрузить через основное приложение Microsoft Store для Windows. Однако оно не заменяет основное приложение Microsoft Store. «Думайте об этом как о веб-интерфейсе магазина приложений для Windows. Они работают вместе», — объясняет Габриэль.
Источник изображения: Tom Warren / The Verge
Новый веб-интерфейс может существенно помочь планам Microsoft, поскольку компания сейчас стремится расширить доступность своих приложений и игр за пределы экосистемы Windows. Глава Xbox Фил Спенсер (Phil Spencer) ранее в этом году сообщил, что Microsoft создаёт магазин мобильных игр Xbox в ожидании того, что такие компании, как Apple и Google, будут вынуждены открыть свои магазины мобильных приложений.
Магазин мобильных игр Microsoft Xbox может открыться уже в 2024 году благодаря «Закону ЕС о цифровых рынках». И ему обязательно понадобится веб-интерфейс, чтобы на него можно было ссылаться при продвижении и находить в результатах поиска.
Источник: