Преимущества и недостатки клиент-серверной архитектуры 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Преимущества и недостатки клиент-серверной архитектуры



WEB Технологии

 

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

Первое знакомство с WEB технологиями стоит начать со знакомства с сетевой моделью OSI. Модель Open Systems Interconnection (OSI) – это скелет, фундамент и база всех сетевых сущностей.

Модель определяет сетевые протоколы, распределяя их на 7 логических уровней. Важно отметить, что в любом процессе, управление сетевой передачей переходит от уровня к уровню, последовательно подключая протоколы на каждом из уровней. Нижние уровни отвечают за физические параметры передачи, такие как электрические сигналы. Да – да, сигналы в проводах передаются с помощью представления в токи. Токи представляются в виде последовательности единиц и нулей (1 и 0), затем, данные декодируются и маршрутизируются по сети. Более высокие уровни охватывают запросы, связанные с представлением данных. Условно говоря, более высокие уровни отвечают за сетевые данные с точки зрения пользователя.

Модель OSI была изначально придумана как стандартный подход, архитектура или паттерн, который бы описывал сетевое взаимодействие любого сетевого приложения. Рассмотрим каждый уровень Модели OSI подробнее:

 

  1. Уровень. Физический. Единицей нагрузки (PDU – protocol data unit) здесь является бит. Кроме единиц и нулей физический уровень не знает ничего. На этом уровне работают провода, патч панели, сетевые концентраторы (хабы, которые сейчас уже сложно найти в привычных нам сетях), сетевые адаптеры. Именно сетевые адаптеры и ничего более из компьютера. Сам сетевой адаптер принимает последовательность бит и передает её дальше.
  2. Уровень. Канальный (data link). PDU - кадр (frame). На этом уровне появляется адресация. Адресом является MAC адрес. Канальный уровень ответственен за доставку кадров адресату и их целостность. В привычных нам сетях на канальном уровне работает протокол ARP. Адресация второго уровня работает только в пределах одного сетевого сегмента и ничего не знает о маршрутизации - этим занимается вышестоящий уровень. Соответственно, устройства, работающие на L2 - коммутаторы, мосты и драйвер сетевого адаптера.
  3. Уровень. Сетевой (network). PDU пакет (packet). Наиболее распространенным протоколом тут является IP. Адресация происходит по IP-адресам, которые состоят из 32 битов. Протокол маршрутизируемый, то есть пакет способен попасть в любую часть сети через какое-то количество маршрутизаторов. На L3 работают маршрутизаторы.
  4. Уровень. Транспортный. PDU сегмент/дейтаграмма. На этом уровне появляются понятия портов. Тут трудятся TCP и UDP. Протоколы этого уровня отвечают за прямую связь между приложениями и за надежность доставки информации. Например, TCP умеет запрашивать повтор передачи данных в случае, если данные приняты неверно или не все. Так же TCP может менять скорость передачи данных, если сторона приема не успевает принять всё.
  5. Уровень. Сеансовый. PDU данные. Управляет сеансом связи, обменом информации, правами. Протоколы - L2TP, PPTP.
  6. Уровень. Представительский. PDU данные. Преставление и шифрование данных. JPEG, ASCII, MPEG.
  7. Уровень. Прикладной. PDU данные. Самый многочисленный и разнообразный уровень. На нем выполняются все высокоуровневые протоколы. Такие как POP, SMTP, RDP, HTTP и т.д. Протоколы здесь не должны задумываться о маршрутизации или гарантии доставки информации - этим занимаются нижестоящие уровни. На 7 уровне необходима лишь реализации конкретных действий, например получение html-кода или email-сообщения конкретному адресату.

 

Клиент-серверная архитектура

 

Термин «клиент-серверная архитектура» – тип компонентно-коннекторной архитектуры, в которой сетевая нагрузка распределены между поставщиками услуг, называемыми серверами, и заказчиками услуг, называемыми клиентами.

Клиент – локальный компьютер на стороне виртуального пользователя, который выполняет отправку запроса к серверу для возможности предоставления данных или выполнения определенной группы системных действий.

Сервер – очень мощный компьютер или специальное системное оборудование, которое предназначается для разрешения определенного круга задач по процессу выполнения программных кодов. Он выполняет работы сервисного обслуживания по клиентским запросам, предоставляет пользователям доступ к определенным системным ресурсам, сохраняет данные или БД.

Это может быть вычислительная или сетевая архитектура, в которой задания или сетевая нагрузка распределены между поставщиками услуг, называемыми серверами, и заказчиками услуг, называемыми клиентами.

Клиентские функции - отправка запросов и отображение результатов.

Серверные функции - обработка запросов.

Основная причина разделения на клиент и сервер – это снижение затрат.

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

Если одновременно поступает более одного запроса, то такие запросы устанавливаются в определенную очередь и сервером выполняются по очереди. Порой запросы могут иметь свои собственные приоритеты. Часть запросов с более высокими приоритетами будут постоянно выполняться в первоочередном порядке!

Параметры, которые могут реализоваться на стороне сервера:

  1. Хранение, защита и доступ к данным;
  2. Работа с поступающими клиентскими запросами;
  3. Процесс отправки ответа клиенту.

Параметры, которые могут реализоваться на стороне клиента:

  1. Площадка по предоставлению пользовательского графического интерфейса;
  2. Формулировка запроса к серверу и его последующая отправка;
  3. Получение итогов запроса и отправка дополнительной группы команд (запросы на добавление, обновление информации, удаление группы данных).

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

Сетевой протокол – набор правил и действий (очерёдности действий), позволяющий осуществлять соединение и обмен данными между двумя и более включёнными в сеть устройствами.

ВИДЫ СЕТЕВЫХ ПРОТОКОЛОВ

TCP/IP – совокупность протоколов передачи информации. TCP/IP – это особое обозначение всей сети, которая функционирует на основе протоколов TCP, а также IP.

TCP – вид протокола, который является связующим звеном для установки качественного соединения между 2 устройствами, передачи данных и верификации их получения.

IP – протокол, в функции которого входит корректность доставки сообщений по выбранному адресу. При этом информация делится на пакеты, которые могут поставляться по-разному.

MAC – вид протокола, на основании которого происходит процесс верификации сетевых устройств. Все устройства, которые подключены к сети Интернет, содержат свой оригинальный MAC-адрес.

ICMP – протокол, который ответственен за обмен данными, но не используется для процесса передачи информации.

UDP – протокол, управляющий передачей данных, но данные не проходят верификацию при получении. Этот протокол функционирует быстрее, чем протокол TCP.

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

FTP – протокол передачи информации из особого файлового сервера на ПК конечного пользователя.

POP3 – классический протокол простого почтового соединения, который ответственен за передачу почты.

SMTP – вид протокола, который может устанавливать правила для передачи виртуальной почты. Он ответственен за передачу и верификацию доставки, а также оповещения о возможных ошибках.

Сильный клиент

Концепция, при которой часть обработки данных предоставляет клиенту. В такой ситуации сервер является простым хранилищем информации, а вся деятельность по обработке и предоставлению данных переносится на ПК пользователя.

Продукт или система, которая говорит о том, что часть обрабатывающей информации предоставляется пользователю.

При такой ситуации сервер выступает особым хранилищем информации, а вся деятельность по обработке и предоставлению данных может переноситься на ПК пользователя.

 

ВИДЫ КЛИЕНТ-СЕРВЕРНЫХ АРХИТЕКТУР:

  1. Двухуровневая (двухзвенная):

· Клиент, который может предоставлять пользовательский графический интерфейс.

· Веб-сервер, который ответственен за получение входящих запросов и отправку ответа пользователю, применяя при этом собственные ресурсы системы;

База данных фактически не является частью веб-сервера, но большинство приложений просто не могут выполнять все возложенные на них функции без нее, так как именно в базе данных хранится вся динамическая информация приложения (учетные, пользовательские данные и пр).

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

  1. Трехуровневая (трехзвенная):

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

Третьим звеном в трехзвенной архитектуре становится сервер приложений, т.е. компоненты распределяются следующим образом:

  • Представление данных — на стороне клиента. Этот уровень не должен иметь прямых связей с базой данных быть нагруженным основной бизнес-логикой и хранить состояние приложения. На этот уровень обычно выносится только простейшая бизнес-логика: интерфейс авторизации, несложные операции с данными (сортировка, группировка, подсчёт значений), уже загруженными на терминал.
  • Прикладной компонент — на выделенном сервере приложений (как вариант, выполняющем функции промежуточного ПО). На этом уровне сосредоточена большая часть бизнес-логики.
  • Управление ресурсами — на сервере БД, который и представляет запрашиваемые данные. Сервер БД обеспечивает хранение и предоставление данных.

Особенность работы состоит в том, что сразу несколько серверов могут обрабатывать клиентские запросы. Процесс распределения операций может существенным образом снизить нагрузку на используемый сервер.

Сравнение:

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

Трехзвенная архитектура сложнее, но, благодаря тому, что функции распределены между серверами второго и третьего уровня, эта архитектура предоставляет:

  • Высокую степень гибкости и масштабируемости.
  • Высокую безопасность (т.к. защиту можно определить для каждого сервиса или уровня).
  • Высокую производительность (т.к. задачи распределены между серверами).
  1. Многоуровневая система

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

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

 

ИТОГИ

Нюансы взаимодействия системы клиент-сервер позволяют пользователям разделять определенный функционал и вычислительную нагрузку между подключенными клиентскими веб-продуктами и серверными приложениями при разнообразных процессах тестирования (от тестирования БД до замеров общей производительности системы).

Понимание программистами и тестировщиками внутренней архитектуры приложения позволяют им более качественно не только создавать продукт, но и тестировать его, выполняя полноценные проверки от кроссбраузерного соответствия до регрессионных тестов.

https://habr.com/ru/post/495698/

https://www.youtube.com/watch?v=wLHuviTWnuY

 

Front - end Back - end

 

Фронтендом называют клиентскую сторону пользовательского интерфейса по отношению к программно-аппаратной части сервиса, простыми словами все, что браузер может читать, выводить на экран и/или запускать. То есть это HTML, CSS и JavaScript.

Откройте страницу любого веб-сайта, и вы увидите перед собой его интерфейс. А потом щёлкните правой кнопкой мыши и нажмите «Посмотреть код страницы». Этот код и будет примером фронтенда. Он описывает всё, что вы видите, начиная от вёрстки и всей палитры цветов, заканчивая шрифтами, графическими элементами и т. п.

Код клиентской части написан с использованием HTML, CSS и JavaScript; выполняется внутри веб-браузера и имеет ограниченный доступ, или вообще никакого к операционной системе (включая ограниченный доступ к файловой системе).

HTML (от английского HyperText Markup Language) — это язык гипертекстовой разметки страницы. Он используется для того, чтобы дать браузеру понять, как нужно отображать загруженный сайт.

CSS (Cascading Style Sheets, каскадные таблицы стилей) — язык описания внешнего вида HTML-документа. Это одна из базовых технологий в современном интернете. Практически ни один сайт не обходится без CSS, поэтому HTML и CSS действуют в единой связке.

JavaScript — это язык скриптов, на котором держится весь frontend веб-разработки. Он позволяет перехватывать события и выполнять различные действия. Например, пользователь кликнул по какой-нибудь кнопке — сработало событие click. И, связав с ним, мы можем выполнить нужную нам функцию — открыть модальное окно или изменить цвет элемента.

Бэкенд — это программно-аппаратная часть сервиса. Это набор средств, с помощью которых происходит реализация логики веб-сайта. Это то, что скрыто от наших глаз, т. е. происходит вне компьютера и браузера.

Как только вы введёте запрос на странице поисковика и нажмёте клавишу «Ввод», frontend закончится и начнётся backend. Ваш запрос отправится на сервер Яндекса или Google, т. е. по месту расположения алгоритмов поиска. Именно там и происходит вся «магия». Но вот, на мониторе появляются данные, которые вы запрашивали, — это происходит возвращение во frontend.

Для разработки серверной части вы можете использовать любой универсальный язык программирования: Ruby, PHP, Python, Java, JavaScript / Node, bash. Это также означает, что вы можете использовать системы управления базами данных, такие как MySQL, PostgreSQL, MongoDB, Cassandra, Redis, Memcached.

Бизнес-логика

 

В контексте клиент-серверной архитектуры мы употребляем термин Бизнес-логика. Мы говорим, что для снижения нагрузки на клиенте основная часть бизнес-логики переносится на сервер. В IT термин «бизнес-логика» широко употребляется и имеете ни много значений. Давайте разберемся с основными понятиями.

Бизнес-логика — в разработке информационных систем — совокупность правил, принципов, зависимостей поведения объектов предметной области (области человеческой деятельности, которую система поддерживает).

Является синонимом термина «логика предметной области» (англ. domain logic).

Ещё определения:

  • реализация правил и ограничений автоматизируемых операций;
  • реализация предметной области в информационной системе;
  • система взаимосвязей и взаимозависимостей бизнес-данных, поддерживаемая при реализации бизнес-правил;
  • взаимодействие между компонентами системы, приводящее к результату, значимому для пользователя;
  • модель работы системы

Примечание: слово «бизнес» в данном случае не относится к прибыли и денежным знакам, а лишь определяет, что система предназначена для кого-то. Для лучшего понимания можно заменить «бизнес-логика» на логика работы.

В разработке программного обеспечения «бизнес-логикой» также называются программные модули, её реализующие, и уровень системы, на котором эти модули находятся (англ. business logic layer, domain logic layer).

Примеры:

  • формулы расчёта ежемесячных выплат по ссудам (в финансовой индустрии);
  • автоматизированная отправка сообщений электронной почты руководителю проекта по окончании выполнения частей задания всеми подчиненными (в системах управления проектами);
  • отказ от отеля при отмене рейса авиакомпанией (в туристическом бизнесе) и т.д.

В фазе бизнес-моделирования и разработки требований бизнес-логика может описываться в виде:

  • текста;
  • концептуальных аналитических моделей предметной области (онтологии);
  • бизнес-правил;
  • разнообразных алгоритмов;
  • диаграмм деятельности;
  • графов и диаграмм перехода состояний;
  • моделей бизнес-процессов.

В фазе анализа и проектирования системы бизнес-логика воплощается в различных диаграммах языка UML или ему подобных. В фазе программирования бизнес-логика воплощается в коде классов и их методов, в случае использования объектно-ориентированных языков программирования, или процедур и функций, в случае применения процедурных языков.

В многоуровневых (многослойных) информационных системах этот уровень взаимодействует с нижележащим уровнем инфраструктурных сервисов (англ. infrastructure layer), например, интерфейсом доступа к базе данных или файловой системе (англ. data-access layer, DAL) и вышележащим уровнем сервисов приложения (англ. application services layer), который уже, в свою очередь, взаимодействует с уровнем пользовательского интерфейса (англ. user interface layer) или внешними системами.

https://ru.qaz.wiki/wiki/Business_logic

https://habr.com/ru/post/219445/

Браузеры

 

“Ok, Google – что такое браузер?”, - и чтобы получить ответ на этот вопрос перед нами открывается браузер. Мы используем браузер постоянно для поиска информации, просмотра сайтов, скачивания файлов любого формата, для загрузки аудио и видеофайлов и т.д., но знаем ли мы действительно, что это? А браузер – это и есть HTTP-клиент, который обменивается с сервером информацией по HTTP-протоколу. Его работа заключается в том, чтобы загрузить веб-страницу и представить её в понятном для человека виде.

Самые популярные браузеры на сегодняшний день — это Google Chrome, Opera, Firefox, Safari, Яндекс. Chrome и Firefox относятся к браузерам с открытым исходным кодом.

Независимо от вида браузера, механизм работы у всех одинаковый. Упрощенно работа браузера выглядит следующим образом:

  1. Пользователь открывает свой браузер и вводит адрес нужного сайта.
  2. Браузер ищет сервер. Браузер ищет сервер по IP-адресу, который уникален для каждого сайта. Сначала он далеко не идет, а ищет его в кэше роутера, операционной системе или же в истории подключений, которая хранит информацию об IP-адреса сервера, если его уже посещали ранее. Если браузер там его не находит, он смотрит в DNS (Domain Name System).
  3. Браузер пытается установить соединение с сервером. Теперь, когда браузер нашел нужный IP-адрес, он устанавливает с ним соединение с помощью специального протокола TCP/IP, который отвечает за передачу данных в интернете. Для установки соединения используется процесс “рукопожатие” (с англ. handshaking), который проходит в три этапа: серверу отправляется специальный запрос с номером последовательности и флагом SYN; потом он отправляет ответный запрос с подтверждением получения SYN — ACK; после этого сервер посылает подтверждение приема — ACK и соединение считается установленным.
  4. Браузер отправляет HTTP запрос на сервер. Таким образом он запрашивает информацию для того, чтобы отобразить страницу. Эта коммуникация осуществляется с помощью GET-запроса и POST-запроса.
  5. Сервер обрабатывает запрос и отправляет ответ браузеру. Запрос обрабатывается следующими веб-серверами: Apache, nginx, lighttpd. После этого сервер отправляет браузеру ответ с данными о файлах cookie, способах кэширования ну и, конечно же, контентом для отображения страницы.
  6. Браузер обрабатывает ответ и отображает запрашиваемый контент. Это называется рендерингом. Пока он происходит, браузер и сервер обмениваются данными. По завершении, пользователь видит загруженную страницу.

Помимо главной функции — открытие страниц сайтов, браузер выполняет и другие задачи. Мы кратко рассмотрели их ниже.

  • Позволяет скачивать файлы любого типа.
  • Позволяет использовать почту.
  • Сохраняет пароли для сайтов.
  • Сохраняет историю посещенных страниц.
  • Добавляет закладки.
  • Поддерживают разные дополнения (плагины и расширения)

 

https://habr.com/ru/company/edison/blog/432870/

https://ip-calculator.ru/blog/ask/brauzer-obshhie-printsipy-raboty-programmy-po-otobrazheniyu-sajtov/

 

Веб-приложения

 

Иногда возникает путаница, в чем разница между веб-приложением и клиент-серверным приложением?

Веб-приложение – это клиент-серверное приложение, в котором клиентом выступает браузер, а сервером – веб-сервер (в широком смысле). Другими словами, клиент-серверное приложение можно рассматривать как суперкласс, в котором веб-приложение является дочерним классом.

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

Веб-приложения обычно используют комбинацию клиентского сценария (выполняется на компьютере-клиенте, например, HTML, Javascript) и серверного сценария (выполняется на веб-сервере до передачи страницы пользователю, например, ASP, PHP). Клиентский скрипт имеет дело с представлением информации, в то время как серверный скрипт имеет дело со всеми сложными вещами, такими как хранение и получение информации.

Сценарий (скрипт)— это код, средствами которого можно манипулировать веб-страницами.

Чтобы клиентский сценарий действовал, программа просмотра должна поддерживать язык, на котором он написан. Работа же серверных сценариев не зависит от программы просмотра.

Клиентский сценарий размещается в виде кода в HTML-документе. Когда браузер встретит в НТМL-коде сценарий, она вызовет интерпретатор для его анализа и выполнения.

Итак, первой и одной из ключевых особенностей веб-приложений является их архитектура.

Веб-приложение представлено следующими составляющими («сторонами»):

1. Клиент

Как правило, клиент – это браузер, но встречаются и исключения (в тех случаях, когда один веб-сервер (ВС1) выполняет запрос к другому (ВС2), роль клиента играет веб-сервер ВС1). В классической ситуации (когда роль клиента выполняет браузер) для того, чтобы пользователь увидел графический интерфейс приложения в окне браузера, последний должен обработать полученный ответ веб-сервера, в котором будет содержаться информация, реализованная с применением HTML, CSS, JS (самые используемые технологии). Именно эти технологии «дают понять» браузеру, как именно необходимо «отрисовать» все, что он получил в ответе.

2. Сервер

Веб-сервер – это сервер, принимающий HTTP-запросы от клиентов и выдающий им HTTP-ответы. Дабы избежать возможной путаницы, отметим, что веб-сервером называют как программное обеспечение, выполняющее функции веб-сервера, так и непосредственно компьютер, на котором это программное обеспечение работает. Наиболее распространенными видами ПО веб-серверов являются Apache, IIS и NGINX. На веб-сервере функционирует тестируемое приложение, которое может быть реализовано с применением самых разнообразных языков программирования: PHP, Python, Ruby, Java, Perl и пр.

3. База данных

В классической теории речь идет о двух «сторонах» веб-приложения, однако, если внимательно посмотреть на весь процесс работы приложений, мы можем отметить, что в алгоритме работы веба незримо, но довольно активно принимает участие еще одна «сторона» – база данных. Фактически, она не является частью веб-сервера, но большинство приложений просто не могут выполнять все возложенные на них функции без нее, так как именно в базе данных хранится вся динамическая информация приложения (учетные, пользовательские данные и пр).

КАКИЕ БЫВАЮТ ВЕБ-ПРИЛОЖЕНИЯ

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

Backend (бэкенд или серверная часть приложения) работает на удаленном компьютере, который может находиться где угодно. Она может быть написана на разных языках программирования: PHP, Python, Ruby, C# и других. Если создавать приложение используя только серверную часть, то в результате любых переходов между разделами, отправок форм, обновления данных, сервером будет генерироваться новый HTML-файл и страница в браузере будет перезагружаться.

Frontend (фронтенд или клиентская часть приложения) выполняется в браузере пользователя. Эта часть написана на языке программирования Javascript. Приложение может состоять только из клиентской части, если не требуется хранить данные пользователя дольше одной сессии. Это могут быть, например, фоторедакторы или простые игрушки.

Single page application (SPA или одностраничное приложение). Более интересный вариант, когда используются и бэкенд и фронтенд. С помощью их взаимодействия можно создать приложение, которое будет работать совсем без перезагрузок страницы в браузере. Или в упрощенном варианте, когда переходы между разделами вызывают перезагрузки, но любые действия в разделе обходятся без них.

В данном разделе рассматриваются технологии, позволяющие создавать веб-приложения, выполняющиеся на стороне клиента (JavaScript, Java-апплеты), так и на стороне сервера (Java-сервлеты).

Ко всем программам, которые передаются с сервера на клиент-машины и запускаются на выполнение, предъявляется одно общее требование: эти программы должны быть лишены возможности обращаться к ресурсам компьютера, на котором они выполняются.

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

JavaScript ("JS")— это полноценный динамический язык программирования, который применяется к HTML документу, и может обеспечить динамическую интерактивность на веб-сайтах.

JS предназначен для написания сценариев для активных HTML страниц. Не предназначен для создания автономных приложений. Программа на JS встраивается непосредственно в исходный текст HTML документа и интерпретируется браузером по мере загрузки этого документа. С помощью JS можно создать динамически обновляемый контент, игры, анимированную 2D и 3D графику, управлять мультимедиа.

Важная особенность JavaScript – объектная ориентированность. Программисту доступны многочисленные объекты, такие, как документы, гиперссылки, формы, фреймы и т.д. Объекты характеризуются описательной информацией (свойствами) и возможными действиями (методами).

Протокол HTTP

 

ЗАПРОСЫ И ОТВЕТЫ: ИХ СТРУКТУРА, ФОРМИРОВАНИЕ И МЕТОДЫ

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

Они имеют близкую структуру и состоят из следующих элементов:

  1. Стартовая строка (Starting line, Строка запроса) — определяет тип сообщения, описывае запрос, или статус (успех или сбой). Это всегда одна строка.
  2. Заголовки (Headers) — произвольный набор заголовков,определяющих запрос или описывающих тело сообщения, характеризуют тело сообщения, параметры передачи и прочие сведения. Представляют из себя несколько пар значений, разделённых двоеточиями.
  3. Тело сообщения (Message Body) — непосредственно данные сообщения (например, содержимое HTML-формы) или отправляемый в ответ документ. Наличие тела и его размер определяется стартовой строкой и заголовками HTTP. Обязательно должно отделяться от заголовков пустой строкой.

Тело сообщения может отсутствовать, но стартовая строка и заголовок являются обязательными элементами.

Стартовую строку вместе с заголовками сообщения HTTP называют головой запроса, а его данные - телом.

HTTP- запросы (Requests)

Каждое HTTP-запрос состоит:

  1. Стартовая строка, которая в свою очередь состоит из 3-х элементов:

· Метод HTTP - это метод, который сообщает, какой метод HTTP используется. Чаще всего используется метод GET. Метод GET извлекает ресурс с веб-сервера, и поскольку у GET нет тела сообщения, после заголовка ничего не требуется. (О методах HTTP подробней ниже)

· Цель запроса, обычно URL, или абсолютный путь протокола, порт и домен обычно характеризуются контекстом запроса.

· Версия HTTP - используемая версия HTTP. Версия 1.1. является наиболее распространенной для большинства браузеров, однако, версия 2.0 становится популярнее.

  1. Заголовки (Headers) – может быть один или несколько заголовков.

Эти значения могут быть самыми разными, но наиболее распространенными являются:

Host - содержит имя сайта, наличие такого заголовка позволяет хостить несколько сайтов на одном IP адресе)

User-Agent - дополнительная информация об используемом браузере, который по задумке должен обозначать вид используемого браузера, а на практике сложным образом описывает список поддерживаемых браузером технологий.

Accept - определяет формат данных в ответе, который нужен клиенту

Connection – «close» означает, что клиент хочет закрыть TCP соединение сразу после получения ответа от сервера.

  1. Тело сообщения (Message Body) - оно бывает не у всех запросов: запросы, собирающие ресурсы, такие как GET, HEAD, DELETE, или OPTIONS, в нем обычно не нуждаются.

Если запрос сформирован правильно, и сервер функционирует нормально, и сеть в порядке то в ответ на HTTP пакет от клиента придёт ответ, который выглядит примерно вот так:

HTTP- ответы (Responses)

Структура HTTP ответа:

  1. Строка статуса (status line)

Стартовая строка ответа HTTP, называемая строкой статуса, содержит следующую информацию:

· Версию протокола, обычно HTTP/1.1.

· Код состояния (status code), показывающая, был ли запрос успешным. Примеры: 200, 404 или 302

· Пояснение (status text). Краткое текстовое описание кода состояния, помогающее пользователю понять сообщение HTTP.

Пример строки статуса: HTTP/1.1 404 Not Found.

  1. Заголовки

Имеют ту же структуру, что и все остальные заголовки: не зависящая от регистра строка, завершаемая двоеточием (':') и значение, структура которого определяется типом заголовка.

  1. Тело

Опционально, содержит пересылаемый ресурс.

Методы HTTP запроса

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

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

Метод HTTP (method) это чащеглагол (например, GET, PUT или POST), но может быть и существительное (например, HEAD или OPTIONS), описывающие требуемое действие. Эти методы запроса иногда в англоязычной терминологии называются HTTP глаголами (verb). Существует несколько HTTP методов, которые описывают действия с ресурсами, но наиболее распространёнными методами являются GET и POST. Каждый сервер обязан поддерживать как минимум методы GET и HEAD.

GET

Метод GET запрашивает информацию из указанного источника и не влияет на его содержимое.

  • GET-запросы не изменяют состояние ресурса
  • GET-запросы должны только получать данные
  • Запрос не имеет тела
  • Запрос доступен для кеширования данных и добавления в закладки
  • Строка запроса (имя/значение) отправляется в URL после символа «?»:

/login-check.php?argument1=value1&argument2=value2

  • Длина запроса ограничена (макс. длина URL - 2048)

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

Согласно стандарту HTTP, запросы типа GET считаются идемпотентными.

Идемпотентность— свойство объекта или операции при повторном применении операции к объекту давать тот же результат, что и при первом. Метод HTTP является идемпотентным, если повторный идентичный запрос, сделанный один или несколько раз подряд, имеет один и тот же эффект, не изменяющий состояние сервера.

Кроме обычного метода GET, различают ещё:

· Условный GET — содержит заголовки If-Modified-Since, If-Match, If-Range и подобные;

· Частичный GET — содержит в запросе Range.

Порядок выполнения подобных запросов определён стандартами отдельно.

POST

Предназначен для передачи необработанных данных на сервер (для обработки и хранения)

  • Метод POST используется для отправки данных, что может оказывать влияние на содержимое ресурса
  • Запрос имеет тело
  • В отличие от метода GET запросы POST не могут быть кешированы, они не остаются в истории браузера и их нельзя добавить в закладки
  • Запросы POST не ограничиваются в объеме
  • Отправляемые данные содержатся в теле запроса

Например, в блогах посетители обычно могут вводить свои комментарии к записям в HTML-форму, после чего они передаются серверу методом POST и он помещает их на страницу. При этом передаваемые данные (в примере с блогами — текст комментария) включаются в тело запроса. Аналогично с помощью метода POST обычно загружаются файлы на сервер.

В отличие от метода GET, метод POST не считается идемпотентным, то есть многократное повторение одних и тех же запросов POST может возвращать разные результаты (например, после каждой отправки комментария будет появляться очередная копия этого комментария).

В результате выполнения 200 (Ok) в тело ответа следует включить сообщение об итоге выполнения запроса.

Если был создан ресурс, то серверу следует вернуть ответ 201 (Created) с указанием URI нового ресурса в заголовке Location.

Сообщение ответа сервера на выполнение метода POST не кэшируется.

HEAD

Аналогичен методу GET, за исключением того, что в ответе сервера отсутствует тело. Запрос HEAD обычно применяется для извлечения метаданных, проверки наличия ресурса (валидация URL) и чтобы узнать, не изменился ли он с момента последнего обращения.

Заголовки ответа могут кэшироваться. При несовпадении метаданных ресурса с соответствующей информацией в кэше — копия ресурса помечается как устаревшая.

PUT

PUT заменяет все текущие представления ресурса данными запроса. Применяется для загрузки содержимого запроса на указанный в запросе URI.

Если по заданному URI не существует ресурс, то сервер создаёт его и возвращает ст



Поделиться:


Последнее изменение этой страницы: 2021-11-27; просмотров: 343; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.119.104.238 (0.106 с.)