Skip to content
Ростислав edited this page Dec 11, 2022 · 23 revisions

Билет 15

1. Понятие единого указателя ресурса. Форма записи и основные протоколы. Понятия абсолютного и относительного пути.

2. Современные языки определения и обмена данными в интернете (XML, XSD, JSON).

◀️ Реферат к вопросам экзамена по дисциплине Интернет-технологии 1 курса магистратуры ▶️

Выполнили: Полс Андрей ИДМ-22-06, Берковец Александр ИДМ-22-03, Белов Владислав ИДМ-22-02, Чурбанов Ростислав ИДМ-22-08

Понятие единого указателя ресурса. Форма записи и основные протоколы. Понятия абсолютного и относительного пути.

Единый указатель ресурсов (англ. URL — Uniform Resource Locator) — единообразный локатор (определитель местонахождения) ресурса. Ранее назывался Universal Resource Locator — универсальный локатор ресурса. URL — это стандартизированный способ записи адреса ресурса в сети Интернет.

Изначально локатор URL был разработан как система для максимально естественного указания на местонахождения ресурсов в сети. Локатор должен был быть легко расширяемым и использовать лишь ограниченный набор ASCII - символов (к примеру, пробел никогда не применяется в URL). В связи с этим, возникла следующая традиционная форма записи URL:

<схема>://<логин>:<пароль>@<хост>:<порт>/<URL-путь>
  • Схема – это тот протокол передачи данных, по которому, происходит обращение к ресурсу (http/https).

  • Логин и пароль — имя пользователя и пароль, используемые для доступа к ресурсу. Связка логин и пароль не всегда используется. Например, для доступа к какой-либо веб-странице, по протоколу http – как правило, эти данные не указывают.

  • @ — разделитель между хостом и парой логин-пароль. В случае, если логин-пароль не указывается, то разделитель не указывается.

  • Хост – доменное имя или IP-адрес (ссылки) того ресурса, к которому нужно обратиться.

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

  • URL — путь – указывается уточняющая информация о местонахождении ресурса. Зависит от используемого протокола. В случае с протоколом HTTP задается путь с указанием каталогов и подкаталогов, где лежит ресурс.

  • Параметры – следуют сразу после имени файла и пишутся после знака вопроса (?). Для разделения этих параметров используется знак амперсанда (&).

  • Якорь – это специальная строка, в которой могут иметься как буквенные символы, так и цифры. С помощью якоря ссылаются на определенное место на сайте, который открывается. Благодаря этому пользователь попадается не на главную страницу портала, а сразу в нужное место. Якорь располагается в единообразном локаторе сразу после знака решетки (#).

Общепринятые схемы (протоколы) URL включают:

  • ftp — Протокол передачи файлов FTP

  • http — Протокол передачи гипертекста HTTP

  • https — Специальная реализация протокола HTTP, использующая шифрование (как правило, SSL или TLS)

  • mailto — Адрес электронной почты [2]

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

Относительный URL-адрес находит ресурс, используя абсолютный URL-адрес в качестве отправной точки. По сути, "полный URL-адрес" целевого объекта указывается путем объединения абсолютных и относительных URL-адресов. Относительный URL-адрес обычно состоит только из пути и, при необходимости, ресурса, но без схемы или сервера [3].

Современные языки определения и обмена данными в интернете (XML, XSD, JSON).

XML ( англ. eXtensible Markup Language) — расширяемый язык разметки, предназначенный для хранения и передачи данных.

Простейший XML-документ выглядит следующим образом:

<?xml version="1.0" encoding="windows-1251"?>
<book category="WEB">
   <title lang="en">Learning XML</title>
   <author>Erik T. Ray</author>
   <year>2003</year>
   <price></price>
</book>

Первая строка — это XML декларация. Здесь определяется версия XML (1.0) и кодировка файла. На следующей строке описывается корневой элемент документа <book> (открывающий тег). Следующие 4 строки описывают дочерние элементы корневого элемента ( title, author, year, price). Последняя строка определяет конец корневого элемента </book> (закрывающий тег).

XML документ должен содержать корневой элемент. Этот элемент является «родительским» для всех других элементов.

Все элементы в XML документе формируют иерархическое дерево. Это дерево начинается с корневого элемента и разветвляется на более низкие уровни элементов.

Все элементы могут иметь подэлементы (дочерние элементы) [4]:

<корневой>
   <потомок>
     <подпотомок>.....</подпотомок>
   </потомок>
</корневой>

XML Schema — язык описания структуры XML - документа. Спецификация XML Schema является рекомендацией W3C.

XML Schema, как и большинство языков описания данных XML, был задуман для определения правил, которым должен подчиняться документ. Но в отличие от других языков описания данных он был разработан так, чтобы его можно было использовать в создании программного обеспечения для обработки XML-документов.

После проверки документа на соответствие XML Schema читающая программа может создать модель документа (конкретный тип документа как в DTD), которая включает:

  • словарь (названия элементов и атрибутов);
  • модель отношений между элементами и атрибутами и их структуру;
  • типы данных элементов и атрибутов. Каждый элемент в этой модели ассоциируется с определённым типом данных, позволяя строить в памяти как каркас (по схеме) будущего объекта, так и сам объект (при наполнении каркаса данными), соответствующие заданной структуре (схеме) XML-документа. Языкам объектно-ориентированного программирования гораздо легче иметь дело с таким объектом, чем с текстовым файлом.

Другим удобством XML Schema является то, что один словарь может ссылаться на другой, и, таким образом, разработчик может использовать уже существующие словари и легче устанавливать и распространять стандарты XML-структуры для определённых задач (например, словарь протокола SOAP).

Файл, содержащий XML Schema, обычно имеет расширение «.xsd» (XML Schema definition) [5].

Простой пример схемы на XML Schema, расположенной в файле "country.xsd" и описывающей данные о населении страны:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="country">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="country_name" type="xs:string"/>
        <xs:element name="population" type="xs:decimal"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

Пример документа, соответствующего этой схеме:

<?xml version="1.0" encoding="utf-8"?>
<country>
    <country_name>France</country_name>
    <population>59.7</population>
</country>

Схемы XSD способны решать следующие задачи:

  • Перечисление элементов в документе XML и проверка наличия в документе только объявленных элементов.
  • Объявление и определение атрибутов, модифицирующих элементы документа.
  • Определение родительско-дочерних отношений между элементами.
  • Определение состояний и моделей содержания для элементов и атрибутов.
  • Задание типов данных.
  • Установка значений по умолчанию.
  • Возможность расширения.
  • Поддержка использования пространств имен.

JSON (англ. JavaScript Object Notation) — текстовый формат обмена данными, основанный на JavaScript. Как и многие другие текстовые форматы, JSON легко читается людьми. Формат JSON был разработан Дугласом Крокфордом.

Несмотря на происхождение от JavaScript (точнее, от подмножества языка стандарта ECMA-262 1999 года), формат считается независимым от языка и может использоваться практически с любым языком программирования. Для многих языков существует готовый код для создания и обработки данных в формате JSON [1].

За счёт своей лаконичности по сравнению с XML формат JSON может быть более подходящим для сериализации сложных структур. Применяется в веб-приложениях как для обмена данными между браузером и сервером (AJAX), так и между серверами (программные HTTP-сопряжения).

Поскольку формат JSON является подмножеством синтаксиса языка JavaScript, то он может быть быстро десериализован встроенной функцией JSON.parse().

JSON-текст представляет собой (в закодированном виде) одну из двух структур:

  • Набор пар ключ: значение. В различных языках это реализовано как запись, структура, словарь, хеш-таблица, список с ключом или ассоциативный массив. Ключом может быть только строка (регистрозависимость не регулируется стандартом, это остаётся на усмотрение программного обеспечения. Как правило, регистр учитывается программами — имена с буквами в разных регистрах считаются разными, например[7]), значением — любая форма. Повторяющиеся имена ключей допустимы, но не рекомендуются стандартом; обработка таких ситуаций происходит на усмотрение программного обеспечения, возможные варианты — учитывать только первый такой ключ, учитывать только последний такой ключ, генерировать ошибку.
  • Упорядоченный набор значений. Во многих языках это реализовано как массив, вектор, список или последовательность.

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

В качестве значений в JSON могут быть использованы:

  • запись — это неупорядоченное множество пар ключ:значение, заключённое в фигурные скобки «{ }». Ключ описывается строкой, между ним и значением стоит символ «:». Пары ключ-значение отделяются друг от друга запятыми.
  • массив (одномерный) — это упорядоченное множество значений. Массив заключается в квадратные скобки «[ ]». Значения разделяются запятыми. Массив может быть пустым, то есть не содержать ни одного значения. Значения в пределах одного массива могут иметь разный тип.
  • число (целое или вещественное).
  • литералы true (логическое значение «истина»), false (логическое значение «ложь») и null.
  • строка — это упорядоченное множество из нуля или более символов юникода, заключённое в двойные кавычки. Символы могут быть указаны с использованием escape-последовательностей, начинающихся с обратной косой черты «\» (поддерживаются варианты ", \, /, \t, \n, \r, \f и \b), или записаны шестнадцатеричным кодом в кодировке Unicode в виде \uFFFF.

Следующий пример показывает JSON-представление данных об объекте, описывающем человека. В данных присутствуют строковые поля имени и фамилии, информация об адресе и массив, содержащий список телефонов. Как видно из примера, значение может представлять собой вложенную структуру [6].

{
   "firstName": "Иван",
   "lastName": "Иванов",
   "address": {
       "streetAddress": "Московское ш., 101, кв.101",
       "city": "Ленинград",
       "postalCode": 101101
   },
   "phoneNumbers": [
       "812 123-1234",
       "916 123-4567"
   ]
}

На языке XML подобная структура выглядела бы примерно так:

<person>
  <firstName>Иван</firstName>
  <lastName>Иванов</lastName>
  <address>
    <streetAddress>Московское ш., 101, кв.101</streetAddress>
    <city>Ленинград</city>
    <postalCode>101101</postalCode>
  </address>
  <phoneNumbers>
    <phoneNumber>812 123-1234</phoneNumber>
    <phoneNumber>916 123-4567</phoneNumber>
  </phoneNumbers>
</person>

Применение

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

JSON хранит все свои данные в формате карты (пары ключ / значение), который является аккуратным и более простым для понимания. Пользователи делают упор на простоту моделирования данных или сопоставления непосредственно с объектами предметной области как на главное преимущество JSON перед XML, что делает его структуру более предсказуемой и легкой для понимания.

Если проекту требуется разметка документа и информация о метаданных, лучше использовать XML. В противном случае, для более организованного обмена данными, JSON может быть более предпочтительным выбором [7].

ИСТОЧНИКИ

  1. 📑 Лекции по дисциплине "Интернет-технологии"

  2. 📃 Представление об URL (универсальный указатель ресурсов), его структура

  3. 📃 Абсолютные и относительные URL-адреса

  4. 📃 I. Коротко об XML — Документация Краткое руководство по XML 01.12.2015 v2

  5. 📃 XML Schema (W3C) — Википедия

  6. 📃 JSON — Википедия

  7. 💬 JSON vs XML in 2022: Comparing Features and Examples

ИСТОЧНИКИ

  1. 📑 Учебный материал (лекция, практикум...) или стандарт

  2. 📃 Научно-популярная или техническая статья (Википедия...)

  3. 🎦 Видео-ролик

  4. 💻 Веб-приложение

  5. 💬 Чье-то мнение (хабр...)

Clone this wiki locally