- •Аннотация
- •Cодержание
- •Введение
- •1. Теоретические основы и архитектурные принципы Web-сервисов
- •1.1. Протокол soap и стандарты ws-*
- •1.2. Архитектурный стиль rest
- •1.3. Сравнение форматов данных: xml против json
- •1.4. Сравнительная характеристика подходов
- •2. Проектирование и программная реализация системы
- •2.1. Обоснование выбора стека технологий
- •2.2. Архитектурная организация серверной части
- •2.3. Реализация уровня данных (Data Access Layer)
- •2.4. Реализация soap-сервиса
- •2.5. Реализация rest-сервиса
- •2.6. Реализация клиентского приложения и сбор метрик
- •3. Анализ производительности
- •3.1. Методика тестирования
- •3.2. Результаты тестирования
- •3.2.1. Анализ размера данных (Traffic Overhead)
- •3.2.2. Анализ вычислительной сложности (Parsing Time)
- •3.2.3. Анализ времени загрузки в плохих условиях (Slow 3g)
- •3.3. Итоговое сравнение и выводы
- •Список использованных источников
- •Приложение а Код файла student.Wsdl
- •Листинг программного кода серверной части. Index.Ts
- •Листинг программного кода серверной части. Student.Repository.Ts
- •Листинг программного кода серверной части. Student.Soap.Ts
- •Листинг программного кода серверной части. Rest.Service.Ts
- •Листинг программного кода серверной части. Soap.Service.Ts
- •Листинг программного кода серверной части. ServicePanel.Vue
1.3. Сравнение форматов данных: xml против json
Выбор между SOAP и REST часто сводится к выбору формата сериализации данных: XML (для SOAP) или JSON (для REST).
XML (eXtensible Markup Language)
Преимущества: Поддержка сложных структур данных, наличие пространств имен (Namespaces), возможность строгой валидации через XSD-схемы, читаемость человеком.
Недостатки: Избыточность синтаксиса (открывающие и закрывающие теги), большой объем передаваемых данных.
Парсинг: Требует построения DOM-дерева, что является ресурсоемкой операцией для CPU и оперативной памяти.
JSON (JavaScript Object Notation)
Преимущества: Лаконичность (отсутствие тегов), прямая совместимость с объектами JavaScript, меньший размер сообщений [5].
Недостатки: Отсутствие встроенной поддержки пространств имен, слабая поддержка валидации (хотя существует JSON Schema), ограниченный набор типов данных (строки, числа, булевы значения, массивы, объекты).
Парсинг: Выполняется нативно в браузерах и большинстве современных языков программирования, значительно быстрее XML.
Отдельного внимания заслуживает сравнение механизмов валидации данных в обоих подходах.
Валидация в SOAP (XML Schema Definition – XSD):
В экосистеме XML валидация является встроенной и обязательной частью процесса. XSD-схемы позволяют определять сложнейшие правила: регулярные выражения для строк, диапазоны значений для чисел, списки допустимых значений (enumerations) и структуру вложенности. SOAP-парсерах на сервере часто автоматически отвергают запрос, если он не соответствует XSD, еще до того, как управление будет передано бизнес-логике. Это обеспечивает строгий контракт («Contract First»).
Валидация в REST (JSON Schema):
Исторически JSON не имел встроенного механизма схем. Однако с развитием стандарта появился JSON Schema – декларативный формат для описания структуры JSON-данных. В отличие от SOAP, использование JSON Schema в REST является опциональным. Часто валидация реализуется программно на уровне контроллера (например, с помощью библиотек Joi или Zod в экосистеме Node.js), что дает большую гибкость, но лишает систему жестких гарантий контракта на уровне протокола.
1.4. Сравнительная характеристика подходов
С точки зрения архитектуры, SOAP и REST решают разные задачи.
SOAP ориентирован на действия (RPC – Remote Procedure Call). Он скрывает данные за вызовом метода. Это делает его идеальным для сложных операций и бизнес-логики.
REST ориентирован на данные (Data-Oriented). Он выставляет данные наружу и предоставляет стандартный интерфейс для работы с ними.
Таблица 1
Критерий |
SOAP |
REST |
Тип |
Протокол |
Архитектурный стиль |
Формат данных |
Только XML |
JSON, XML, HTML, Text и др. |
Типизация |
Строгая (через WSDL/XSD) |
Слабая (зависит от документации) |
Транспорт |
HTTP, SMTP, TCP, UDP и др. |
Преимущественно HTTP |
Безопасность |
WS-Security (на уровне сообщения) |
HTTPS (на транспортном уровне) |
Транзакции |
Поддерживает ACID (WS-Atomic) |
Не поддерживает |
Сложность внедрения |
Высокая |
Низкая |
Производительность |
Ниже (из-за парсинга XML) |
Выше (JSON) |
Таким образом, выбор между SOAP и REST зависит от требований к системе: если необходима высокая производительность и работа с мобильными клиентами – выбирают REST; если важны строгие контракты и надежность в распределенных транзакциях – выбирают SOAP.
