Обмен данными Алексей Бучнев Ведущий системный аналитик в МТС Банке План занятия 1 Архитектура клиент-серверных приложений 2 HTTP протокол передачи данных 3 Представление объектов в нотации JSON 4 Маппинг данных Архитектура клиент-серверных приложений Архитектура информационных систем — концепция, определяющая модель, структуру, выполняемые функции и взаимосвязь компонентов информационной системы Клиент-серверная архитектура Клиент Сервер приложений Представление данных Управление данными Функциональная обработка Бизнес-логика Сервер баз данных Хранение данных Звенья клиент-серверной архитектуры Клиент Сервер приложений Сервер баз данных Программа, которая работает на стороне пользователя. Отвечает за представление данных и работу с пользователем (функциональная обработка) Программа, запущенная на сервере. Принимает запросы из сети, обрабатывает их и возвращает ответ. Реализует бизнес-логику Программный комплекс, который выполняет обслуживание и управление базой данных и отвечает за целостность и сохранность данных, а также обеспечивает операции ввода-вывода при доступе клиента к информации Звенья клиент-серверной архитектуры Клиент Просмотр и загрузка фотографии Сервер приложений Обработка фотографии: применение фильтра и т. д. Сервер баз данных Хранение загруженных фотографий Архитектура интернет-магазина Веб-портал (сайт) для клиента магазина Веб-портал для отдела продаж Веб-портал для отдела логистики HTTP Сервер приложений Сервер баз данных HTTP протокол передачи данных HTTP:// HyperText Transfer Protocol HTTP — широко распространённый протокол передачи данных, изначально предназначенный для передачи гипертекстовых документов — документов, которые могут содержать ссылки, позволяющие организовать переход к другим документам Запрос Клиент Ответ Сервер HTTP запрос Запрос состоит из метода POST адреса https://dadata.ru/demo/v2/suggest/address заголовков accept: application/json content-type: application/json тела запроса {query: "109012, г Москва, Красная пл, д 1", count: 1} Клиент Сервер HTTP ответ POST https://dadata.ru/demo/v2/suggest/address accept: application/json content-type: application/json {query: "109012, г Москва, Красная пл, д 1", count: 1} Клиент Ответ содержит код ответа заголовки тело ответа Сервер Status Code: 200 content-type: application/json {"suggestions":[{"value":"г Москва, Красная пл, д1", "unrestricted_value":"109012, г Москва, Тверской р-н, Красная пл, д 1" … } Представление объектов в нотации JSON {JSON} HTTP запрос и ответ Формат JSON Клиент Формат JSON POST https://dadata.ru/demo/v2/suggest/address accept: application/json content-type: application/json {query: "109012, г Москва, Красная пл, д 1", count: 1} Сервер Status Code: 200 content-type: application/json {"suggestions":[{"value":"г Москва, Красная пл, д1", "unrestricted_value":"109012, г Москва, Тверской р-н, Красная пл, д 1" … } JavaScript Object Notation JSON — текстовый формат обмена данными, основанный на JavaScript (популярный язык разработки web приложений). Позволяет представлять данные в виде объектов. JSON-текст представляет собой (в закодированном виде) одну из двух структур: набор пар Ключ-Значение: упорядоченный набор значений: { } "name": "Алексей" [ { }, { ] } "name": "Алексей" "name": "Андрей" JSON В качестве значений в JSON могут быть использованы: { строка число литералы (true, false, null) запись массив } "firstName": "Алексей", "lastName": "Бучнев", "age": 36, "children": [ { "name": "Алиса", "age": 7 }, { "name": "Андрей" } ], "isMarried": true, "contacts": { "email": "[email protected]", "phone": "+79998882222" } Маппинг данных Маппинг данных Маппинг данных — определение соответствия данных между потенциально различными семантиками одного объекта или разных объектов Маппинг данных — одна из типичных задач системного аналитика. Маппинг часто используется при интеграции нескольких систем { ... "delivery": { "type": "toClient", "address": { "index": 5555, "district": "Район", "city": "город", "village": "Населённый пункт", "street": "адрес", "house": "дом", "structure": "Строение", "flat": "квартира" } }, ... } Поле адреса после интеграции сервиса Dadata 1 Пользователь вводит адрес 4 Пользователь выбирает какой-то из предложенных вариантов адресов 2 Сайт интернет-магазина запрашивает варианты адресов у dadata 5 При отправке заказа на наш сервер, данные адреса полученные от dadata, подставляются в соответствующие адресные поля в формате JSON существующего HTTP запроса. Подстановка осуществляется согласно описанной логике маппинга 3 Полученные варианты отображаются пользователю для выбора 1 3 4 Web-портал (сайт) для клиента HTTP 2 HTTP 5 DADATA API (сервис подсказок) Сервер приложений интернет- магазина Сервер БД Итоги занятия 1 Архитектура информационных систем — концепция, определяющая модель, структуру, выполняемые функции и взаимосвязь компонентов информационной системы 2 Звенья клиент-серверной архитектуры: клиент, сервер приложений и сервер баз данных 3 HTTP — широко распространённый протокол передачи данных 4 Объекты могут быть представлены в формате JSON 5 Маппинг данных — определение соответствия данных между потенциально различными семантиками одного объекта или разных объектов Обмен данными t.me/AlexeyBuchnev Алексей Бучнев Ведущий системный аналитик в МТС Банке