Magento
-СервисОриентированнаяАрхитектураПуть от потребностей к возможностям
Макеев Александр[email protected]
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
-СервисОриентированнаяАрхитектураПуть от потребностей к возможностям
Макеев Александр[email protected]
Спасибо за внимание!