Дикий Григорий

Full-stack веб-разработчик

Web-клиенты

Веб-клиенты - это программы запущенные на компьютере конечного пользователя, которые формируют запросы к серверам и получают от них данные, отображая их на устройстве пользователя. Стоит отметить что в привычном понимании это браузер, но на самом деле существует огромное количество клиентов, которые, к примеру, собирают статистику, анализируют данные, или даже приложение на вашем смартфоне, если оно работает с интернетом, тоже является клиентом.

Разновидности веб-клиентов:

  • Библиотеки в языках программирования (libcurl, urllib и т.д)
  • Консольные утилиты (wget, curl, telnet)
  • Роботы: поисковики, вредоносные скрипты
  • Браузеры:
    • Полноценные: firefox, chrome и т.д
    • Встроенные: web-view, webkit и т.д

Особенности библиотек веб-клиентов

В основном библиотеки используются для программирования веб-приложений, они хорошо работают с HTTP, то есть получают данные, обрабатывают данные нужным образом. Стоит отметить, что данные в протоколе HTTP могут быть закодированы различным образом.

  • Предоставляют много функционала для работы с протоколом HTTP
  • Осуществляют кодирование и декодирование данных
  • Перенаправления, куки

Рассмотрим пример кода для работы с urllib библиотекой на python

import urllib2 # Подключение библиотеки
search = 'dikiigrigorii.ru'
headers = {'User-Agent' : 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)'} # Формируем заголовки
req = urllib2.Request("http://www.google.ru/search?q=" + search + "&start=0&ie=utf-8&oe=utf-8", None, headers)  # Формирование запроса
response = urllib2.urlopen(req) # Отправка запроса и получение ответа
print response.read() # Печать ответа 

Консольные клиенты

Консольные клиенты - программы запускаемые из командной строки. Они позволяют работать с протоколом HTTP. В основном их используют для автоматизации в shell-скриптах. Также по при помощи их можно "скачать сайт", то есть не просто скачать html ресурс, но и его ресурсы, такие как скрипты, стили, изображения и тд. Также раньше они использовались для отладки веб-приложений, то есть при помощи них программист мог посмотреть все, что вернул сервер по запросу с точностью до байта. Самым простым примером такого рода клиента является консольная программа telnet. Telnet - программа, которая открывает tcp соединение и связывает его с консолью, после чего пользователь в может отлаживать свои веб-приложения.

Сценарий работы веб-приложения

  1. Пользователь вводит URL
  2. Браузер загружает страницу, а также ее ресурсы и отображает ее
  3. JavaScript загружает данные при помощи AJAX
  4. JavaScript отвечает за UI элементами
  5. Пользователь взаимодействует с UI при этом JavaScript отслеживает действия пользователя и реагирует на них нужным образом.
  6. JavaScript обновляет данные на сервере или загружает другие данные без перезагрузки страницы с помощью AJAX

Особенности работы

  • UI находится на одной или нескольких страницах
  • UI статичен, то есть состоит из HTML, JS, CSS
  • Логика UI работает на стороне клиента
  • Используется шаблонизация JavaScript
  • Application Server возвращает сырые данные

Дело в том, что в современном веб-приложении в основном существует несколько серверов, которые работают с вашим приложением, причем одни из них отдают статические данные, а другие типа Application Server формируют динамические данные, после чего отдают пользователю. Дело в том, что в последнее время современные веб-приложения получают сырые данные, то есть без HTML тегов и т.д, а в специальном формате, в основном JSON, после чего эти данные обрабатываются JavaScript и он в дальнейшем вырисовывает страничку. Также надо понимать, что технология AJAX тоже формирует запрос и работает через браузер через HTTP протокол, но отличие в том, что запрос формируется не браузером, а JavaScript программой, вот почему и не нужна перезагрузка страницы, но это не отдельно взятая технология, а просто реализованная в браузере технология.