ВЕСТНИК ЮГОРСКОГО ГОСУДАРСТВЕННОГО УНИВЕРСИТЕТА
2006 г. Выпуск 4. С. 31-35
УДК 55:51-7:55:007
РАЗРАБОТКА УНИВЕРСАЛЬНОЙ МОДУЛЬНОЙ СИСТЕМЫ УДАЛЕННОЙ ОБРАБОТКИ ГЕОДАННЫХ, ОСНОВАННОЙ НА ТЕХНОЛОГИИ SOAP
(Simple Object Access Protocol)
Д. А. Заленский
Предлагаемый проект разработки универсальной модульной системы удаленной обработки геоданных, основанной на технологии SOAP (Simple Object Access Protocol), позволяет объединить различные приложения, направленные на обработку геологических и геофизических данных, в единый кросс-платформенный веб-сервис для обслуживания удаленных клиентов по стандартным протоколам доступа, существующим в сетах Интернет и/или Интранет.
Перспективность внедрения разрабатываемой системы обусловлена растущей популярностью веб-сервисов для кросс-платформенного взаимодействия приложений, в том числе направленных на обработку геологических и геофизических данных путем вызова удаленных процедур обработки через стандартные транспортные протоколы, включая HTTP, SMTP и т.д. Единая инфраструктура, обеспечивающая прямое взаимодействие связанных с Интернетом приложений обработки геоданных, открывает новые возможности в интеграции сервисов и устройств - в какой бы точке Интернета они ни находились.
1. Теоретические основы работы системы
В настоящее время используемые технологии удаленного вызова процедур (DCOM, CORBA/IIOP и RMI) довольно сложны в настройке и организации взаимодействия. Это влечет за собой проблемы в эксплуатации и функционировании распределенных систем (проблемы безопасности, транспорт через брандмауэры и т.д.). Существующие проблемы успешно решены созданием SOAP (Simple Object Access Protocol), простого протокола, основанного на XML, для обмена сообщениями в распределенных средах (WWW). Он предназначен для создания веб-сервисов и удаленного вызова методов.
SOAP - это открытый, построенный на стандартах протокол, который определяет на основе XML (Extensible Markup Language) общий формат для коммуникационной связи между любыми Интернет-приложениями и сервисами. Последняя версия спецификации SOAP встретила широкую поддержку со стороны таких компаний, как ActiveState Tool Corp., Ariba Inc., BORN Information Services Inc., Commerce One Inc., Compaq Computer Corp., Develop-Mentor Inc., Extensibility Inc., IBM, IONA Technologies PLC, Intel Corp., Lotus Development Corp., ObjectSpace Inc., Rogue Wave Software Inc., Scriptics Corp., Secret Labs AB, UserLand Software и Zveno Pty. Ltd. Спецификация SOAP предоставляет общий механизм для интеграции сервисов в Интернете и/или интрасетях независимо от применяемой операционной системы, модели объектов или языка программирования. Основанный на Интернет-стандартах XML и HTTP, протокол SOAP позволяет взаимодействовать любым новым или существующим приложениям. Web-узлы, поддерживающие SOAP, могут стать Web-сервисами, доступными чисто программным путем и не требующими участия человека.
Теория разработки Web-сервисов на основе технологии SOAP на данный момент достаточно хорошо проработана и документирована. Новейшая версия спецификации протокола Simple Object Access Protocol доступна на веб-сервере, обслуживающем участников программы MSDN™ для разработчиков (http://msdn.microsoft.com/).
Технология удаленного вызова процедур обработки данных через сеть Интернет была опробована автором проекта в рамках разработки информационно-вычислительной системы «Нанотехнология». Одним из сервисов системы является модуль удаленного взаимодействия с базой данных научных разработок в области нанотехнологий, который позволяет:
1. Поиск в базе данных и выдача клиенту статей и публикаций в области нанотехнологий. Поиск выполняется как по метаданным (название статьи, авторы и т. д.), так и по полному тексту статей.
2. Загрузку файлов с различными данными с локального компьютера на сервер и их последующую обработку.
3. Добавление функционала сервиса без необходимости переписывания основного кода программы.
В результате разработки описанного модуля была признана перспективность работ в данном направлении и доказана хорошая масштабируемость решений на технологии SOAP.
2. Механизм работы системы
1. Клиентское приложение создает экземпляр объекта SOAPClient
2. SOAPClient читает файлы описания методов веб-сервиса (WSDL и Web Services Meta Language - WSML).
3. Клиентское приложение, используя возможности позднего связывания методов объекта SOAPClient, вызывает метод сервиса. SOAPClient формирует пакет запроса (SOAP Envelope) и отправляет на сервер. Возможно использование любого транспортного протокола, но, как правило, используется HTTP.
4. Пакет принимает серверное приложение Listener (может представлять собой ISAPI-приложение или ASP-страницу), создает объект SOAPServer и передает ему пакет запроса.
5. SOAPServer читает описание веб-сервиса, загружает описание и пакет запроса в XML DOM деревья.
6. SOAPServer вызывает метод объекта/приложения, реализующего сервис обработки геоданных.
7. Результаты выполнения метода или описание ошибки конвертируются объектом SOAPServer в пакет ответа и отправляются клиенту.
8. Объект SOAPClient проводит разбор принятого пакета и возвращает клиентскому приложению результаты работы сервиса обработки геоданных или описание возникшей ошибки.
3. Реализация тестового модуля системы
3.1. Необходимое ПО
Для разработки примера веб-сервиса использовалась реализация архитектуры вебсервисов в Java-технологиях. Такой реализацией является проект Apache Software Foundation под названием AXIS (Apache eXtensible Interaction System). AXIS включает в себя контейнер для размещения и использования веб-сервисов на серверах приложений, утилиты для работы с WSDL-описаниями, классы для разработки веб-сервисов и их клиентов.
Для работы AXIS требуется парсер XML. В документации к AXIS рекомендуется использовать Xerces.
Для организации сервера приложений для веб-сервисов кроме AXIS понадобится JSP/Servlet контейнер, поддерживающий спецификацию 2.2 для сервлетов. Автором использовался Tomcat 4.
Также необходимо Java JDK 1.4 или выше.
При разработке клиентов веб-сервиса использовался Perl 5.8 c библиотекой SOAP::Lite. Для ОС Windows 98/Windows 2000/Windows XP можно использовать ActivePerl 5.8.
Использовать какую-либо особенную среду разработки (IDE) для создания веб-сервиса и его клиентов необязательно.
3.2. Создание веб-приложения
Для использования веб-сервиса GeoInfoService его необходимо разместить на сервере приложений. Веб-приложение, в которое войдет веб-сервис, должно иметь доступ к AXIS, а также к парсеру XML.
Приложение располагается в каталоге приложений сервера (обычно «каталог Tomcat»/webapp), в отдельном подкаталоге с именем этого приложения.
AXIS размещается на сервере приложений как сервлет. JAR-файлы, составляющие AXIS помещаются в каталог веб-приложения: в «приложение»/WEB-INF/lib/. В качестве парсера XML используется xerces. Парсер может быть отдельным для приложения и располагаться в каталоге приложения: в «приложение»/WEB-INF/lib/, или использоваться совместно с другими приложениями на сервере и находиться вместе с другими совместно используемыми JAR-файлами (обычно «каталог Tomcat»/common/lib/).
Кроме того, необходимо настроить параметры приложения в «приложение»/WEB-INF/web.xml (зарегистрировать AXIS, открыть доступ к сервисам приложения, указать, как веб-серверу передавать WDSL-файлы).
Для веб-сервиса GeoInfoService будем использовать веб-приложение webservice, доступ к веб-сервисам этого приложения откроем как /webservice/services/*.
Настройки AXIS находятся в файле /webservice/WEB-INF/server-config.wsdd (server-config.wsdd, сконфигурированный для нового приложения надо скопировать из дистрибутива AXIS). В нем указываются установленные веб-сервисы. По умолчанию установлен вебсервис для администрирования AXIS. Теперь при обращении к /webservice /services/* можно увидеть сообщения от AXIS.
3.4. Установка веб-сервиса
Для установки веб-сервиса GeoInfoService необходимо описать для AXIS следующую информацию:
• Имя, которое веб-сервис будет иметь в веб-приложении (urn:GeoInfo);
• Тип сервиса (java:RPC);
• Класс, реализующий веб-сервис (GeoInfoService);
• Методы, предоставляемые сервисом;
• Также надо указать механизм сериализации для класса GeoInfo.
Информация для развертывания веб-сервиса содержится в специальном файле -deployment descriptor-е (*.wsdd). Deployment descriptor веб-сервиса GeoInfoService - файл GeoInfo.wsdd.
<?xml version="1.0" encoding="UTF-8"?>
<deployment xmlns=http://xml.apache.org/axis/wsdd/ xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
<service name="urn:GeoInfo" provider="java:RPC">
<parameter name="allowedMethods" value="GetGeoInfo"
/>
<parameter name="className" value="GeoInfoService"/>
</service>
<beanMapping xmlns:ns1="urn:GeoInfo"
languageSpecificType="java:GeoInfo"
qname="ns1:GeoInfo"
/>
</deployment>
Классы (откомпилированные), которые реализуют веб-сервис, надо скопировать в каталог веб-приложения, в /WEB-INF/classes.
Для осуществления развертывания веб-сервиса нужно использовать утилиту AdminClient: java org.apache.axis.client.AdminClient -l хостинг/веб-приложение/services/AdminService GeoInfo.wsdd
Установленный веб-сервис появляется в server-config.wsdd. Теперь его можно использовать.
3.5. Использование веб-сервиса
Для использования веб-сервиса клиент должен обладать следующей информацией:
• адрес, по которому расположен сервис;
• имя сервиса;
• метод и его параметры.
В простейшем случае можно задать эту информацию при разработке клиента.
С учетом сказанного можно создать простейший клиент для веб-сервиса urn:GeoInfo. Ниже приведен исходный код, где получается информация по поддерживаемым методам сервера.
#подключение библиотеки SOAP::Lite use SOAP::Lite;
print "SOAP::Lite - GeoInfo Direct Client\n"; print "возвращается объект GeoInfo\n";
$mi = SOAP::Lite ->uri('urn:GeoInfo')
->proxy('http://localhost:8070/webservice/services/')
->getMakerInfo('')
->result;
#$mi содержит объект GeoInfo
#при сериализации первая буква приводится к ниж. регистру print $mi->{GeoInfo}, "\t", $mi->{Methods}, "\n";
3.6. Ошибки при работе клиента с веб-сервисом
Протокол SOAP предусматривает реакцию веб-сервиса на различные ошибки. Например, на неверный вызов методов. Информация об ошибках в протоколе SOAP передается при помощи тегов:
<fault>
<faultcode>. . .</faultcode>
<faultstring>. . .</faultstring>
<faultdetail>. . .</faultdetail>
</fault>
Если ошибок не было, то эти теги отсутствуют в сообщении.
Покажем реакцию веб-сервиса urn:GeoInfo на неверный вызов метода.
use SOAP::Lite;
print "SOAP::Lite - GeoInfo Direct Client\n"; my $soap = SOAP::Lite ->uri('urn:GeoInfo')
->proxy('http://localhost:8070/webservice/services/');
#попытка вызова несуществующего метода getInfo() print "возвращается объект GeoInfo\n";
$som=$soap->getInfo('some');
#сервер сообщает об ошибке if ($som->fault) { print $som->faultcode, "\n", $som->faultstring, "\n";
}else{
print "call getInfo('some') is done. %(\n";
}
4. Заключение
В результате проведеннх работ создано ядро универсальной модульной системы обработки геоданных, доступной через сети Интернет/Интранет из любой точки подключения и обладающей следующими характеристиками:
• Кросс-платформенность. Приложение работает на любой распространенной операционной системе (Windows, Linux, Solaris, FreeBSD), т.к. написано на языке Java.
• Модульность. Возможность подключать в систему модули обработки геоданных от сторонних разработчиков.
• Документированность и следование стандартам. Процесс работы с системой основывается на протоколе SOAP, что позволяет сторонним разработчикам создавать собственные приложения для работы с системой.
• Интеграция с базами данных. Система умеет получать и сохранять обрабатываемые данные в распространенных СУБД (Oracle, PostgreSQL, MySQL).
Данная работа выполнена при финансовой поддержке из средств комплексного проекта 2005-РИ-00.0/009/202 «Разработка комплексной технологии поиска и разведки углеводородов в сложно построенных, глубокозалегающих месторождениях» в рамках федеральной целевой научно-технической программы «Исследования и разработки по приоритетным направлениям развития науки и техники» на 2002-2006 годы в соответствии с государственным контрактом № 02.467.11.7008 от 10.11.2005 г. между Югорским научно-исследовательским институтом информационных технологий и Федеральным агентством по науке и инновациям Российской федерации и договором №05-427-ЮГУ (НИР) от 14.11.2005 г. на выполнение научноисследовательских, опытно-конструкторских и технологических работ между ЮНИИ ИТ и Югорским государственным университетом.
ЛИТЕРАТУРА
1. Бекет Г. Java SOAP для профессионалов. - M.: Локи, 2004, 458 c.
2. Snell J., Tidwell D., Kulchenko P. Programming Web Services with SOAP - O'Reilly & Associates, 2005, 244 р.
3. Лурье И., Косиков А., Ушакова Л., Карпович Л., Любимцев М., Тутубалина О. Компьютерный практикум по цифровой обработке изображений и созданию ГИС - М.: Научный мир, 2004, 148 с.
4. Трифонова Т., Мищенко Н., Краснощеков А. Геоинформационные системы и дистанционное зондирование в экологических исследованиях - М.: Академический проект, 2005, 352с.
5. Альманах программиста. Том 2. Microsoft ASP. NET. Web-сервисы. Web-приложения / сост. Купцевич Ю.Е. - М.:Русская Редакция, 400c.
6. Ньюкомер Э. Веб-сервисы. Для профессионалов - СПб.: Питер, 2003, 256c.
7. [SOAP Part1] W3C Recommendation «SOAP 1.2 Part 1: Messaging Framework», Martin Gud-gin, Marc Hadley, Jean-Jacques Moreau, Henrik Frystyk Nielsen, 24 June 2003 (See http://www.w3.org/TR/2003/REC-soap12-part1-20030624/).
8. [SOAP Part2] W3C Recommendation «SOAP 1.2 Part 2: Adjuncts», Martin Gudgin, Marc Hadley, Jean-Jacques Moreau, Henrik Frystyk Nielsen, 24 June 2003 (See http://www.w3.org/TR/2003/REC-soap12-part2-20030624/).