веб клиент что это такое
Веб-клиент
Веб-клиент — это одно из клиентских приложений системы «1С:Предприятие 8». В отличие от «привычных» клиентских приложений (толстого клиента и тонкого клиента), его не нужно предварительно устанавливать на компьютер пользователя. У веб-клиента нет исполняемого файла. Веб-клиента вы не найдете ни в меню, ни среди исполняемых файлов. Потому он и веб-клиент, что ему для начала работы не нужно иметь никаких файлов на компьютере пользователя.
Веб-клиент, в отличие от толстого и тонкого клиентов, исполняется не в среде операционной системы компьютера, а в среде интернет-браузера (Windows Internet Explorer, Mozilla Firefox, Google Chrome или Safari). Поэтому любому пользователю достаточно всего лишь запустить свой браузер, ввести адрес веб-сервера, на котором опубликована информационная база, — и веб-клиент сам «приедет» к нему на компьютер и начнет исполняться.
Веб-клиент использует технологии DHTML и HTTPRequest. При работе веб-клиента клиентские модули, разработанные в конфигурации, компилируются автоматически из встроенного языка «1С:Предприятия 8» и непосредственно исполняются на стороне веб-клиента.
Таким образом, независимо от клиентского приложения (толстый, тонкий, веб-клиент), вся разработка прикладного решения ведется полностью в конфигураторе 1С:Предприятия, серверный и клиентский код пишется на встроенном языке «1С:Предприятия 8».
Работа в интернет-браузере без установки системы на компьютер пользователя
Для работы в режиме веб-клиента требуется веб-сервер, настроенный на работу с «1С:Предприятием 8». Браузер клиента взаимодействует с веб-сервером по протоколу HTTP или HTTPS. Веб-сервер, в свою очередь, взаимодействует с «1С:Предприятием 8» в файловом или клиент-серверном варианте работы.
В качестве веб-сервера используется Apache или IIS.
Progressive Web Apps
В веб-клиенте реализована поддержка технологии PWA (Progressive Web Apps). Эта технология поддерживается браузерами (как настольными, так и мобильными). Она позволяет создавать веб-приложения, которые выглядят как нативные приложения и работают почти так же быстро, как нативные приложения.
В веб-клиенте есть команда, которая устанавливает его как отдельное PWA-приложение. В результате на рабочем столе появляется иконка для запуска приложения. Веб-клиент, запущенный из этой иконки, будет похож на нативное приложение — в нем не будет адресной строки браузера, кнопок Домой, Вперед, Назад и др.
Во встроенном языке реализована объектная модель, которая позволяет устанавливать PWA-приложения и обрабатывать события начала и окончания установки.
Аутентификация OpenID Connect
В веб-клиенте реализована поддержка провайдеров OpenID Connect. Для аутентификации в «1С:Предприятии 8», дополнительно к имеющимся способам, пользователи могут использовать свои учётные данные на других сайтах, поддерживающих OpenID Connect аутентификацию.
Веб-клиент на мобильных устройствах
Реализована ограниченная поддержка работы веб-клиента на мобильных устройствах — в браузере Google Chrome под ОС Android и в браузере Safari на iPhone/iPad. Доступны только основные функции веб-клиента.
Про веб-клиент 1С
Одной из приятных особенностей технологии 1С:Предприятие является то, что прикладное решение, разработанное по технологии управляемых форм, может запускаться как в тонком (исполняемом) клиенте под Windows, Linux, MacOS X, так и как веб-клиент под 5 браузеров – Chrome, Internet Explorer, Firefox, Safari, Edge, и все это – без изменения исходного кода приложения. Более того – внешне приложение в тонком клиенте и в браузере функционирует и выглядит практически идентично.
Найдите 10 отличий (под катом 2 картинки):
Окно тонкого клиента на Linux:
То же окно в веб клиенте (в браузере Chrome):
Зачем мы сделали веб-клиент? Говоря несколько пафосно, такую задачу перед нами поставило время. Уже давно работа через Интернет стала необходимым условием для бизнес-приложений. Вначале мы добавили возможность работы через Интернет для нашего тонкого клиента (некоторые наши конкуренты, кстати, на этом и остановились; другие, напротив, отказались от тонкого клиента и ограничились реализацией веб-клиента). Мы же решили дать нашим пользователям возможность выбрать тот вариант клиента, который им подходит больше.
Добавление возможности работы через Интернет для тонкого клиента было большим проектом с полной сменой архитектуры клиент-серверного взаимодействия. Создание же веб-клиента — и вовсе новый проект, начинавшийся с нуля.
Постановка задачи
Итак, требования к проекту: веб-клиент должен делать то же самое, что и тонкий клиент, а именно:
Клиентский код на языке 1С может содержать в себе серверные вызовы, работу с локальными ресурсами (файлами и т.п.), печать и многое другое.
И тонкий клиент (при работе через веб), и веб-клиент пользуются одним и тем же набором веб-сервисов для общения с сервером приложений 1С. Реализация у клиентов, конечно, разная – тонкий клиент написан на С++, веб-клиент – на JavaScript.
Немного истории
Проект создания веб-клиента стартовал в 2006 году, в нем (в среднем) участвовала команда из 5 человек. На отдельных этапах проекта привлекались разработчики для реализации специфической функциональности (табличного документа, диаграмм и т.д.); как правило, это были те же разработчики, что делали эту функциональность в тонком клиенте. Т.е. разработчики заново писали на JavaScript компоненты, ранее созданные ими на C++.
С самого начала мы отвергли идею какой-либо автоматической (хотя бы частичной) конверсии C++ кода тонкого клиента в JavaScript веб-клиента ввиду сильных концептуальных различий этих двух языков; веб-клиент писался на JavaScript с чистого листа.
В первых итерациях проекта веб-клиент конвертировал клиентский код на встроенном языке 1С непосредственно в JavaScript. Тонкий клиент поступает иначе — код на встроенном языке 1С компилируется в байт-код, и затем этот байт-код интерпретируется на клиенте. Впоследствии так же стал делать и веб-клиент – во-первых, это дало выигрыш в производительности, во-вторых – позволило унифицировать архитектуру тонкого и веб-клиентов.
Первая версия платформы 1С:Предприятие с поддержкой веб-клиента вышла в 2009 году. Веб-клиент на тот момент поддерживал 2 браузера – Internet Explorer и Firefox. В первоначальных планах была поддержка Opera, но из-за непреодолимых на тот момент проблем с обработчиками закрытия приложения в Opera (не удавалось со 100%-ной уверенностью отследить, что приложение закрывается, и в этот момент произвести процедуру отключения от сервера приложений 1С) от этих планов пришлось отказаться.
Структура проекта
Всего в платформе 1С:Предприятие есть 4 проекта, написанных на JavaScript:
Структурно веб-клиент по-крупному разделяется на следующие подсистемы:
Особенности разработки
Реализация всего вышеописанного на JavaScript – дело непростое. Возможно, веб-клиент 1С – одно из самых больших client-side приложений, написанных на JavaScript – около 450.000 строк. Мы активно используем в коде веб-клиента объектно-ориентированный подход, упрощающий работу с таким большим проектом.
Для минимизации размера клиентского кода мы вначале использовали свой собственный обфускатор, а начиная с версии платформы 8.3.6 (октябрь 2014) стали использовать Google Closure Compiler. Эффект использования в цифрах – размер фреймворка веб-клиента после обфускации:
Google Closure Compiler очень хорошо работает с объектно-ориентированным кодом, поэтому его эффективность именно для веб-клиента максимально высокая. Closure Compiler делает для нас несколько хороших вещей:
Для анализа кода мы используем SonarQube, куда интегрируем статические анализаторы кода. С помощью анализаторов мы отслеживаем деградацию качества исходного кода на JavaScript и стараемся ее не допускать.
Какие задачи решали/решаем
В ходе реализации проекта мы столкнулись с рядом интересных задач, которые нам пришлось решать.
Обмен данными с сервером и между окнами
Существуют ситуации, когда обфускирование исходного кода может помешать работе системы. Код, внешний по отношению к исполняемому коду веб-клиента, вследствие обфускации может иметь имена функций и параметров, отличающиеся от тех, которые наш исполняемый код ожидает. Внешним кодом для нас является:
А чтобы избежать обфускации при взаимодействии с другими окнами мы используем так называемые экспортируемые интерфейсы (интерфейсы, у которых все методы являются экспортируемыми).
We used Virtual DOM before it became mainstream)
Как и все разработчики, имеющие дело со сложным Веб UI, мы быстро поняли, что DOM плохо подходит для работы с динамическим пользовательским интерфейсом. Практически сразу был реализован аналог Virtual DOM для оптимизации работы с UI. В процессе обработки события все изменения DOM запоминаются в памяти и, только при завершении всех операций, накопленные изменения применяются к DOM-дереву.
Оптимизация работы веб-клиента
Чтобы наш веб-клиент работал быстрее, мы по максимуму стараемся задействовать штатные возможности браузера (CSS и т.п.). Так, командная панель формы (расположенная практически на каждой форме приложения) отрисовывается исключительно средствами браузера, динамической версткой на базе CSS.
Тестирование
Для функционального тестирования и тестирования производительности мы используем инструмент собственного производства (написанный на Java и C++), а также набор тестов, построенных на базе Selenium.
Наш инструмент универсален – он позволяет тестировать практически любые оконные программы, а потому подходит для тестирования как тонкого клиента, так и веб-клиента. Инструмент записывает действия пользователя, запустившего прикладное решение «1С», в файл-сценарий. В это же время происходит запись изображений рабочей области экрана — эталонов. При контроле новых версий веб-клиента сценарии проигрываются без пользовательского участия. В случаях несовпадения скриншота с эталонным на каком-либо шаге тест считается провалившимся, после чего специалист по качеству проводит расследование – ошибка это или запланированное изменение поведения системы. В случае запланированного поведения эталоны автоматически подменяются на новые.
Инструмент также проводит замеры производительности приложений с точностью до 25 миллисекунд. В ряде случаев мы закольцовываем части сценария (например, несколько раз повторяем ввод заказа) для анализа деградации времени выполнения со временем. Результаты всех замеров записываются в лог для анализа.
Наш инструмент тестирования и тестируемое приложение
Наш инструмент и Selenium дополняют друг друга; например, если какая-то кнопка на одном из экранов поменяла свое местоположение – Selenium это может не отследить, но наш инструмент заметит, т.к. делает попиксельное сравнение скриншота с эталоном. Также инструмент в состоянии отследить проблемы с обработкой ввода с клавиатуры или мыши, так как именно их он и воспроизводит.
Тесты на обоих инструментах (нашем и Selenium) запускают типовые сценарии работы из наших прикладных решений. Тесты автоматически запускаются после ежедневной сборки платформы «1С:Предприятие». В случае замедления работы сценариев (по сравнению с предыдущей сборкой) мы проводим расследование и устраняем причину замедления. Критерий у нас простой – новая сборка должна работать не медленнее предыдущей.
Для расследования инцидентов замедления работы разработчики используют разные инструменты; в основном используется Dynatrace AJAX Edition производства компании DynaTrace. Проводится запись логов выполнения проблемной операции на предыдущей и на новой сборке, затем логи анализируются. При этом время выполнения единичных операций (в миллисекундах) может не быть решающим фактором – в браузере периодически запускаются служебные процессы типа уборки мусора, они могут наложиться на время выполнения функций и исказить картину. Более релевантными параметрами в этом случае будет количество выполненных инструкций JavaScript, количество атомарных операций над DOM и т.п. Если количество инструкций/операций в одном и том же сценарии в новой версии увеличилось – это почти всегда означает падение быстродействия, которое нужно исправлять.
Также одной из причин падения производительности может быть то, что Google Closure Compiler по какой-то причине не смог сделать inline-подстановку функции (например, потому что функция рекурсивная или виртуальная). В этом случае мы стараемся исправить ситуацию, переписав исходный код.
Расширения браузеров
В случае, когда прикладному решению нужна функциональность, которой нет в JavaScript, мы используем расширения браузеров:
При работе в Safari наши расширения используют NPAPI, при работе в Internet Explorer — технологию ActiveX. Microsoft Edge пока не поддерживает расширения, поэтому веб-клиент в нем работает с ограничениями.
Дальнейшее развитие
Одна из групп задач для команды разработки веб-клиента – это дальнейшее развитие функциональности. Функциональность веб-клиента должна быть идентична функциональности тонкого клиента, вся новая функциональность реализуется одновременно и в тонком, и в веб-клиенте.
Другие задачи — развитие архитектуры, рефакторинг, повышение производительности и надежности. Например, одно из направлений – дальнейшее движение в сторону асинхронной модели работы. Часть функциональности веб-клиента на настоящий момент построена на синхронной модели взаимодействия с сервером. Асинхронная модель сейчас становится в браузерах (и не только в браузерах) более актуальной, и это заставляет нас модифицировать веб-клиент путем замены синхронных вызовов на асинхронные (и соответствующего рефакторинга кода). Постепенный переход к асинхронной модели объясняется необходимостью поддержки выпущенных решений и постепенной их адаптации.
Web-клиент
Полное описание платформы
Web-клиент – полнофункциональное рабочее место пользователя Docsvision, которое предоставляет доступ к системе через любую ОС (Windows, Linux, Mac OS, iOS, Android) и любой интернет-браузер (Google Chrome, Apple Safari, Яндекс.Браузер, Microsoft Edge, Internet Explorer), без необходимости установки на устройство пользователя приложения или дополнительного ПО.
Интерфейс web-клиента позволяет выполнять в системе все необходимые функции: работать с документами и заданиями, запускать процессы согласования и исполнения/ознакомления, осуществлять поиск по реквизитам и тексту документов, формировать и просматривать отчёты.
Интерфейс web-клиента адаптивный, он подстраивается под размер экрана устройства и позволяет удобно работать как с настольного компьютера или ноутбука, так и с планшета или телефона.
Стартовый дашборд в web-клиенте Docsvision
Стартовый дашборд в web-клиенте Docsvision c мобильного экрана
Web-клиент и возможность online-доступа к системе – базовая функциональность платформы, доступная в любой выбранной редакции Docsvision. Конкурентная пользовательская лицензия для работы посредством web/windows-клиента входит в поставку платформы в числе обязательных модулей.
Работа с документами
В web-клиенте Docsvision реализованы все необходимые функции для работы с электронными документами и со скан-копиями бумажных документов:
Работа с заданиями
В Docsvision встроены инструменты для создания и исполнения заданий, а также для контроля исполнительской дисциплины. Все эти функции доступны в web-клиенте как компьютере, так и на смартфоне:
Поиск
В Docsvision реализованы несколько видов поиска, основные – это атрибутивный поиск по реквизитам и полнотекстовый поиск по тексту файлов. Web-клиент позволяет использовать все эти виды поиска, а также ряд других возможностей:
Профиль пользователя
В web-клиенте пользователь может изменять настройки своего личного профиля:
Веб клиент 1С
В версии платформы 1С 8.2 появилась возможность установки веб-клиента 1C для того, чтобы доступ к системе был обеспечен всегда. Веб-клиент решил проблему того, что 1С не получалось установить на отдельно взятые компьютеры – часть из них устарела. Также нововведение было полезно тем, у кого в штате не оказалось IT-специалиста – самостоятельная настройка новой версии программы получилась достаточно простой.
Преимущества использования веб-клиента 1С
Преимущества использования веб-клиента для учета доходов и расходов на предприятии:
Новый способ открытия базы данных действительно является достаточно удобным.
Принцип работы веб-клиента 1С
Внешне веб-клиент ничем не отличается от тонкого клиента, за исключением того, что интерфейс 1С открывается в браузере. Для того чтобы получить связь с базой данных, понадобится опубликовать сервер и ввести его адрес в строку. Получить доступ к базе удается за счет технологий HTTPRequest и DHTML.
Передача данных осуществляется по технологии HTTP на сервер, где расположена БД предприятия. Эти данные компилируются, а исполнение всех действий осуществляется на стороне клиента в браузере, установленном на его компьютере. Если веб-версия 1С подходит для работы сотрудников Вашей компании, опубликуйте веб-сервер и настройте его. Для того чтобы процесс был более наглядным, далее будет описан процесс настройки стандартного сервера на базе Windows.
Как настроить и опубликовать веб-сервер
Данный пример поможет разобраться тем, у кого на компьютерах установлена ОС Windows. С ней Вам не понадобятся дополнительные программы для настройки веб-версии. В Вашу систему уже встроен IIS сервер – это сервера для нескольких сервисов Интернета, интегрированные компанией Microsoft.
Настроить работу IIS может любой пользователь, который владеет базовыми навыками работы с системой. Однако в идеальном варианте для настройки стоит выбирать только мощные компьютеры. Иначе он будет забирать большую часть мощности, и тогда запуск браузера и работа в 1С будет более медленной, а компьютер станет менее производительным.
Для правильной настройки у компьютера должен быть достаточный запас ресурсов, чтобы операционная система продолжала работать без торможения и задержек – иначе сервер тоже начнет «тормозить». Начать настройку веб-сервера стоит с открытия «Панели управления». Внутри откройте вкладку «Программы и компоненты», а затем выберите «Включение и выключение компонентов».
В большом списке найдите строку, нажмите на «Службы IIS/Службы интернета», чтобы раскрыть еще один список. Внутри в каждом разделе проставьте маркеры по следующим пунктам.
В разделе «Общие функции HTTP» должны быть отмечены следующие строки:
В разделе «Проверка работоспособности и диагностика» понадобится выделить только две позиции:
Раздел «Компоненты разработки приложений»:
Наконец, в разделе «Средства управления» выберите пункт «Консоль управления IIS».
Следующий шаг – это публикация веб-сервера после настройки. Установите на компьютер модули расширения веб-сервера 1С. Это действие довольно просто – во время установки 1С нужно отметить пункт с модулями расширения после того, как Вы откроете окно изменение способа установки и установки компонентов.
После этого выполните запуск 1С, открыв режим конфигуратора с правами администратора. В меню выберите раздел «Администрирование», а затем пункт «Публикация на веб-сервере». Платформа самостоятельно просканирует компьютер и найдет образованный сервер. Вам необходимо записать имя образованного веб-сервера и его адрес.
Нажмите кнопку «Опубликовать», и после этого сервер автоматически перезапустится. Для проверки работоспособности системы напишите в браузере http: и после этого цифрами имя сервера и через символ «/» имя базы. Так Вы запустите веб-клиент 1С. Далее дайте доступ всем пользователям (сотрудникам компании) к веб-серверу для чтения и записи. Если не установить права пользователей, на рабочих местах настроить доступ к веб-клиенту 1С не получится.
Веб-клиент 1С стал настоящим спасением для многих пользователей на рабочих местах. Даже если компьютер не очень быстрый и производительный, работать с общей базой данных получается без торможения. Простая настройка и интуитивно понятный интерфейс сделали веб-версию отличным решением возникшей проблемы на предприятиях, и веб-клиент стал очень популярен среди компаний разного уровня.
Шпаргалка по Spring Boot WebClient
В преддверии старта курса «Разработчик на Spring Framework» подготовили традиционный перевод полезного материала.
WebClient — это неблокирующий, реактивный клиент для выполнения HTTP-запросов.
Время RestTemplate подошло к концу
Возможно, вы слышали, что время RestTemplate на исходе. Теперь это указано и в официальной документации:
NOTE: As of 5.0 this class is in maintenance mode, with only minor requests for changes and bugs to be accepted going forward. Please, consider using the org.springframework.web.reactive.client.WebClient which has a more modern API and supports sync, async, and streaming scenarios.
ПРИМЕЧАНИЕ: Начиная с версии 5.0, этот класс законсервирован и в дальнейшем будут приниматься только минорные запросы на изменения и на исправления багов. Пожалуйста, подумайте об использовании org.springframework.web.reactive.client.WebClient , который имеет более современный API и поддерживает синхронную, асинхронную и потоковую передачи.
Конечно, мы понимаем, что RestTemplate не исчезнет мгновенно, однако новой функциональности в нем уже не будет. По этой причине в Интернете можно видеть десятки вопросов о том, что такое WebClient и как его использовать. В этой статье вы найдете советы по использованию новой библиотеки.
Отличия между WebClient и RestTemplate
Если в двух словах, то основное различие между этими технологиями заключается в том, что RestTemplate работает синхронно (блокируя), а WebClient работает асинхронно (не блокируя).
RestTemplate — это синхронный клиент для выполнения HTTP-запросов, он предоставляет простой API с шаблонным методом поверх базовых HTTP-библиотек, таких как HttpURLConnection (JDK), HttpComponents (Apache) и другими.
Spring WebClient — это асинхронный, реактивный клиент для выполнения HTTP-запросов, часть Spring WebFlux.
Вам, вероятно, интересно, как можно заменить синхронного клиента на асинхронный. У WebClient есть решение этой задачи. Мы рассмотрим несколько примеров использования WebClient.
Начало работы с WebClient
Предварительные условия
Подготовка проекта
Давайте создадим базовый проект с зависимостями, используя Spring Initializr.
Spring WebFlux является частью Spring 5 и обеспечивает поддержку реактивного программирования для веб-приложений.
Пришло время настроить WebClient.
Настройка WebClient
Есть несколько способов настройки WebClient. Первый и самый простой — создать его с настройками по умолчанию.
Можно также указать базовый URL:
Третий и самый продвинутый вариант — создать WebClient с помощью билдера. Мы будем использовать конфигурацию, которая включает базовый URL и таймауты.
Параметры, поддерживаемые WebClient.Builder можно посмотреть здесь.
Подготовка запроса с помощью Spring WebClient
Также можно указать следующие параметры:
Асинхронный запрос
Давайте создадим сервис, который использует бин WebClient и создает асинхронный запрос.
Синхронный запрос
Здесь поток блокируется, пока запрос не выполнится. В этом случае мы получаем запрашиваемую модель сразу же после завершения выполнения метода.
Повторные попытки
Обработка ошибок
В случае ошибки, когда повторная попытка не помогает, мы все еще можем контролировать ситуацию с помощью резервного варианта. Доступны следующие методы:
doOnError() — срабатывает, когда Mono завершается с ошибкой.
onErrorResume() — при возникновении ошибки подписывается на резервного издателя, используя функцию для выбора действия в зависимости от ошибки.
Вы можете использовать эти функции для вызова другого сервиса, выбрасывания исключения, записи в лог или выполнения любого действия в зависимости от ошибки.
Клиентские фильтры
Ниже приведен пример фильтра для базовой аутентификации с помощью статического фабричного метода.
Заключение
В этой статье мы узнали, как настроить WebClient и выполнять синхронные и асинхронные HTTP-запросы. Все фрагменты кода, упомянутые в статье, можно найти в GitHub-репозитории. Документацию по Spring WebClient вы можете найти здесь.
Подводя итог, мы видим, что WebClient прост в использовании и включает в себя все необходимые функции, необходимые в современном программировании.
Удачи с новым Spring WebClient!
Посмотреть запись демо-урока на тему «Введение в облака, создание кластера в Mongo DB Atlas».