Статьи

Корпоративные сервисы SOAP в мире Web 2.0 REST / JSON

С популярностью JSON и других стандартных форматов данных NoSQL, сложность и в некоторых случаях простота многословия форматов XML избегаются. Тем не менее, XML, а также способности и стандарты, которые сформировались вокруг него, стали ключевыми для предприятия и его бизнес-процессов. Однако потребности их клиентов требуют, чтобы они начали поддерживать несколько форматов. С этой целью инструментальные среды, такие как Axis2, начали добавлять поддержку для получения сервисов на основе WSDL и генерировать ответы JSON.
Предприятия должны жить в этом мире после SOAP, но использовать опыт и инфраструктуру SOA, которые они разработали за эти годы. Axis2 — это один из способов сделать это, но он не обеспечивает мониторинг и поддержку политик коробки. Другой альтернативой является проект SOA из Turmeric от ebay. Изначально можно взять WSDL-подобный, который предоставляется стандартной организацией STAR, и добавить поддержку не только из SOAP 1.1 / 1.2, но и для сервисов в стиле REST, обслуживающих XML, JSON и другие любые другие форматы данных, которые вы используете. нужно будет поддержать.
Однако здесь есть одна загвоздка: SOA в Turmeric не была разработана с учетом полного SOAP и стека веб-сервисов W3C. Он использует WSDL только для описания операций и форматов данных, поддерживаемых службой. Поэтому расширенные функции, такие как WS-Security, WS-Reliable Messaging и XML Encryption, изначально не встроены в Turmeric. В зависимости от ваших потребностей вам потребуется работать с конвейерными обработчиками и усовершенствовать процессоры протоколов для поддержки некоторых дополнительных функций. Тем не менее, это элементы, которые можно обойти, и он может взаимодействовать с существующими веб-сервисами, выступая в качестве прокси.
В качестве примера организация STAR предоставляет спецификацию веб-службы , которая была реализована в автомобильной промышленности для предоставления транспортов для их спецификаций. С помощью такой инфраструктуры, как Turmeric SOA, существующие приложения могут быть доступны для торговых партнеров и потребителей услуг в различных форматах. Например, можно предоставить данные в формате RESTful xml:
1
2
3
4
5
6
<?xml version='1.0' encoding='UTF-8'?>
   <ns2:payload>
      <ns2:content id="1"/>
   </ns2:payload>
</ns2:PullMessageResponse>

Или можно предоставить тот же XML, представленный в формате JSON:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
{
    "jsonns.xs": "http://www.w3.org/2001/XMLSchema",
    "ns2.PullMessageResponse": {
        "ns2.payload": {
            "ns2.content": [
                {
                    "@id": "1"
                }
            ]
        }
    }
}
Выше написано из того же веб-сервиса, но только с измененным заголовком, чтобы указать формат данных, который должен быть возвращен. Никаких реальных изменений в бизнес-логике или самом коде реализации веб-службы не нужно менять. В Turmeric это осуществляется с помощью Data Binding Framework и соответствующих конвейерных обработчиков. В Axis2 это запись конфигурации запроса сообщения. Независимо от того, как это делается, важно иметь возможность использовать существующие сервисы, но предоставлять данные в формате, который требуется вашим потребителям.
Для тех, кто заинтересован, я создал образец веб-службы STAR, которую можно использовать с Turmeric SOA, чтобы увидеть, как это работает. Код доступен на GitHub .
Хотя Turmeric обрабатывает основы протокола SOAP, такие дополнительные элементы, как использование и хранение информации в заголовке soap:, поддерживаются не так легко. Вы можете получить информацию, но поскольку использование WSDL в Turmeric Services предназначено только для описания форматов данных и сообщений, базовая поддержка транспортировки мыла необязательно используется для полной спецификации. В зависимости от ваших требований Axis2 может быть лучше, но Turmeric SOA предоставляет дополнительные элементы, такие как метрики обслуживания, консоль мониторинга, администрирование политик, ограничение скорости с помощью политик на основе XACML 2.0 и многое другое. Если у вас уже есть существующие веб-сервисы, написанные в W3C-формате, но вам необходимо предоставить данные в других форматах, можно использовать Turmeric вместе. Это не одно или другое предложение. Используйте инструменты, которые предоставляют вам максимальную гибкость для предоставления данных вашим потребителям с наименьшими усилиями.
Справка: корпоративные сервисы SOAP в мире Web 2.0 REST / JSON от нашего партнера по JCG Дэвида Карвера из блога Intellectual Cramps .