Архитектура web-служб

Автор работы: Пользователь скрыл имя, 12 Января 2014 в 22:01, курсовая работа

Краткое описание

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

Прикрепленные файлы: 1 файл

part06damaged.doc

— 870.00 Кб (Скачать документ)


1 АРХИТЕКТУРА WEB-СЛУЖБ

Распределенным  называется приложение, отдельные компоненты которого работают на разных компьютерах  и используют разные сетевые средства, но взаимодействуют так, что приложение выглядит как единое целое, как будто все его компоненты расположены на одной машине.

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

В Web-приложении, построенном по архитектуре клиент-сервер, услуги оказывает Web-сервер, а клиентом служит браузер, или текстовый редактор, подключенный к Интернету, или другое клиентское приложение, связанное с Web-сервером как показано на рис. 1.1.

Рисунок 1.1 – Архитектура "клиент-сервер"

В архитектуре  клиент-сервер очень важно правильно  разделить работу между клиентом и сервером.

 

 

Клиент может  быть:


- "тонким" (только отображать результаты  запроса; это удобно для организации  клиента, его можно разместить на простейшем дешевом компьютере, не нужно сложного программного обеспечения, в большинстве случаев достаточно обыкновенного браузера; но тогда сервер становится "толстым" - ему приходится выполнять все запросы к источнику данных и всю обработку этих даннях, он может не справится с нагрузкой, его трудно модернизировать, обновлять, неудобно наращивать его мощность);

- "толстым" (выполнять всю обработку результатов запроса, а сервер "тонким", только рассылающим необработанные данные клиентам; так организован классический обмен информацией по WWW между "толстыми" браузерами и "тонкими" Web-серверами; в этом случае для клиента требуется мощный дорогостоящий компьютер, а в случае смены алгоритма обработки данных или обнаружения ошибок придется обновлять программное обеспечение на всех клиентских машинах).

Для того чтобы  избавиться от этих недостатков архитектуры  клиент-сервер, программы, которые обрабатывают данные, выделяют в отдельный, промежуточный (middleware) слой программного обеспечения. Этот слой может работать на той же машине, что и серверный слой, работать на другой машине или даже на нескольких машинах. Распределенное приложение становится трехслойным. 

Количество  слоев можно увеличивать, но важнее установить надежную и быструю связь  между всеми компонентами распределенного приложения. Чаще всего компоненты распределенного приложения работают на разных платформах: клиентская часть разработана для Microsoft Windows, Apple Macintosh или Linux, серверная часть – для Solaris, Linux, Free BSD, AIX, HP UX, для других UNIX или для мейнфреймов. Более того, сейчас наблюдается явная тенденция создавать приложения, независимые от какой бы то ни было платформы.


В данной курсовой работе для  разработки Web-сервиса будет использоваться язык программирования PHP и протокол обмена структурированными сообщениями SOAP. В качестве локального HTTP-сервера будет использоваться Apache.

 

2 БАЗОВЫЕ СВЕДЕНИЯ О  WEB-СЕРВИСАХ


Принципы, лежащие в основе Web-сервисов достаточно просты. Они ничего не добавляют нового в мир распределенных вычислений и Интернета:

1) Лицо, ответственное  за Web-сервис, определяет формат запросов к своему Web-сервису и его ответов;

2) Любой компьютер  в сети делает запрос к Web-сервису;

3) Web-сервис обрабатывает запрос, выполняет какое-либо действие, а затем отправляет ответ.

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

2.1 Основные  понятия

Причина интереса к Web-сервисами, в том, что в их основе лежат стандарты, открытые протоколы обмена и передачи данных.

До этого многие компании разрабатывали свои собственные  закрытые стандарты и форматы. А  сейчас для работы нужно знать  всего лишь простой язык XML (eXtensible Markup Language), который передается по протоколу HTTP. Это значит, что информация о работе Web-сервисов доступна для всех, и Web-разработчики, которые по роду профессии знакомы с этими технологиями, могут начать экспериментировать с Web-сервисами уже сегодня.

XML (eXtensible Markup Language – расширяемый язык разметки) – рекомендованный Консорциумом Всемирной паутины язык разметки. Спецификация XML описывает XML-документы и частично описывает поведение XML-процессоров (программ, читающих XML-документы и обеспечивающих доступ к их содержимому). XML разрабатывался как язык с простым формальным синтаксисом, удобный для создания и обработки документов программами и одновременно удобный для чтения и создания документов человеком, с подчёркиванием нацеленности на использование в Интернете. Язык называется расширяемым, поскольку он не фиксирует разметку, используемую в документах: разработчик волен создать разметку в соответствии с потребностями к конкретной области, будучи ограниченным лишь синтаксическими правилами языка. Сочетание простого формального синтаксиса, удобства для человека, расширяемости, а также базирование на Юникод для представления содержания документов привело к широкому использованию как собственно XML, так и множества производных специализированных языков на базе XML в самых разнообразных программных средствах[1].

Разница между Web-сервисами и другими технологиями, с которыми разработчикам приходилось сталкиваться (например, DCOM, именованные каналы - named pipes, RMI) в том, что Web-сервисы основаны на открытых стандартах, ими легко овладеть, и эти стандарты широко поддерживаются на всех платформах Unix и Windows.

Web Services – это услуги, предоставляемые по WWW с использованием той или иной реализации языка XML, протокола HTTP или других Web-протоколов. Есть множество определений этого понятия. Каждая фирма, разрабатывающая Web Services, дает свое определение Web-услуг.[1]

Web Service – это приложение, идентифицируемое строкой URL, интерфейсы и связи которого могут определяться, описываться и отыскиваться документами XML. Оно взаимодействует напрямую с другими приложениями по межсетевым протоколам с помощью сообщений, записанных на языке XML.


По этому  определению Web Service – это не всякая услуга, оказываемая посредством Web-технологии. Пересылка файлов, даже XML-документов, к ней не относится. Обычными Web-услугами пользуются независимые приложения: браузеры, связанные с Web-сервером только на время оказания услуги. В отличие от них услуги, названные "Web Services", предоставляются, как правило, в рамках распределенного приложения. Можно сказать, что обычные Web-услуги предоставляются клиенту-человеку, a Web Services - это услуги, оказываемые клиенту-программе. Как правило, Web Service применяется как компонент распределенной информационной системы, разбросанной по компьютерам с разной архитектурой и разными средствами сетевой связи.

Для удобства предоставления Web-услуг необходим эффективный протокол пересылки информации, основанный на XML. Все началось с очень простого протокола XML-RPC, оформленного как реализация языка XML. Рассмотрим его подробнее.

2.2 Протокол SOAP

SOAP (от англ. Simple Object Access Protocol — простой протокол  доступа к объектам; вплоть до  спецификации 1.2) — протокол обмена структурированными сообщениями в распределённой вычислительной среде. Первоначально SOAP предназначался в основном для реализации удалённого вызова процедур. Сейчас протокол используется для обмена произвольными сообщениями в формате XML, а не только для вызова процедур. Официальная спецификация последней версии 1.2 протокола никак не расшифровывает название SOAP. SOAP является расширением протокола XML-RPC.[2]

SOAP может использоваться  с любым протоколом прикладного  уровня: SMTP, FTP, HTTP, HTTPS и др. Однако его взаимодействие с каждым из этих протоколов имеет свои особенности, которые должны быть определены отдельно. Чаще всего SOAP используется поверх HTTP.

Важнейший элемент SOAP – SOAP-послание. Оно представляет собой документ XML, не содержащий типы документа и инструкции по его обработке.


Корневой элемент посылаемого  документа XML <Envelope> содержит необязательный заголовок <Header> и обязательное тело <Body>. Схема SOAP-послания приведена ниже.


<?xml version-‘1.0' ?>

<env:Envelope

               xmlns:env="http://www.w3.org/2002/06/soap-envelope">

         <env:Header>

                <!— Блоки заголовка —>

          </env:Header>

          <env:Body>

          <!— Содержимое послания —>

           </env:Body>

</env:Envelope>

Элемент <Header>, если он есть в послании, записывается первым в теле элемента <Envelope>. Кроме атрибутов xmlns, в нем может быть атрибут actor, указывающий адресом URI конкретный SOAP-сервер, которому предназначено послание.

Если SOAP-сервер, обрабатывая поступившее к нему SOAP-послание, заметит ошибку, то он прекратит обработку и отправит клиенту SOAP- послание, в тело которого запишет один элемент <Fault> с сообщением об ошибке.

В теле сообщения, записанном в теле элемента <Fault> могут быть следующие элементы <faultcode>, <faultstring>, <faultactor>, <detail>.

Элемент <faultcode> — сообщение, показывающее тип ошибки. Оно предназначено для программы, обрабатывающей ошибки. Элемент <faultstring> представляет собой словесное описание типа ошибки, предназначенное для человека. Элемент <faultactor> указывает адрес сервера, заметившего ошибку. Элемент <detail> содержит подробное описание ошибок, встреченных в теле <Body> послания, но не в его заголовке. Если при обработке тела ошибки не обнаружены, то этот элемент отсутствует.

 

 

 

В SOAP имеется 4 вида ошибок:

1) versionMismatch — пространство имен неопознано. Может быть, оно устарело или его имя написано неправильно.

2) MustUnderstand — блок заголовка, помеченный атрибутом mustUnderstand со значением 1, не отвечает своему синтаксису, определенному в схеме документа.

3) client — документ XML, содержащий послание, неправильно сформирован и по этой причине сервер не может его обработать.


4) Server — сервер не может обработать правильно записанное послание по своим внутренним причинам.

В SOAP-посланиях  передаются данные различных типов: даты, числа, строки, символы, массивы, структуры. В табл. 2.1 приведен список типов данных, поддерживаемых SOAP.

Таблица 2.1 Простые типы данных SOAP

Название

Назначение

string

Строки

boolean

Логические  значения

float, double, decimal

Вещественные  числа

binary

Бинарные числа

byte, short, int, integer, long, nonePositiveInteger, NegativeInteger, NonNegativeInteger, unsignedByte, unsignedShort, unsignedInt, unsignedLong

Целые числа

date, time

Дата и время


 

В состав SOAP-послания также могут входить определения массивов и структур. В SOAP для объявления массивов используется идентификатор Array, он не определяет ни количество элементов, ни их тип.

Для определения  массива в схеме, которая описывает данные SOAP-послания, сначала указывается название элемента с типом массив.

 

 

 Определение простейшего  массива приведено ниже.

<element name="arr" type="enc:Array" />

<arr enc:arrayType="xsd:String[2]">

<item>element1</item>

<item>element2</item>

</arr>

Структуры определяются гораздо проще массивов. Поля структуры  записываются как элементы XML, вложенные  в структуру. Они различаются  по именам своих элементов XML. Все  имена, разумеется, должны быть различны.


Фрагмент кода, отвечающий за определение структуры приведен ниже.

<Person>

<name>Petrov</name>

<firstname>Petrov</firstname>

</Person>

Типы полей структуры могут быть какими угодно, в частности, снова структурами или массивами.

2.3 Язык программирования PHP

PHP (англ. Hypertext Preprocessor) — скриптовый язык программирования общего назначения, интенсивно применяемый для разработки веб-приложений.[4] В настоящее время поддерживается подавляющим большинством хостинг-провайдеров и является одним из лидеров среди языков программирования, применяющихся для создания динамических веб-сайтов.[5]

В области программирования для сети Интернет PHP — один из популярных сценарных языков (наряду с JSP, Perl и  языками, используемыми в ASP.NET) благодаря  своей простоте, скорости выполнения, богатой функциональности, кроссплатформенности и распространению исходных кодов на основе лицензии PHP.


Популярность в области  построения веб-сайтов определяется наличием большого набора встроенных средств  для разработки веб-приложений. Основные из них:

  • автоматическое извлечение POST и GET-параметров, а также переменных окружения веб-сервера в предопределённые массивы;
  • взаимодействие с большим количеством различных систем управления базами данных (MySQL, MySQLi, SQLite, PostgreSQL, Oracle (OCI8), Oracle, Microsoft SQL Server, Sybase, ODBC, mSQL, IBM DB2, Cloudscape и Apache Derby, Informix, Ovrimos SQL, Lotus Notes, DB++, DBM, dBase, DBX, FrontBase, FilePro, Ingres II, SESAM, Firebird / InterBase, Paradox File Access, MaxDB, Интерфейс PDO);
  • автоматизированная отправка HTTP-заголовков;
  • работа с HTTP-авторизацией;
  • работа с cookies и сессиями;
  • работа с локальными и удалёнными файлами, сокетами;

Информация о работе Архитектура web-служб