Сервис-Ориентированная Архитектура: путь от...

Preview:

Citation preview

Magento

-СервисОриентированнаяАрхитектураПуть от потребностей к возможностям

Макеев Александрamakeev@ebay.com

Senior PHP developer, PaaS team, X.Commerce, an eBay Corp.

Magento

?Очёмбудемговорить Архитектура – это не панацея Принципы и парадигмы SOA Сравнение с другими архитектурными стилями Недостатки и ограничения SOA Экосистема SOA Технические детали: стандарты и протоколы Безопасность сервисов Подходы к проектированию сервисов Примеры

Magento

– Архитектура этонепанацея Разработка и моделирование на разных уровнях абстракции Построение гибких систем Проверка на соответствие бизнес-требованиям Анализ объема изменений при появлении новых требований Проверка на соответствие правилам

Magento

Принципыипарадигмы SOA Архитектура не привязывается к определённым технологиям,

платформам и языкам разработки приложений Использование сервисов, независимых от конкретных

приложений, с единообразными интерфейсами доступа к ним Повторное использование кода сервиса, реализующего

определённую бизнес-функцию Низкая связанность между сервисами Крупнозернистая структура сервисов Основная парадигма SOA: организация и использование

распределённых возможностей для обеспечения потребностей бизнес-процессов потребителей

Magento

Концепция SOA втрёхсловах Видимость• Осведомлённость• Готовность• Доступность

Взаимодействие• Информационная модель• Поведенческая модель

Эффект• Модификация общей информации

Magento

?Эволюцияилиреволюция

Magento

Недостаткииограничения SOA Падение производительности системы Громадный трафик Невозможно построить Real-Time систему Неявный и негарантированный выбор поставщика сервиса Сложности в обеспечении безопасности данных Сложности в поддержке инфраструктуры Сложность в проектировании систем Новый взгляд на проектирование и поддержку интерфейсов Отсутствие инструментальных средств Отсутствие чётких стандартов

Magento

-Общаясхемаработывеб сервиса

Magento

Экосистема SOA

Magento

Работасервиса

Magento

Видимостьсервиса

Magento

Взаимодействие ссервисом

Magento

Эффектвреальноммире

Magento

Описаниесервиса

Magento

Дескрипторсервиса

Magento

Контрактиполис

Magento

Контекствыполнениясервиса

Magento

: Техническиедетали стандартыипротоколы

Коммуникации (XML, SOAP, WSDL, и UDDI) Передача сообщений (SOAP, WS-Addressing) Надежная передача сообщений (WS-Reliable Messaging) Управление рабочим процессом (WS-Management) Управление транзакциями (WS-Coordination, WS-

AtomicTransaction, WS-Business-Activity) Распределение ресурсов (WS-RF) События, запускающие бизнес-процессы (WS-Notification)

Magento

SOAP-сообщение<?xml version="1.0"?> <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> <env:Header> <m:reservation xmlns:m="http://travelcompany.example.org/reservation" env:role="http://www.w3.org/2003/05/soap-envelope/role/next" env:mustUnderstand="true"> <m:reference>uuid:093a2da1-q345-739r-ba5d-pqff98fe8j7d</m:reference> <m:dateAndTime>2001-11-29T13:20:00.000-05:00</m:dateAndTime> </m:reservation> <n:passenger xmlns:n="http://mycompany.example.com/employees" env:role="http://www.w3.org/2003/05/soap-envelope/role/next" env:mustUnderstand="true"> <n:name>Еke Jуgvan Шyvind</n:name> </n:passenger> </env:Header> <env:Body> <p:itinerary xmlns:p="http://travelcompany.example.org/reservation/travel"> <p:departure> <p:departing>New York</p:departing> <p:arriving>Los Angeles</p:arriving> <p:departureDate>2001-12-14</p:departureDate> <p:departureTime>late afternoon</p:departureTime> <p:seatPreference>aisle</p:seatPreference> </p:departure> <p:return> <p:departing>Los Angeles</p:departing> <p:arriving>New York</p:arriving> <p:departureDate>2001-12-20</p:departureDate> <p:departureTime>mid-morning</p:departureTime> <p:seatPreference/> </p:return> </p:itinerary> <q:lodging xmlns:q="http://travelcompany.example.org/reservation/hotels"> <q:preference>none</q:preference> </q:lodging> </env:Body> </env:Envelope>

Magento

WSDL-дескпритор<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"

xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:svc="http://johanpeeters.com/webservices" xmlns:types="http://johanpeeters.com/types">

<types> <schema xmlns="http://www.w3.org/2001/XMLSchema"

targetNamespace="http://johanpeeters.com/types"> <complexType name="tException" abstract="true"> <sequence> <element name="message" type="string"/> </sequence> </complexType> <complexType name="OutOfMemoryException"> <complexContent> <extension base="types:tException"> <sequence> <element name="heapSize" type="int"/> <element name="used" type="int"/> </sequence> </extension> </complexContent> </complexType> <complexType name="NullPointerException"> <complexContent> <extension base="types:tException"> <sequence> <element name="stackFrame" type="string"/> </sequence> </extension> </complexContent> </complexType> </schema> </types> <message name="testRequest"> <part name="toRun" type="xsd:base64Binary"/> </message> <message name="testResponse"/> <message name="error">

<part name="exception" type="types:tException"/> </message> <portType name="testItf"> <operation name="test" parameterOrder="toRun"> <input message="svc:testRequest"/> <output message="svc:testResponse"/> <fault name="fault" message="svc:error"/> </operation> </portType> <binding name="testPortSoapBinding" type="svc:testItf"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="test"> <soap:operation soapAction=""/> <input> <soap:body use="encoded"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://johanpeeters.com/msg"/>

</input> <output> <soap:body use="encoded"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://johanpeeters.com/msg"/>

</output> <fault name="fault"> <soap:fault use="encoded"

encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://johanpeeters.com/msg"/>

</fault> </operation> </binding> <service name="testSvc"> <port binding="svc:testPortSoapBinding" name="testPort"> <soap:address location="http://127.0.0.1:8080/testPort"/> </port> </service></definitions>

Magento

Безопасностьсервисов

Magento

Стандартыбезопасности SOA Базовые стандарты (SOAP Foundation) – включают в себя

спецификации XML Signature и XML Encryption WS-Security – определяет базовые механизмы и форматы

использования security-token WS-Policy – определяет шаблоны и правила описания

политики бeзопасности WS-Trust – описывает правила организации доверенных

отношений между участниками Web-взаимодействия WS-SecureConversation регламентирует правила безопасного

обмена сообщениями WS-Authorization описывает форматы описания правил

разграничения доступа к Web-сервисам

Magento

РаботасWeb- сервисамина PHP SOAP & XML-RPC PHP extensions• Сервер, клиент (Soap 1.1, 1.2, WSDL 1.1)• Обработка исключений

Zend_Soap & Zend_Rest• Сервер, клиент (Soap 1.1, 1.2, WSDL 1.1, отдельный клиент WS-I)• Автогенерация WSDL• Обработка исключений

WSO2 Web Service PHP Framework• Binary extension• Сервер, клиент (Soap 1.1, 1.2, WSDL 1.1, 2.0)• Автогенерация WSDL (XML Schema)• Обработка исключений• Поддержка WS-Security, WS-Addressing

Magento

-СервисОриентированнаяАрхитектураПуть от потребностей к возможностям

Макеев Александрamakeev@ebay.com

Спасибо за внимание!

Recommended