- •Аннотация
- •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
Список использованных источников
Fielding R.T. Architectural Styles and the Design of Network-based Software Architectures. – University of California, Irvine, 2000.
Simple Object Access Protocol (SOAP) 1.1 [Электронный ресурс] // W3C Note. – URL: https://www.w3.org/TR/2000/NOTE-SOAP-20000508/ (дата обращения: 19.12.2025).
Web Services Description Language (WSDL) 1.1 [Электронный ресурс] // W3C Note. – URL: https://www.w3.org/TR/wsdl (дата обращения: 19.12.2025).
RFC 7231. Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content [Электронный ресурс] // IETF. – URL: https://tools.ietf.org/html/rfc7231 (дата обращения: 19.12.2025).
ECMA-404. The JSON Data Interchange Syntax [Электронный ресурс] // ECMA International. – URL: https://www.ecma-international.org/publications-and-standards/standards/ecma-404/ (дата обращения: 19.12.2025).
Richardson L., Ruby S. RESTful Web Services. – O'Reilly Media, 2007. – 448 с.
MDN Web Docs. Parsing XML with DOMParser [Электронный ресурс]. – URL: https://developer.mozilla.org/en-US/docs/Web/API/DOMParser (дата обращения: 19.12.2025).
Node.js Documentation. [Электронный ресурс]. – URL: https://nodejs.org/en/docs/ (дата обращения: 19.12.2025).
Vue.js Guide. The Progressive JavaScript Framework [Электронный ресурс]. – URL: https://vuejs.org/guide/introduction.html (дата обращения: 19.12.2025).
Erl T. Service-Oriented Architecture: Concepts, Technology, and Design. – Prentice Hall, 2005. – 792 с.
Приложение а Код файла student.Wsdl
<definitions name="StudentService"
targetNamespace="http://www.examples.com/wsdl/StudentService.wsdl"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:tns="http://www.examples.com/wsdl/StudentService.wsdl"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<types>
<xsd:schema targetNamespace="http://www.examples.com/wsdl/StudentService.wsdl">
<!-- Тип Студент -->
<xsd:complexType name="Student">
<xsd:sequence>
<xsd:element name="id" type="xsd:int"/>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="specialization" type="xsd:string"/>
<xsd:element name="course" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
<!-- Get ONE -->
<xsd:element name="getStudentRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="id" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="getStudentResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="student" type="tns:Student"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- Get ALL -->
<xsd:element name="getStudentsRequest">
<xsd:complexType>
<xsd:sequence/> <!-- Пустой запрос -->
</xsd:complexType>
</xsd:element>
<xsd:element name="getStudentsResponse">
<xsd:complexType>
<xsd:sequence>
<!-- Массив студентов -->
<xsd:element name="students" type="tns:Student" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- Create -->
<xsd:element name="createStudentRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="specialization" type="xsd:string"/>
<xsd:element name="course" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="createStudentResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="student" type="tns:Student"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</types>
<!-- Messages -->
<message name="GetStudentInput"><part name="body" element="tns:getStudentRequest"/></message>
<message name="GetStudentOutput"><part name="body" element="tns:getStudentResponse"/></message>
<message name="GetStudentsInput"><part name="body" element="tns:getStudentsRequest"/></message>
<message name="GetStudentsOutput"><part name="body" element="tns:getStudentsResponse"/></message>
<message name="CreateStudentInput"><part name="body" element="tns:createStudentRequest"/></message>
<message name="CreateStudentOutput"><part name="body" element="tns:createStudentResponse"/></message>
<!-- PortType -->
<portType name="StudentPortType">
<operation name="getStudent">
<input message="tns:GetStudentInput"/>
<output message="tns:GetStudentOutput"/>
</operation>
<operation name="getStudents">
<input message="tns:GetStudentsInput"/>
<output message="tns:GetStudentsOutput"/>
</operation>
<operation name="createStudent">
<input message="tns:CreateStudentInput"/>
<output message="tns:CreateStudentOutput"/>
</operation>
</portType>
<!-- Binding -->
<binding name="StudentBinding" type="tns:StudentPortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="getStudent">
<soap:operation soapAction="getStudent"/>
<input><soap:body use="literal"/></input>
<output><soap:body use="literal"/></output>
</operation>
<operation name="getStudents">
<soap:operation soapAction="getStudents"/>
<input><soap:body use="literal"/></input>
<output><soap:body use="literal"/></output>
</operation>
<operation name="createStudent">
<soap:operation soapAction="createStudent"/>
<input><soap:body use="literal"/></input>
<output><soap:body use="literal"/></output>
</operation>
</binding>
<service name="StudentService">
<port name="StudentPort" binding="tns:StudentBinding">
<soap:address location="http://localhost:8000/soap"/>
</port>
</service>
</definitions>
