Данный гист описывает что такое веб-сервисы, зачем они нужны, технологии, свящанные с веб сервисами, и т.п.
-
-
Save vchernogorov/81da656048875132d6963304d449f770 to your computer and use it in GitHub Desktop.
-
Web Service - программная система, предназначенная поддерживать взаимодействие между интераперабельными устройствами через сеть. Веб сервис обладает интерфейсом, описанным в WSDL формате. Другие системы, взаимодействуют с веб сервисом через SOAP-сообщения, которые обычно передаются с помощью HTTP с XML сериализацией в связке с другими веб-стандартами. [source]
- Сервис доступен по сети, может располагаться и выполняться на разных компьютерах.
- Передача сообщений между сервисом и клиентом происходит в независимом формате.
- Web Service может быть создан из существующего Web приложения.
- Сервис использует стандартизированную XML messaging систему.
- Не привязан к операционной системе или языку программирования
-
Пример веб сервиса: dailyinfo
-
SOA (Service Based Architecture) - модульный подход к разработке программного обеспечения, основанный на использовании распределённых, слабо связанных заменяемых компонентов, оснащённых стандартизированными интерфейсами для взаимодействия по стандартизированным протоколам. [source]
- Программные комплексы, разработанные в соответствии с сервис-ориентированной архитектурой, обычно реализуются как набор веб-служб, взаимодействующих по протоколу SOAP, но существуют и другие реализации, например, на основе REST.
-
ROA (REST-Oriented Architecture) - архитектурный стиль приложения и подход к разработке для создания ПО в виде ресурсов с RESTful интерфейсами. Эти ресурсы являются программными компонентами, которые могут быть переиспользованы для различных целей. [source]
-
MOM (Message-Oriented Model) сосредаточена на тех аспектах архитектуры, которые относятся к сообщениям и их обработке. [source]
-
SOM (Service-Oriented Model) сосредаточена на тех аспектах архитектуры, которые относятся к сервису и действиям. [source]
- Главная цель SOM - устанавливать отношения между агентом, сервисом, который он реализует, и запросами.
- SOM построен на основе MOM, но сосредочен больше на действия, чем на сообщения.
-
ROM (Resource-Oriented Model) сосредоточена на тех аспектах архитектуры, которые относятся к ресурсам, и сервис модель которых связана с манипулированием ресурсами. [source]
-
PM (Policy Model) сосредаточена на тех аспектах архитектуры, которые относятся к политике, расширениям, защите и качеству сервиса. [source]
-
MM (Management Model) сосредаточена на тех аспектах архитектуры, которые относятся к регулированию веб сервисов. [source]
-
Протокол - набор соглашений интерфейса логического уровня, которые определяют обмен данными между различными программами. [[source]][protocol]
-
TCP/IP - семейство протоколов, предназначенных для взаимодйествия между электронными устройствами. Определяет, как они должны быть связаны через интернет и как нужно передавать данные между ними. [source]
-
TCP (Transmission Control Protocol) - отвечает за разбиение данных на небольшие пакеты перед тем, как пересылать их по сети, и за сборку этих пакетов в исходное состояние после получения. [[source]][tcp]
-
IP (Internet Protocol) - отвечает за обмен данными между устройствами, т.е. за адресацию, отправку и получение пакетов данных через интернет. [[source]][ip]
-
DNS (Domain Name Server) - иерархическая система имен, построенная на распределенных базах данных. [source]
- Когда пользователь посещает сайт, то имя сайта преобразуется в числовое представление с помощью DNS.
- Когда регистрируется новый домен вместе с TCP/IP адресом, DNSs по всему миру фиксируют эту информацию.
-
HTTP (HyperText Transfer Protocol) - протокол уровня приложения, используемый в основном в World Wide Web. HTTP использует клиент-серверную модель, где браузер является клиентом и общается с веб-сервером, который хостит веб-сайт. [source]
- Обычный HTTP запрос состоит из следующих шагов:
- Открывается соединение к HTTP серверу.
- Запрос отправляется на сервер.
- Выполняются вычисления на сервере.
- Сервер посылает назад ответ.
- Соединение закрывается.
- Для HTTP, действие над данными задается с помощью методов (CRUD операций):
- GET - получить.
- PUT - добавить, заменить.
- POST - добавить, изменить, удалить.
- DELETE - удалить.
- Обычный HTTP запрос состоит из следующих шагов:
-
HTTPS (HyperText Transfer Protocol Secure) - разновидность HTTP протокола, который добавляет передаваемым данным уровень безопасности через SSL протокол или TLS протокол. [source]
-
FTP (File Transfer Protocol) - протокол, используемый для передачи или обмена файлами между компьютерами. FTP часто используется для загрузки сетевых страниц и других документов с частного устройства разработки на открытые сервера хостинга.
-
GIOP (General Inter-ORB Protocol) - абстрактный протокол в распределённых объектных системах, обеспечивающий возможность взаимодействия сервисов-брокеров.
-
IIOP (Inter-ORB Protocol) - является конкретной реализацией абстрактных определений GIOP.
-
SSL (Secure Socket Layer) - стандартный протокол, используемый для защищенной передачи документов через сеть.
-
TLS (Transport Layer Security) - улучшенная версия SSL протокола.
-
SNMP (Simple Network Management Protocol) - используется для управления сетями.
-
ARP (Address Resolution Protocol) - используется IP для поиска адреса параметров сетевой карты компьютера, опираясь на IP-адрес.
-
RARP (Reverse Address Resolution Protocol) - используется IP для поиска IP-адресов, опираясь на параметры сетевой карты компьютера.
-
PPTP (Point to Point Tunneling Protocol) - используется для установления соединения (тунеля) между приватными сетями.
-
NTP (Network Time Protocol) - используется для синхронизации времени между компьютерами.
-
LDAP (Lightweight Directory Access Protocol) - используется для сбора информации о пользователях и электронных почтовых адресов из интернета.
-
ICMP (Internet Control Message Protocol) - заботится об ошибках в сети.
-
DHCP (Dynamic Host Configuration Protocol) - используется для поиска динамических IP-адресов компьютеров в сети.
-
BOOTP (Boot Protocol) - используется для бута (запуска) компьютеров из сети.
-
POP (Post Office Protocol) - используется программами с почтовой функциональностью для отыскания нужной почти из почтового сервера.
-
IMAP (Internet Message Access Protocol) - действует также, как и POP, только не загружает сразу все запрашиваемые почты, а дает возможность посмотреть на сообщения, которые выдает почтовый сервер, или удалить их из базы.
-
SMTP (Simple Mail Transfer Protocol) - заботится об отправки сообщений в почту. Обычно сообщения посылаются на почтовый сервер, а затем в другие серверы и только потом в пункт назначения. Может передавать только текстовые данные.
-
MIME (Multi-purpose Internet Mail Extensions) - выполняет такие же функции, что и SMTP, только может еще передавать в сообщениях двоичные данные, т.е. аудио, видео, картинки, что угодно.
-
SOAP (Simple Object Access Protocol) - основанный на XML протокол обмена сообщениями.
-
WSDL (Web Services Description Language) - язык разметки, основанный на XML, преднзначенный для описания веб сервисов.
-
UDDI (Universal Description, Discovery, and Integration) - предоставляет всемирный реестр веб сервисов для рекламы, поиска и хранения.
-
Взаимодействие между SOAP, WSDL и UDDI:
- Приложение играет роль веб сервисов, которые нужны клиенту для доступа к другому приложению или бизнес логике, расположенной где-то в сети.
- Клиент делает запрос в UDDI реестр для нахождения сервиса по имени, категории, идентификатору или какой-то другой спецификации.
- Как только сервис найден, клиент получает информацию о местонахождении WSDL документа из UDDI реестра.
- WSDL документ содержит информацию о том, как обратиться к веб сервису, и формат запросов в XML схему.
- Клиент создает SOAP сообщение в соответствии с XML схемой, взятой из WSDL, и посылает запрос хосту (где находится веб сервис).
-
SOM (Service-Oriented Model) сосредаточена на тех аспектах архитектуры, которые относятся к сервису и действиям. [source]
- Главная цель SOM - устанавливать отношения между агентом, сервисом, который он реализует, и запросами.
- SOM построен на основе MOM, но сосредочен больше на действия, чем на сообщения.
-
Message - единица информации, отсылаемая одним агентом другому в конексте веб сервисов. [source]
-
Action - любое действие, представленное агентом в качестве отклика на получение сообщения, или посылки сообщения, или другого изменения состояния. [source]
-
Service - набор действий, которые формируют целостную систему с точки зрения провайдеров и реквесторов. [source]
-
Agent - программа, выполняющая функции, указанные пользователем, сущностью или процессом. [source]
- Агент представляет программу, выполняющую функции согласно действиям пользователя, сущности или процесса.
- Агент обладает идентификатором, владельцем (сущностью) и может предоставлять 1 и более сервисов или запрашивать 0 и более сервисов.
-
Choreography - определяет очередность и условия, которые позволяют объеденению независимых веб сервисов обмениваться информацией с целью достичь некоторую полезную функцию. [source]
-
Choreography Description Language - нотация для описания хореографии. [source]
-
Service Description - набор документов, описывающих интерфейс и семантику сервиса. [source]
- Описание выражается через XML и обуславливается одним или более стандартами.
-
Service Operation - абстрактная группировка сообщений, которую сервис посылает и получает, чтобы совершить определенную задачу. [source]
-
Service Platform - среда, используемая для хостинга одного или более веб сервисов. [[source]][service-platform]
- Она включает в себя один или более SOAP серверов, ни одного или несколько UDDI реестров, защиту и транзакционные сервисы, используемые веб сервисами, которые хостятся на ней, и прочую инфраструктуру.
-
Service Provider - агент, который способен и предназначен для совершения действий, связанных с сервисом. [source]
- Провайдер предоставляет 1 или более сервисов.
- Провайдер представляет или вызывает представление действий, связанных с сервисом.
-
Service Requester - сущность, которая отвечает за запросы к сервису через провайдер. [source]
- Реквестор запрашивает 1 или более сервисов.
-
Service Registry (Broker) - логически-централизованная директория сервисов, куда девелоперы публикуют новые сервисы и где можно найти существующие. Поэтому этот элемент является координационным центром для компаний и их услуг. [[source]][service-registry]
- Реестр предоставляет следующего вида информацию: бизнес данные, такие как имя, описание, контактная информация, или данные, необходимые для использования веб сервиса.
-
Service Semantics - контракт между провайдером и реквестором, который отображает вызов сервиса. [source]
- Семантика является обобщением таксов, которые составляют сервис.
- Семантика может выражаться с помощью языка описания сервиса.
-
Service Task - еденица активности, связанная с сервисом. [source]
- ROM (Resource-Oriented Model) сосредоточена на тех аспектах архитектуры, которые относятся к ресурсам, и сервис модель которых связана с манипулированием ресурсами. [source]
-
SOAP - протокол обмена структурированными сообщениями в распределенной вычислительной среде. Также предоставляет стандарт структуры упаковки данных для транспортировки XML документов с помощью различных интернет-технологий, как: SMTP, HTTP, FTP. [source]
- Так как SOAP обладает стандартным механизмом транспортировки, различные клиенты и серверы могут взаимодействовать, например, с EJB через .NET клиент и наоборот.
-
Пример взаимодействия клиента с Web приложением (регистрация аккаунта):
- Программа на клиентской стороне конвертирует информацию о регистрации аккаунта в SOAP сообщение.
- SOAP сообщение отсылается в веб сервис, как тело HTTP POST запроса.
- Веб сервис распаковывает SOAP реквест и конвертирует в комманду, которую понимает приложение на сервере.
- Приложение обрабатывает информацию своей логикой и отправляет ответ с новым уникальным номером аккаунта.
- Следующим шагом, веб сервис конвертирует ответ сервера в SOAP сообщение, которое отправляет назад в клиентское приложение, как ответ на HTTP запрос.
- Клиентское приложение распаковывает SOAP сообщение и предоставляет клиенту соотвествующую информацию.
-
Клиент/сервер связь:
HTTP POST of SOAP request document SOAP: client ----------------------------------> service client <---------------------------------- service SOAP (maybe JSON) document
-
SOAP Building Blocks. SOAP сообщение - это обычный XML документ, содержащий следующие элементы:
- Оболочка - идентифицирует XML документ как SOAP сообщение.
- Заголовок - содержит различного рода информацию о сообщении, которая помещается обычно в заголовки.
- Тело - содержит информацию о вызове и ответе.
- Ошибка - содержит все ошибки и текущий статус.
-
WSDL (Web Service Description Language) - XML технология, которая описывает интерфейс веб сервиса в стандартизированном виде. WSDL указывает стандарт, как веб сервис должен представлять входные и выходные параметры при вызове извне, как должна выглядеть структура функции, природа вызова и как осуществлять связывание протокола сервера. [source]
- WSDL позволяет различным клиентам автоматически распознавать, как взаимодействовать с веб сервисом.
-
WSDL документ - описывает веб сервис. Он указывает местоположение сервиса и его методы, используя следующие элементы:
<types>
- определяет типы данных, используемые веб сервисом.<message>
- определяет элементы данных для каждой операции.<portType>
- описывает операции и сообщение, которые могут встретиться в сервисе.<binding>
- определяет протокол и формат данных для каждого типа порта.<service>
- определяет адрес веб сервиса.<definition>
- корневой элемент каждого WSDL документа.<operation>
- абстрактное определение операции для сообщения.<documentation>
- предоставляет документацию<import>
- импортирует сторонние WSDL документы или XML Schemas.
-
Структура WSDL документа выглядит следующим образом:
<definitions> <types> data type definitions........ </types> <message> definition of the data being communicated.... </message> <portType> set of operations...... </portType> <binding> protocol and data format specification.... </binding> </definitions>
-
<portType>
- элемент, который определяет веб сервис, операции, приводимые в нем, и задействованные сообщения.- request-response - самый распространенный тип операции. Она получает запрос и возвращает ответ.
- one-way - операция может получать сообщения, но не будет возвращать ответ.
- solicit-response - операция может отправлять запрос и будет ждать ответа.
- notification - операция может посылать сообщений, но не будет ждать ответа.
-
Пример Request-Response операции (словарь терминов):
<message name="getTermRequest"> <part name="term" type="xs:string"/> </message> <message name="getTermResponse"> <part name="value" type="xs:string"/> </message> <portType name="glossaryTerms"> <operation name="getTerm"> <input message="getTermRequest"/> <output message="getTermResponse"/> </operation> </portType>
<portType>
определяет "glossaryTerms" как имя порта, аgetTerm
- имя операции<message>
элементы определяют<part>
сообщений "getTermRequest" и "getTermResponse".
-
Пример One-Way операции (словарь терминов):
<message name="newTermValues"> <part name="term" type="xs:string"/> <part name="value" type="xs:string"/> </message> <portType name="glossaryTerms"> <operation name="setTerm"> <input name="newTerm" message="newTermValues"/> </operation> </portType >
- В этом примере "glossaryTerms" определяет one-way операцию "setTerm".
- "setTerm" операция позволяет вводить новое сообщение используя "newTermValues".
-
Пример WSDL файла:
<?xml version="1.0" encoding="UTF-8"?> <definitions name="HelloService" targetNamespace="http://www.ecerami.com/wsdl/HelloService.wsdl" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://www.ecerami.com/wsdl/HelloService.wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <types> <xsd:schema> <xsd:import schemaLocation="http://localhost:9876/ts?xsd=1" namespace="http://ts.ch02/"> </xsd:import> </xsd:schema> </types> <message name="SayHelloRequest"> <part name="firstName" type="xsd:string"/> </message> <message name="SayHelloResponse"> <part name="greeting" type="xsd:string"/> </message> <portType name="Hello_PortType"> <operation name="sayHello"> <input message="tns:SayHelloRequest"/> <output message="tns:SayHelloResponse"/> </operation> </portType> <binding name="Hello_Binding" type="tns:Hello_PortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="sayHello"> <soap:operation soapAction="sayHello"/> <input> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:examples:helloservice" use="encoded"/> </input> <output> <soap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:examples:helloservice" use="encoded"/> </output> </operation> </binding> <service name="Hello_Service"> <documentation>WSDL File for HelloService</documentation> <port binding="tns:Hello_Binding" name="Hello_Port"> <soap:address location="http://localhost:8080/soap/rpcrouter"/> </port> </service> </definitions>
<service>
: HelloService.<types>
: Использование импортированной по локальному адресу XML Schema.<message>
: "sayHelloRequest": "firstName" параметр, "sayHelloResponse": "greeting" возвращаемое значение<portType>
: sayHello операция, которая состоит из request-response сервиса.<binding>
: Указание использовать SOAP HTTP протокол.<service>
: сервис доступен по ссылке http://www.examples.com/SayHello/.<port>
: Связывает<binding>
с URI http://www.examples.com/SayHello/, по которой доступен данный сервис.
- UDDI (Universal Description, Discovery, and Integration) - предоставляет всемирный реестр веб сервисов для рекламы, поиска и хранения. [source]
- UDDI предоставляет структуру для представления деловых отношений, веб сервисов, технических метаданных и точек доступа к веб сервисам.
-
REST (REpresentational State Transfer) - это стиль архитектуры программного обеспечения для распределенных систем, использующий веб протоколы и веб технологии. REST архитектура включает в себя клиентское и серверное взаимодействие, построенное вокруг передачи ресурсов. [source]
- Самая большая реализация REST - World Wide Web, которая, как правило, используется для построения веб-служб.
- Системы, которые построены согласно REST принципам, называются RESTful.
- REST может быть использован для сбора данных вебсайта через XML файлы веб страницы.
- Пользователи могут обращаться к веб страницам через URL сайта, взаимодействовать с XML файлами через браузер и использовать данные как угодно.
- Базовые REST принципы:
- Client и Server - клиент и сервер должны быть отделены от REST операций через специальный интерфейс, который улучшает переносимость кода.
- Stateless - каждый клиентский запрос должен содержать все требуемые данные для обработки запроса без хранения клиентского окружения на сервере.
- Cacheable - ответы могут быть закэшированны на клиентском компьютере, чтобы ускорить веб поиск.
- Layered System - позволяет клиентам подключаться к серверу через вспомогательный уровень для улучшения расширяемости.
-
Клиент/сервер связь:
HTTP GET, POST, PUT, or DELETE REST: client ----------------------------------> service client <---------------------------------- service XML, JSON, plaintext,... document
-
Servlet API является основой для всех остальных технологий Java, касающихся Web и дает возможность динамически генерировать любой web-контент, используя любые библиотеки, доступные для java.
-
JSP (JavaServer Pages) - технология, используемая для разработки интерактивных веб страниц. JSP была разработана Sun Microsystems и является улучшенной версией Java сервлетов. [source]
- Как и большинство серверных технологий, JSP отделяет бизнес логику от представления.
- JSP являются обычные HTML страницы с встроенным Java кодом.
- Чтобы обработать JSP файл, разработчику нужен JSP движок, который подключен к веб серверу.
- JSP страница компилируется в сервлет, который управляет сервлет движком (этот этап называется "преобразованием"). Сервлет движок затем загружает класс сервлета и реализовывает его, чтобы создать динамический HTML, который затем посылается в браузер. Такой процесс запускается каждый раз, когда запрашивается очередная страница.
- Если вместе с JSP исользовать JDBC, то можно сделать динамические, связанные с базой данных, вебсайты.
-
Apache Tomcat - опенсорсный веб сервер, разработанный Apache Software Foundation. Он позволяет реализовывать Java сервлеты и JSPs для поддержки эффективных Java-серверных сред. [source]
- Пользователь также может получить доступ к конфигурациям и использовать XML для настройки проектов.
- Tomcat может предоставить рантайм оболочку для Java сервлетов.
- Ключевой элемент Java-based веб сервера - сервлет контейнер, поэтому JSP скрипты и им подобные автоматически преобразовываются в сервлет.
- Catalina — контейнер сервлетов Tomcat’а, который реализует спецификацию сервлетов.
-
Apache Ant - Java-based опенсорсный build tool, разработанный Apache Software Foundation. Он схож с "make" утилитой, но в большинстве своем функционирует только на java платформе. [source]
- В отличии от Make, Ant написан на XML, поэтому портируемость и простота - это два главных преимущества Ant.
-
RPC (Remote Procedure Call) - класс технологий, позволяющих компьютерным программам вызывать функции или процедуры в другом адресном пространстве (как правило, на удаленных компьютерах). [source]
- RPC работает по принципу: отправитель или клиент создает запрос с помощью процедуры, функции или вызова метода в удаленный сервер, который RPC обрабатывает и посылает. Когда удаленный сервер получает запрос, он отсылает ответ назад клиенту, и приложение продолжает свою работу. Перед тем, как продолжать работу программы, клиент ждет, пока сервер завершит процесс обработки.
- В общем, RPC приложения используют модули, называемые прокси и заглушки, которые заставляют их выглядеть как простые локальные вызовы процедур.
- RPC-ориентированное приложение - приложение, в которых существует интерактивная связь между удалёнными компонентами с небольшим временем ответов и относительно малым количеством передаваемых данных.
- Пример RPC можно найти в GWT.
-
RMI (Remote Method Invocation) - программный интерфейс вызова удаленных методов в языке Java. [source]
- Он представляет объектно-ориентированный эквивалент RPC.
- RMI функциональность находится в
java.rmi
пакете и предоставляет распределенную объектную модель, специфицирующую, каким образом производится вызов удаленных методов, работающих на другой виртуальной машине Java. - При доступе к объектам на другом компьютере возможно вызывать методы этого объекта. Необходимо только передать параметры метода на другой компьютер, сообщить объекту о необходимости выполнения метода, а затем получить обратно возвращаемое значение.
-
RSS (Really Simple Syndication)
-
RDF (Resource Description Framework)
Благодарю!