Автор работы: Пользователь скрыл имя, 20 Октября 2014 в 13:25, реферат
Рассмотрим вопрос эффективной организации взаимодействия информационных систем. Важно знать, какие бизнес-процессы необходимы предприятию для осуществления его бизнес-функций. С этой целью проводят декомпозицию функциональных блоков бизнес-процессов до получения цепочек бизнес-процессов, цепочек бизнес-процессов - до получения отдельных бизнес-процессов, а отдельных бизнес-процессов - до составляющих их функций.
1. Определение сервиса 3
2. Требования к SOA 3
3. Функции Web-сервисов 4
4. Основные технологии Web-сервисов 5
5. Виды Web-сервисов 9
6. REST 10
7. OData 14
8. Используемые ресурсы 19
Вместе Binding Template и Technology Model определяют Web-сервис. Technology Model содержит абстрактное описание, а Binding Template — конкретную спецификацию сервиса. Каждый элемент Binding Template принадлежит определенному элементу Business Service, но несколько элементов Binding Template могут ссылаться на один элемент Technology Model.
Бизнес-реестр UDDI сам является SOAP Web-сервисом. Он поддерживает операции создания, модификации, удаления и поиска элементов всех четырех рассмотренных выше типов.
5. Виды Web-сервисов
Для пользования разнообразными интернет-услугами, в Рунете существует множество веб-сервисов. Что же представляют собой веб-сервисы и какие виды веб-сервисов существуют? Они делятся на основные типы сайтов:
1) Поисковые системы. Наиболее популярные поисковые системы – Google и Яндекс
2) Почтовые
сервисы так же предоставляют
создатели поисковых системы, но
самым популярным почтовым
3) Интернет-форумы.
На сайтах этого вида
4) Сайты –
хостинги – на этом основном
типе сайта реализована
5) Доски объявлений
– на этих сайтах пользователи
могут размещать либо искать
какую-то конкретную
6) Социальные
сети – этот тип сайтов создан
для общения пользователей
6. REST
REST (Representational state transfer)
– это стиль архитектуры
В общем случае REST
является очень простым интерфейсом управления
информацией без использования каких-то
дополнительных внутренних прослоек.
Каждая единица информации однозначно
определяется глобальным идентификатором,
таким как URL. Каждая URL в свою очередь имеет
строго заданный формат.
А теперь тоже самое
более наглядно:
Отсутствие дополнительных
внутренних прослоек означает передачу
данных в том же виде, что и сами данные.
Т.е. мы не заворачиваем данные в XML, как
это делает SOAP и XML-RPC, не используем AMF,
как это делает Flash и т.д. Просто отдаем
сами данные.
Каждая единица информации
однозначно определяется URL – это значит,
что URL по сути является первичным ключом
для единицы данных. Т.е. например третья
книга с книжной полки будет иметь вид
/book/3, а 35 страница в этой книге — /book/3/page/35.
Отсюда и получается строго заданный формат.
Причем совершенно не имеет значения,
в каком формате находятся данные по адресу
/book/3/page/35 – это может быть и HTML, и отсканированная
копия в виде jpeg-файла, и документ Microsoft
Word.
Как происходит управление
информацией сервиса – это целиком и полностью
основывается на протоколе передачи данных.
Наиболее распространенный протокол конечно
же HTTP. Так вот, для HTTP действие над данными
задается с помощью методов: GET (получить),
PUT (добавить, заменить), POST (добавить, изменить,
удалить), DELETE (удалить). Таким образом,
действия CRUD (Create-Read-Updtae-Delete) могут выполняться
как со всеми 4-мя методами, так и только
с помощью GET и POST.
Вот как это будет
выглядеть на примере:
GET /book/ — получить
список всех книг
GET /book/3/ — получить
книгу номер 3
PUT /book/ — добавить
книгу (данные в теле запроса)
POST /book/3 – изменить
книгу (данные в теле запроса)
DELETE /book/3 – удалить
книгу
Существуют так называемые REST-Patterns, которые различаются
связыванием HTTP-методов с тем, что они
делают. В частности, разные паттерны по-разному
рассматривают POST и PUT. Однако, PUT предназначен
для создания, реплейса или апдейта, для
POST это не определено (The POST operation is very generic and no specific meaning can be
attached to it). Поэтому
мой пример будет правильным и в таком
виде, и в виде если поменять местами POST
и PUT.
Вообще, POST может использоваться
одновременно для всех действий изменения:
POST /book/ – добавить
книгу (данные в теле запроса)
POST /book/3 – изменить
книгу (данные в теле запроса)
POST /book/3 – удалить
книгу (тело запроса пустое)
Это позволяет иногда
обходить неприятные моменты, связанные
с неприятием PUT и DELETE.
Как известно,
web-сервис – это приложение работающее
в World Wide Web и доступ к которому предоставляется
по HTTP-протоколу, а обмен информации идет
с помощью формата XML. Следовательно, формат
данных передаваемых в теле запроса будет
всегда XML.
Для каждой
единицы информации (info) определяется
5 действий. А именно:
GET /info/ (Index) – получает список всех объектов. Как
правило, это упрощенный список, т.е. содержащий
только поля идентификатора и названия
объекта, без остальных данных.
GET /info/{id} (View) – получает полную информацию о объекте.
PUT /info/ или POST /info/ (Create) – создает новый объект. Данные передаются
в теле запроса без применения кодирования,
даже urlencode. В PHP тело запроса может быть
получено таким способом:
function getBody() {
if (!isset($HTTP_RAW_POST_DATA))
$HTTP_RAW_POST_DATA = file_get_contents("php://
return $HTTP_RAW_POST_DATA;
}
POST /info/{id} или PUT /info/{id} (Edit) – изменяет данные с идентификатором
{id}, возможно заменяет их. Данные так же
передаются в теле запроса, но в отличие
от PUT здесь есть некоторый нюанс. Дело
в том, что POST-запрос подразумевает наличие
urldecoded-post-data. Т.е. если не применять кодирования
– это нарушение стандарта. Тут кто как
хочет – некоторые не обращают внимания
на стандарт, некоторые используют какую-нибудь
post-переменную.
DELETE /info/{id} (Delete) – удаляет данные с идентификатором
{id}.
Еще раз отмечу,
что в нашем примере /info/ — может и базироваться
на какой-то другой информации, что может
быть (и должно) быть отражено в URL:
/data/4/otherdata/6/info/3/
… и тому подобное.
Какие можно сделать из этого выводы:
Как видно,
в архитектура REST очень проста в плане
использования. По виду пришедшего запроса
сразу можно определить, что он делает,
не разбираясь в форматах (в отличие от
SOAP, XML-RPC). Данные передаются без применения
дополнительных слоев, поэтому REST считается
менее ресурсоемким, поскольку не надо
парсить запрос чтоб понять что он должен
сделать и не надо переводить данные из
одного формата в другой.
Самое главное
достоинство сервисов в том, что с ними
работать может какая угодно система,
будь то сайт, flash, программа и др. так как
методы парсинга XML и выполнения запросов
HTTP присутствуют почти везде.
Архитектура
REST позволяет серьезно упростить эту задачу.
Конечно в реальности, того что описано
не достаточно, ведь нельзя кому угодно
давать возможность изменять информацию,
то есть нужна еще авторизация и аутентификация.
Но это достаточно просто разрешается
при помощи различного типа сессий или
просто HTTP Authentication.
Правила REST для взаимодействия клиент/сервер могут целиком определяться требованиями приложений. Так, если определить интерфейс REST, предназначенный для клиента JavaScript, можно сделать так, чтобы данные возвращались в формате JSON, а если он предназначен для клиента PHP, то это могут быть упорядоченные данные или XML.
Каждый вызов Web-сервисов REST – это простой запрос HTTP с использованием одного из стандартных глаголов HTTP. Как правило, используется глагол, наиболее подходящий для выполняемого действия:
В листинге показано, как пример взаимодействия с Web-сервисом поиска Yahoo! REST работает с PHP. Пример взаимодействия с Web-сервисом REST на PHP.
<?php
// Указание нужного Web-сервиса REST
$url = 'http://search.yahooapis.com/
webSearch?appid=YahooDemo&
// Обращение к Web-сервису; результаты возвращаются в формате XML
$resultsXml = file_get_contents($url);
// Преобразование XML в объект SimpleXML
$xmlObject = simplexml_load_string($
// Просмотр объекта для
foreach ( $xmlObject->Result as $result )
echo "{$result->Title}\n";
В примере из листинга выполняется поиск по ключевому слову sugarcrm с помощью Web-сервиса поиска Yahoo. При этом используется функция PHP file_get_contents(), которая выполняет запрос GET по указанному URL. По умолчанию она возвращает результаты запроса в качестве строки XML, а библиотека PHP SimpleXML используется для ее преобразования в объект PHP, который можно многократно применять для получения искомых данных.
7. OData
OData — это веб-ориентированный API-интерфейс
для доступа к данным и
OData —
это веб-ориентированный API-интерфейс
для доступа к данным и
В схеме на рисунке показано, как такой ресурс, как база данных, может быть выставлен в Интернете при посредстве OData-поставщика общего назначения. Синтаксис OData позволяет с помощью Web-браузеров подергать данные в вышеупомянутой базе данных различным манипуляциям (создание, обновление, удаление, запрос).
На рисунке показана схема языка CSDL (Conceptual Schema Definition Language). CSDL — это опциональный инструмент, помогающий приложениям-потребителям понимать структуру выставляемых данных. CSDL подобен метаданным в JDBC and ODBC, он помогает клиентским приложениям понимать, к чему именно они обращаются.
В Интернете имеются тысячи веб-ориентированных API-интерфейсов. OData — это один из примеров такого API-интерфейса. Стандартизация таких интерфейсов позволит улучшить консолидацию в этом важной технологической области и поможет инновациям идти в ногу с потребностями рынка, в частности поддерживать новые конструкции данных и инициативы в сфере открытых данных.
В настоящее время используются тысячи веб-ориентированных API-интерфейсов. К числу популярных API-интерфейсов этой категории относятся картографические сервисы. По состоянию на июнь 2012 года на веб-сайте Programmable Web было перечислено более 6000 веб-ориентированных API-интерфейсов (см. заметку под названием: API Business Models Take Center Stage). Недавнее исследование компании Vordel показало, что "половина предприятий внедряет API-интерфейсы для построения новых бизнес-каналов", при этом 25% из этих интерфейсов разрабатывается специально для мобильных приложений.
Одна из интересных областей – какое отношение имеет OData к деятельности в области API-интерфейса Linked Data. Рабочая группаW3C Linked Data Platform (LDP) Working Group и технический комитет OASIS OData Technical Committee стремятся специфицировать API-интерфейсы REST-типа для получения данных и манипулирования ими в Интернете с использованием различных моделей данных. Платформа LDP базируется на модели данных Resource Definition Framework (RDF) а OData базируется на модели данных Entity Data Model (EDM).
EDM представляет
информацию способом, который хорошо
знаком многим разработчикам, занимающимся
данными. Это существенно облегчает
понимание и использование
Построение адаптеров между гетерогенными веб-ориентированными API-интерфейсами вполне возможно. К примеру, прототип адаптера для связывания рабочих элементов (workitem) решения IBM Rational Team Concert, получаемых посредством API-интерфейс на базе Linked Data под названием OSLC (Open Services for Life Cycle Collaboration), и документов Microsoft Sharepoint, получаемых посредством OData.
По мере расширения рынка появляются все новые API-интерфейсы. Хотя их возможности могут перекрываться до той или иной степени, не вызывает сомнения, что разработчики продолжат создавать инновации в этой перспективной технологической области по мере выявления новых сценариев применения.
Пример на OData, обращающийся к сервису Netflix
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<feed xml:base="http://odata.
xmlns:d="http://schemas.
xmlns:m="http://schemas.
xmlns="http://www.w3.org/2005/
<title type="text">Titles</title>
<id>http://odata.netflix.com/
<updated>2012-05-23T21:41:18Z<
<link rel="self" title="Titles" href="Titles" />
<entry>
<id>http://odata.netflix.com/
<title type="text">Red Hot Chili Peppers: Funky Monks</title>
<summary type="html">Lead singer Anthony Kiedis, bassist Flea, ... </summary>
<updated>2012-01-31T09:45:16Z<
<author>
<name />
</author>
.
.
.
</entry>
</feed>
8. Используемые ресурсы
Информация о работе Web-сервисы, виды, технологии. REST. OData