СМ-Консалт
 

Работа с Web-сервисами в корпоративных SOA: Часть 7. Ускорение работы приложений Web-сервисов с помощью спецификации для двоичных XML - Optimized Packaging Specification

Статьи Технологии разработки ПО SOA и Web-сервисы

Вступление

В Части 2 настоящей серии, я говорила о том, как вы можете осуществлять производственный процесс создания приложения Web-сервис и определять максимальное количество, имеющих возможность взаимодействовать друг с другом SOA, с которым система сможет справиться без перегрузки SOA. В Части 5 настоящей серии, я обращала Ваше внимание на важность правил производственного процесса, как на самое главное в оптимизации Web-сервис и приводила примеры, как вы можете сократить количество Web-запросов и время их выполнения.

В данной части я расскажу о том, как разрастаются основанные на XML, приложения Web-сервисов. При использовании в больших количествах эти Web-сервисы закупоривают сетевой трафик из-за перегрузок системы. Чтобы решить проблему, я объясню, как вы можете применить XML-двоичную Оптимизированную Упаковочную Спецификацию (см. Ресурсы) для ускорения своих Web-сервисов.

Данный проектный стандарт более эффективен, чем современные XML-анализаторы. Анализаторы ведут себя скорее как интерпретаторы, а не компиляторы. Они не так успешно справляются с чтением масштабных файлов, особенно в текстовом формате, как с чтением небольших файлов или вычислением простых функций. Даже шифрование может прекратить работу Web-сервисов, поскольку для достижения желаемых результатов приходится выполнять сложные вычисления.


Два сценария

В Части 2 я обращала ваше внимание на то, что логичнее извлечь компоненты из бизнес-приложения и реконструировать их как внешние Web-сервисы. Так вы можете изменить код в Web-сервисах и вам не надо будет переконструировать и компилировать масштабное, сложное и длительное приложение.

Приложение, переконструированное в более компактную версию в первой SOA (см. Рисунок 1), может посылать Web-запрос для функционального присоединения к внешнему прототипу Web-сервиса MRP (managed resource prototype) во второй SOA. Web-сервис MRP, в свою очередь, указывает на внешний прототип Web-сервиса CRM (управление взаимоотношениями с клиентами) в третьей SOA. Web-сервис CRM посылает запросы и информацию приложению для дальнейшей обработки.


Рисунок 1. Динамическое соединение с Web-сервисами
Динамическое соединение с Web-сервисами

Предположим, что множественные Web-запросы для многофакторных Web-сервисов, основанных на XML, могут появиться в любое время. Бизнес-приложение, которое не рассматривалось нами в примере выше, соединяется с другой функцией или крупными производственными системами, которые, в свою очередь, соединяются с множественными Web-сервисами, получающими множественные Web-запросы. При использовании в большом количестве Web-сервисы разрастаются и закупоривают сетевой трафик.

Один метод решения проблемы – применить пакет XOP (см. Рисунок 2) для обработки данных в двоичном формате к обоим Web-сервисам, основанным на XML: как к Web-сервису MRP, так и к Web-сервису CRM.


Рисунок 2. Применение пакета XOP к Web-сервисам.
Применение пакета XOP к Web-сервисам

Во втором сценарии вы можете разработать правила производственного процесса, а затем и основанные на XML Web-запросы, которые вам понадобятся для создания нового Web-сервиса из уже существующих. Если новый Web-сервис- бизнес-логика или центральные данные – обеспечивает лучший или дополнительный сервис или выполняемые функции, вам необходимо сократить или полностью аннулировать излишние Web-запросы, время выполнения, время доступа и полосу пропускания.

Проблема возникает, когда новые Web-сервисы созданы и используются в больших количествах; они будут раздуваться. Как и в первом сценарии, вам надо будет применить к Web-сервисам пакет XOP. В обоих сценариях вам нужно работать с системными администраторами для определения максимального количества Web-сервисов, которые могут быть использованы с пакетами XOP, не вызывая перегрузок системы.


Набор информационных элементов XML (Infoset), предшествующих обработке данных XOP.

Свое объяснение процесса работы XOP я начну с набора информационных элементов XML (Infoset), который похож на сообщение SOAP, описывающее документ XML с элементами: картинка (picture) и подписью (signature). В Листинге 1 я использую жирный шрифт для того, чтобы выделить часть исходного набора информационных элементов XML (Original XML Infoset) и показать, где и какие исходные элементы предшествуют обработке данных XOP.


Листинг 1. XML Infoset предшествует обработке данных XOP 
                
<soap:Envelope
    xmlns:soap='http://www.w3.org/2003/05/soap-envelope' 
    xmlns:xop='http://www.w3.org/2003/12/xop/include' 
    xmlns:xmlmime='http://www.w3.org/2004/06/xmlmime'>
  <soap:Body>
    <m:data xmlns:m='http://example.org/stuff'>
    
      <m:photo xmlmime:content-type='image/png'>
        /aWKKapGGyQ=
      </m:photo>
      <m:sig xmlmime:content-type='application/pkcs7-signature'>
        Faa7vROi2VQ=
      </m:sig>`
      
    </m:data>
  </soap:Body>
</soap:Envelope>

Как видите, существует два элемента: m:photo и m:sig. Содержание элемента на основе Base64 m:photo представляет собой /aWKKapGGyQ= в то время как base64 — запрограммированное содержание элемента m:sig представляет собой Faa7vROi2VQ=. Эти элементы также известны как структурные единицы информации (element information items). Содержанием является дочерним элементом. Не забывайте, что элемент — родительский компонент для данного дочернего элемента, который, в свою очередь, является знаковой единицей информации (character information item), означающей, что данная единица содержит буквенно-цифровые знаки. Например, m: photo является исходным родительским компонентом дочернего элемента /aWKKapGGyQ=. Имя дочернего элемента сложно читать и произносить, и в нем легко сделать опечатку.

У вас может и не возникнуть этой проблемы, если вы направите XML Infoset через обработку данных XOP. XOP работает, извлекая Оптимизированное Содержание (Optimized Content) из исходного Infoset (Original Infoset) для создания XOP Infoset. Оптимизированное Содержание представляет собой сокращенное содержание, о котором я только что говорила. В Листинге 2 я выделяю содержание, которое нужно переместить.


Листинг 2. Содержание, которое нужно переместить
                
<m:photo xmlmime:content-type='image/png'>
        /aWKKapGGyQ=
      </m:photo>
      <m:sig xmlmime:content-type='application/pkcs7-signature'>`
        Faa7vROi2VQ=
      </m:sig>


Infoset, следующий за обработкой данных XOP

Обработка данных XOP включает три этапа. Первый этап – замена текстовых элементов на двоичные элементы в Infoset. Второй этап – присоединение пакета MIME (многоцелевые расширения почтовой службы в Internet -Multipurpose Internet Mail Extensions) прежде чем Infoset будет содержать замещенные элементы. Третий этап – присоединение другого пакета после Infoset.

Этап 1: Замена элементов

Пакет XOP заменяет перемещенное содержание новой структурной единицей информации с именем xop:Include. Элемент xop: Include содержит единицу информации об атрибуте (attribute information item) со ссылкой на часть пакета XOP, в котором находится двоичное изложение данных, перемещенных из исходного элемента. В Листинге 3, я обращаю ваше внимание на xop: Include, который заменяет содержание элементов картинка (picture) и подпись (signature) в исходном Infoset.


Листинг 3. Замена элементов
                
 <m:photo xmlmime:content-type='image/png'>
        <xop:Include href='cid:http://example.org/me.png'/>
      </m:photo>
      <m:sig xmlmime:content-type='application/pkcs7-signature'>
        <xop:Include href='cid:http://example.org/my.hsh'/>
      </m:sig>

Как вы видите, href='cid:http://example.org/me.png'/ является единицей информации об атрибуте элемента picture, в то время как href='cid:http://example.org/my.hsh' является единицей информации об атрибуте для элемента signature.

Новая версия части Infoset (см. Листинг 4). Количество строк остается тем же.


Листинг 4. Новая версия части XML Infoset
                
<soap:Envelope
    xmlns:soap='http://www.w3.org/2003/05/soap-envelope'
    xmlns:xop='http://www.w3.org/2003/12/xop/include'
    xmlns:xmlmime='http://www.w3.org/2004/06/xmlmime'>
  <soap:Body>
    <m:data xmlns:m='http://example.org/stuff'>
      <m:photo xmlmime:content-type='image/png'>
        <xop:Include href='cid:http://example.org/me.png'/>
      </m:photo>
      <m:sig xmlmime:content-type='application/pkcs7-signature'>
        <xop:Include href='cid:http://example.org/my.hsh'/>
      </m:sig>
    </m:data>
  </soap:Body>
</soap:Envelope>

Этап 2: Примение процесса MIME раньше Infoset

Для завершения обновления вам необходимо сериализировать исходный InfoSet, используя XOP в пакете MIME Multipart/Related. XOP является более эффективным средством сериализации XML Infoset, обладающего определенными типами содержания элементов XQuery и XPath 2.0.

Присоедините один пакет MIME до обновленния Infoset, а другой после Infoset, для описания документа XML, содержащего элементы picture и signature в текстовом и двоичном форматах соответственно. В Листинге 5 я выделяю, где пакет XOP распознает XML Infoset в текстовом формате (8-бит).


Листинг 5. Часть пакета XOP, предшествующая Infoset
                
 MIME-Version: 1.0
Content-Type: Multipart/Related;boundary=MIME_boundary;
      type=text/xml;start= «<mymessage.xml@example.org> «
Content-Description: An XML document with my picture and signature in it

--MIME_boundary
Content-Type: text/xml; charset=UTF-8
Content-Transfer-Encoding: 8bit
Content-ID: mymessage.xml@example.org


Этап 3: Присоединение пакета MIME после Infoset.

Листинг 6 показывает, как пакет XOP распознает двоичное представление перемещенных данных.


Листинг 6. Часть пакета XOP после Infoset
                
 --MIME_boundary
Content-Type: image/png
Content-Transfer-Encoding: binary
Content-ID: <http://example.org/me.png>

// binary octets for png

--MIME_boundary
Content-Type: application/pkcs7-signature
Content-Transfer-Encoding: binary
Content-ID: <http://example.org/my.hsh>

// binary octets for signature

--MIME_boundary--

Как вы видите, двоичное содержание Content-ID после Infoset, ссылки, указанные в xop: Include element замещают текстовое содержание сообщения до Infoset.


Соединение всех элементов

В Листинге 7 у Вас полный XML Infoset, сериализованный как пакет XOP. Хотя здесь есть дополнительные строки, сам пакет гораздо более эффективен, чем XML-анализатор (parser) для исходного Infoset.


Листинг 7. Сериализация XML Infoset как пакета XOP 
                
MIME-Version: 1.0
Content-Type: Multipart/Related;boundary=MIME_boundary;
      type=text/xml;start= «<mymessage.xml@example.org> «
Content-Description: An XML document with my picture and signature in it

--MIME_boundary
Content-Type: text/xml; charset=UTF-8
Content-Transfer-Encoding: 8bit
Content-ID: <mymessage.xml@example.org>

<soap:Envelope
    xmlns:soap='http://www.w3.org/2003/05/soap-envelope'
    xmlns:xop='http://www.w3.org/2003/12/xop/include'
    xmlns:xmlmime='http://www.w3.org/2004/06/xmlmime'>
  <soap:Body>
    <m:data xmlns:m='http://example.org/stuff'>
      <m:photo xmlmime:content-type='image/png'>
        <xop:Include href='cid:http://example.org/me.png'/>
      </m:photo>
      <m:sig xmlmime:content-type='application/pkcs7-signature'>
        <xop:Include href='cid:http://example.org/my.hsh'/>
      </m:sig>
    </m:data>
  </soap:Body>
</soap:Envelope>

--MIME_boundary
Content-Type: image/png
Content-Transfer-Encoding: binary
Content-ID: <http://example.org/me.png>

// binary octets for png

--MIME_boundary
Content-Type: application/pkcs7-signature
Content-Transfer-Encoding: binary
Content-ID: <http://example.org/my.hsh>

// binary octets for signature

--MIME_boundary--


Заключение

Функционирование Web-сервисов с пакетом XOP требует заблаговременного планирования, чтобы определить, как нужно конструировать приложения, чтобы избежать перегрузок во время пика. Вам следует посоветоваться с группой системных администраторов по вопросам технологий кодирования, чтобы знать, какие из этих технологий необходимо использовать в оптимизации Web-сервисов.

Вы увидите, что решение рассматриваемых вопросов упрощает вашу работу по оптимизации Web-сервис приложений. Вы можете использовать ПО от IBM Relational Web Developer для WebSphere® для разработки Web-сервисов, основывающихся на бизнес-процессах, и использовать его с пакетом XOP для аналогичных и множественных SOA. Администраторы убедятся, что решение рассматриваемых вопросов упрощает их работу по управлению и администрированию систем. Они могут определить, какое количество приложений может быть использовано с пакетом XOP в SOA без перегрузок системы.

23.02.2008

Добавить комментарий (анонимные комментарии не публикуются!!!)

ФИО: 
E-mail: 
Тема: 
Комментарий: 
Оценка:   
 
 
 
 
 
Код подтверждения:
   

Новости СМ-Консалт

Мастер-класс для тренеров и руководителей "Работа в аудитории". 1 ступень уже в марте

Обновлено расписание тренингов до марта 2017 года

Бесплатный вебинар 14 декабря в 14 00 по Мск - «Секреты управления ИТ-командой: 10 важных практик, которые сделают команду эффективной»

Новые статьи в библиотеке

Примеры отраслевых решений на основе BIPULSE

Практика реализации модуля интеграции для Rational Software Architect, позволяющего преобразовывать низкоуровневое представление процесса из IBM Rational ClearQuest в UML

Что удивляет в русских менеджерах иностранцев

Разработка ПО с использованием лучших мировых практик и инструментов на Иркутском авиационном заводе

Презентация доклада для IT Global Meetup Санкт-Петербург: "Почему Agile так популярен? Взгляд циника и психолога"

Отчет, презентация и видео доклада для Октябрьской встречи Петербургского клуба менеджеров проектов в IT - SPM Meetup #36

Заказчики и истории успеха

Наши тренинги, семинары, курсы

Дружите с нами на FaceBook

Проверить настройки
Компания
Сделано в СМ-Консалт
Услуги 
Компетенция
  • CMC-TotalTest (скоро)
    уникальная разработка автоматизации функционального тестирования. Альтернатива HP UFT, IBM RFT и Microsoft!
  • CMC-Bisquiter
    автоматизированное тестирование АБС "Бисквит"
  • CMC-Formater
    тестирование печатных и экранных форм
  • CMC-TerminalTest
    тестирование терминальных приложений
  • ProjectTracker
    интеграция ALM и MS Project
  • GanttChart
    модуль управления проектами для IBM Rational ClearQuest и TeamConcert
    Все разработки СМ-Консалт >
  • ИТ-консалтинг
  • Автоматизированное тестирование
  • Ручное тестирование
  • Аутсорсинг тестирования
  • Оптимизация бизнес-процессов
  • Внедрение методологии и инструментов ALM
  • Обучение и коучинг
  • Разработка ПО
  • Интеграция
ООО СМ-Консалт (СМК), 2004-2016.
Карта сайта