----------------------------------- © М.В. Абрамов, В.М. Шек,
2004
УДК 658.512
М.В. Абрамов, В.М. Шек
ПРИМЕНЕНИЕ ОТКРЫТЫХ ПРОТОКОЛОВ ОБМЕНА ДАННЫМИ НА ОСНОВЕ XML В АВТОМАТИЗИРОВАННОЙ СИСТЕМЕ ЖИЛИЩНОЙ ОРГАНИЗАЦИИ
Семинар №10
Жилищно-коммунальное хозяйство (ЖКХ) представляет собой сложную систему. «Без современных информационных технологий невозможно проводить реформу ЖКХ в таком крупном городе как Москва. Эти технологии должны обеспечивать мониторинг состояния жилого фонда, инженерных сетей и коммуникаций (включая диспетчеризацию жилых зданий, паспортизацию домов, дворовых территорий и т. д.), организацию расчетов с населением и оказание адресной социальной помощи, контроль за потреблением тепло- и энерго- ресурсов и его оптимизацию, автоматизацию сбора, передачи, обработки и анализа информации, а также информационную поддержку процесса принятия управленческих решений [2].» На сегодняшний день все вышеперечисленные задачи решаются различными организациями, иногда имеющими собственные информационные системы. Интеграция уже существующих и вновь создаваемых систем в единую информационную структуру города представляет собой сложную задачу, успешное решение которой возможно только при использовании открытых протоколов обмена данными. В настоящее время решениями на базе открытых протоколов являются Веб-технологии и обмен данными на основе расширяемого языка разметки (The Extensible Markup Language, XML).
XML
XML (The Extensible Markup Language) - подмножество Стандартного Обобщенного языка разметки (Standard Generalized Markup Language, SGML) был утвержден междуна-родной организацией W3C в 1998 году. Язык разрабатывался для передачи, получения и обработки в Интернете общих документов SGML, и спроектирован так, чтобы упростить реализацию и обеспечить взаимодействие SGML и Hypertext Markup Language (HTML) [6].
XML позволяет описывать и передавать такие структурированные данные, как:
• отдельные документы;
• метаданные, описывающие содержимое какого-либо узла Интернета;
• объекты, содержащие данные и методы работы с ними (например, элементы управления ActiveX или объекты Java);
• отдельные записи (например, результаты выполнения запросов к базам данных);
• всевозможные веб-ссылки на информационные и людские ресурсы Интернета (ад-
реса электронной почты, гипертекстовые ссылки и пр.).
Данные, описанные на языке XML, называются XML-документами. Исходный текст XML-документа состоит из набора XML-элементов. Каждый XML-элемент содержит часть данных, заключенную в начальный и конечный тэги, описывающие ее.
Ниже приведен пример описания количества домов в каждом районе Центрального округа Москвы на языке XML.
<number_of_houses>
<city name="Москва">
<district name="Центральный Административный Округ">
<region name = "Арбат">239</region>
<region name = "Басманный">679</region>
<region name = "Замоскворечье">327</region>
<region name = "Красносельский">226</region>
<region name = "Пресненский">736</region>
<region name = "Tаганский">467</region>
<region name = "Tверской">532</region>
<region name = "Хамовники">485</region>
<region name = "Якиманка">141</region> </district>
</city>
</number_of_houses>
Любой элемент XML-документа может иметь атрибуты, уточняющие его характеристики. Атрибут - это пара имя="значение", которая задается при определении элемента в начальном тэге. В приведенном выше примере у элементов <city>, <district>, <region> имеется атрибут name - наименование.
Принцип расширяемости языка XML состоит в возможности использования неограниченного количества пар тэгов, определяемых создателем XML-документа.
Принцип независимости определения внутренней структуры документа от способов представления этой информации состоит в отделении данных от процесса их обработки и отображения. Таким образом, полученные данные можно использовать в соответствии с нуждами клиента, то есть выбирать нужное оформление, применять необходимые методы обработки и т.д.
Существуют правила формирования XML-документов:
• каждый открывающий тэг, определяющий некоторую часть данных в документе, обязательно должен сопровождаться закрывающим;
• вложенность тэгов в XML строго контролируется, поэтому необходимо следить за порядком следования открывающих и закрывающих тэгов;
• в XML учитывается регистр символов;
• вся информация, располагающаяся между начальным и конечным тэгами, рассматривается в XML как данные, и поэтому учитываются все символы форматирования (пробелы, переводы строк, табуляции и т.п.);
• в XML существует набор зарезервированных символов, задающихся в XML-документе специальным образом(< <, & &б, > >, " ", ' &apos );
• каждый XML-документ должен иметь уникальный корневой элемент. В нашем примере таким элементом является элемент <number_of_houses>;
• все значения атрибутов, используемых в определении тэгов, должны быть заключены в кавычки;
• и т.д.
Если XML-документ не нарушает приведенные выше правила, то он называется корректным (well-formed).
Кроме того, для XML-документа может быть задано правило, по которому он был сформирован. Это позволяет осуществлять контроль правильности наполнения документа. На сегодняшний день существует два механизма контроля правильности XML-документа: DTD-определения (Document Type Definition) и схемы данных (Semantic Schema). Схема - это способ создания правил построения XML-документов, то есть задания допустимых имен, типов, атрибутов и отношений элементов в XML-документе. По сравнению с DTD-описаниями, схемы обладают более мощными средствами для определения сложных структур данных, обеспечивают более понятный способ описания грамматики языка, способны легко модернизироваться и расширяться. В основе схем также лежит описание на основе XML, т.е. язык XML можно назвать самоописывающимся. Если XML-документ удовлетворяет определенной схеме или DTD-описанию, то он является действительным (valid) [1]. Получение данных из XML-документа, а также проверка корректности и действительности XML-документов обеспечивается анализаторами (parsers) XML-документов. Собственные XML-анализаторы разработаны такими компаниями как Microsoft, Oracle, Sun и т.д. Если XML-документ является корректным, то все анализаторы, предназначенные для разбора XML-документов, смогут с ним работать. XML-анализаторы позволяют извлекать заданные в документе элементы и передавать их прикладной программе, выполняющей необходимые действия. То есть после разбора XML-документа в большинстве случаев, прикладной программе предоставляется объектная модель, отображающая содержимое полученного XML-документа, и средства для работы с ней (прохода по дереву элементов) [5].
На базе XML разработан ряд протоколов обмена данными между удаленными приложениями. Среди них можно назвать XML Remote Procedure Calling (XML-RPC) и Simple Object Access Protocol (SOAP).
XML-RPC
XML-RPC (Remote Procedure Calling) - протокол удаленного вызова процедур, работающий через Интернет.
Сообщение XML-RPC является HTTP-POST запросом, в теле которого содержится XML. Процедура выполняется на сервере, и результаты ее работы также передаются в формате XML. Параметры процедуры могут быть целыми числами, числами с плавающей точкой, строками, датами и т.д. Также в качестве параметров могут выступать сложные записи и списковые структуры [4].
Ниже представлен пример XML-RPC запроса названия района по коду:
POST /RPC2 HTTP/1.0 User-Agent: Frontier/5.1.2 (WinNT)
Host: mgi.mos.ru Content-Type: text/xml Content-length: 181
<?xml version="1.0"?>
<methodCall>
<methodName>city.getRgionName</methodName>
<params>
<param>
<value><i4>41</i4></value>
</param>
</params>
</methodCall>Похожим на XML-RPC, но более мощным протоколом обмена данными, позволяющим не только удаленно вызывать процедуры, но и работать с удаленными объектами, является SOAP.
SOAP
SOAP (Simple Object Access Protocol) - Простой Протокол Доступа к Объектам предназначен для обмена структурированной информацией в децентрализованных, распределенных средах. В его основе также лежит XML.
Ниже представлены примеры SOAP запроса названия района по коду:
POST /region.asmx HTTP/1.1 Host: mgi.mos.ru
Content-Type: text/xml; charset=utf-8 Content-Length: 250
SOAPAction: "http://tempuri.org/getName"
<?xml version="1.0" encoding="utf-8"?>
<soap: Envelope xmlns:xsi="http: //www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<getName xmlns="http://tempuri.org/">
<ID>41</ID>
</getName>
</soap:Body>
</soap:Envelope>
и ответа на него:
HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: 203
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelopexmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<getNameResponse xmlns="http://tempuri.org/"> <getNameResult>Басманный</getNameResult>
</getNameResponse>
</soap:Body>
</soap:Envelope>
SOAP лег в основу такой мощной компонентной архитектуры как Веб-службы XML.
Веб-службы XML
Веб-службы XML являются программируемой логикой приложений доступной с помощью стандартных протоколов Интернета. Веб-службы объединяют лучшие качества компонентной архитектуры и Веб-приложений. Как компоненты, Веб-службы представляют функциональность «черного ящика», которая может быть использована без знания того, как компонент был реализован. В отличие от других компонентных моделей, доступ к Веб-службам осуществляется не по специализированным протоколам обмена данными, таким как distributed Component Object Model (DCOM), Remote Method Invocation (RMI), или Internet Inter-ORB Protocol (IIOP). Вместо этого доступ к ним осуществляется с помощью универсальных протоколов, таких как Hypertext Transfer Protocol (HTTP) и SOAP. Интерфейс Веб-службы определен в терминах сообщений, которые Веб-служба принимает и генерирует. Клиенты Веб-службы могут быть реализованы на любой платформе с помощью любого доступного языка программирования, позволяющего генерировать и интерпретировать сообщения, определенные в интерфейсе Веб-службы [3].
На базе XML разработан набор решений и протоколов, позволяющих осуществить интеграцию целых систем и программных компонент на новом уровне. Среди преимуществ использования XML можно назвать следующие:
• интеграция данных из различных источников. XML можно использовать для объединения разнородных структурированных данных на среднем уровне трехуровневых веб-систем, баз данных;
• локальная обработка данных. Полученные данные в формате XML можно разбирать, обрабатывать, сохранять и отображать непосредственно на клиенте без дополнительных обращений к серверу;
• просмотр и манипулирование данными в различных разрезах. Полученные данные могут обрабатываться и просматриваться клиентом различными способами в зависимости от нужд конечного пользователя;
• возможность частичного обновления данных. С помощью XML можно обновлять только ту часть структурированных данных, которая была изменена, а не всю структуру целиком;
• контроль правильности составления документов. XML схемы позволяют автоматически проверять поступившие документы на корректность, а также разделять документы по видам.
Все эти преимущества делают XML полезным инструментом при разработке мощных и гибких информационных систем с многоуровневой распределенной архитектурой. Построенная таким образом автоматизированная система жилищной организации в дальнейшем может быть легко интегрирована в единую информационную структуру города.
--------------------------------------------------------------- СПИСОК ЛИТЕРАТУРЫ
1. Маленкова А. Основы XML/MSDN, http:// 4. http://www.xmlrpc.com/;
www.microsoft.com/rus/msdn/activ/article/xml/; 5. W3C SOAP Version 1.2 Part 1: Messaging
2. Зотов В. Современные информационные Framework / http://www.w3.org/TR/ soap12-part1/;
технологии в реформировании жилищно-коммуналь- 6. W3C Extensible Markup Language (XML) 1.0
ного хозяйства / Проблемы теории и практики (Second Edition) / http://www.w3.org/ TR управления №4 2002; /2000/REC-xml-20001006.
3. Kirtland Mary A Platform for Web Services /
MSDN, 2001;
— Коротко об авторах----------------------------------------------------------------------
Абрамов Максим Валерьевич - аспирант
Шек Валерий Михайлович - профессор, доктор технических наук,
кафедра «Автоматизированные системы управления», Московский государственный горный университет.