Автор работы: Пользователь скрыл имя, 12 Января 2014 в 22:01, курсовая работа
Распределенным называется приложение, отдельные компоненты которого работают на разных компьютерах и используют разные сетевые средства, но взаимодействуют так, что приложение выглядит как единое целое, как будто все его компоненты расположены на одной машине. Простейшая архитектура распределенного приложения, называемая архитектурой клиент-сервер, предполагает, что приложение состоит из двух частей: серверной части, оказывающей услуги, и клиентской части, пользующейся услугой.
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-сервиса будет
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 может использоваться
с любым протоколом
Важнейший элемент SOAP – SOAP-послание. Оно представляет собой документ XML, не содержащий типы документа и инструкции по его обработке.
Корневой элемент посылаемого документа XML <Envelope> содержит необязательный заголовок <Header> и обязательное тело <Body>. Схема SOAP-послания приведена ниже.
<?xml version-‘1.0' ?>
<env:Envelope
xmlns:env="http://www.w3.org/
<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.
Популярность в области построения веб-сайтов определяется наличием большого набора встроенных средств для разработки веб-приложений. Основные из них: