WWW технология

Содержание

Слайд 2

План Исторические сведения Клиенты и серверы Протоколы Серверы приложений WWW службы SOAP, XML RPC

План

Исторические сведения
Клиенты и серверы
Протоколы
Серверы приложений
WWW службы
SOAP, XML RPC

Слайд 3

Литература http://www.w3c.org http://hercules.xml.org/xml/resources_cover.shtml http://www.iks.inf.ethz.ch/education/ws04

Литература

http://www.w3c.org
http://hercules.xml.org/xml/resources_cover.shtml
http://www.iks.inf.ethz.ch/education/ws04

Слайд 4

Исторические сведения Сегодня WWW – «синоним» Интернет и распределенных приложений в

Исторические сведения

Сегодня WWW – «синоним» Интернет и распределенных приложений в пределах

Интернет
Начало 80-х годов создана в CERN для обмена документами в пределах Интернет
1990 г. язык HTML, позже XML
В 1993 г SUN анонсировал Java – «платформенно-независимая» технология для создания программ, которая стала основой для разработки WWW приложений
Конец 90-х стандарты для удаленных вызовов процедур через Интернет (SOAP, XML RPC)
Слайд 5

Недостатки классических RPC Рассчитывались на локальные сети с большой скоростью доступа

Недостатки классических RPC

Рассчитывались на локальные сети с большой скоростью доступа и

малыми задержками
Не рассчитывались на одновременное обслуживание большого количества клиентов
Существует несколько несовместимых реализаций
Разработка сложна, требует высокой квалификации специалистов
Слайд 6

WWW WWW – всемирная паутина Большое количество серверов и клиентов, которые

WWW

WWW – всемирная паутина
Большое количество серверов и клиентов, которые работаю

с использованием общих протоколов передачи данных (http)
Каждый ресурс (документ, программа) идентифицируется уникальным идентификатором URI – uniform resource identification
Слайд 7

URI URL – locator URN - name ftp://ftp.is.co.za/rfc/rfc1808.txt http://www.ietf.org/rfc/rfc2396.txt ldap://[2001:db8::7]/c=GB?objectClass?one mailto:John.Doe@example.com news:comp.infosystems.www.servers.unix tel:+1-816-555-1212 telnet://192.0.2.16:80/

URI

URL – locator
URN - name
ftp://ftp.is.co.za/rfc/rfc1808.txt http://www.ietf.org/rfc/rfc2396.txt ldap://[2001:db8::7]/c=GB?objectClass?one mailto:John.Doe@example.com news:comp.infosystems.www.servers.unix tel:+1-816-555-1212 telnet://192.0.2.16:80/

Слайд 8

Взаимодействие клиентов и серверов Клиент WWW браузер – система отображения информации

Взаимодействие клиентов и серверов

Клиент

WWW браузер – система
отображения информации и
выполнения

клиентских программ
(аплетов)

Пользователь

Итерпретатор Java
или других языков

Сервер

WWW сервер – обслуживание
клиентский запросов

Программы, которые
выполняются на сервере –
CGI, SOAP, PHP, XML RPC

Статические документы
и программы, которые
выполняются на клиенте

Протокол HTTP

Выдача результатов
в виде HTML, XML

Выдача документов
в виде HTML, XML

Доступ к базам данных,
CORBA серверам,
Вычислительным системам

Обработка принятых данных
или выдача результатов
выполнения

ОДИНАКОВО
ДЛЯ ВСЕХ

Слайд 9

Протоколы и сериализация Транспортные протоколы – TCP/IP Представление данных – HTTP

Протоколы и сериализация

Транспортные протоколы – TCP/IP
Представление данных – HTTP hyper text

transfer protocol
Данные передаются (как правило) в текстовом виде (HTML, XML)
Сериализация и десериализация выполняются с помощью HTML, XML
Могут использоваться и другие протоколы
Уровень прикладных программ
универсальный интерфейс для представления информации – WWW браузер
Логика работы разделена между сервером (www приложение, сервлет) и клиентом (аплеты)
Слайд 10

Совместимость Для совместимости предпочтительно использовать текстовые форматы данных Данные в таком

Совместимость

Для совместимости предпочтительно использовать текстовые форматы данных
Данные в таком формате всем

людям понятны
100000
“This is a pen”
То же в шестнадцатиричном формате
186A0
54 68 69 73 20 69 73 20 61 20 70 65 6E
Во втором случае не зная формата трудно определить, что написано
В текстовом виде это занимает больше места, но его легко может понять человек и просто обработать программно
Слайд 11

HTML Таговая (tag, дескриптор) структура Разбивка потока байтов на блоки, каждый

HTML

Таговая (tag, дескриптор) структура
Разбивка потока байтов на блоки, каждый со

своим типом интерпретации
Блок выделяется «таговыми скобками»
Открывающий дескриптор
Содержимое блоки
Закрывающий дескриптор
Существует стандартный набор дескрипторов для описания форматирования документов
Слайд 12

Пример HTML Назва документа … … . . . . . .

Пример HTML



заголовка -->

Назва документа









. . .


. . .




Слайд 13

Языки гипертекстовой разметки SGML (Standard Generalized Markup Language ) – 1960-е

Языки гипертекстовой разметки

SGML (Standard Generalized Markup Language ) – 1960-е года

(IBM)
широко используется в промышленности
Общее описание языков гипертекстовой разметки
HTML – 1980-1990 года (CERN)
Подмножество SGML
Используется для форматирования текста
XML – 1990-е года (w3c)
Язык описания структуры информации c возможностью создания своих типов дескрипторов
Универсальное средство описания данных любой структуры
Слайд 14

XML Extensible Markup Language В отличие от HTML рассчитан не на

XML

Extensible Markup Language
В отличие от HTML рассчитан не на то, как

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


XML
//это начинается информация о пользователе
//это имя пользователя
//это псевдоним пользователя

Слайд 15

XML Широко используется в WWW технологии Форматирование документов Описания структур документов

XML

Широко используется в WWW технологии
Форматирование документов
Описания структур документов
Описания интерфейсов,

типов данных
Описания входных и выходных параметров при вызовах программ
Описания методов сериализации/десериализации объектов при передачи по сети
Все это в текстовом виде и независимо от аппаратной и программной платформы
Слайд 16

Синтаксис XML документа Каждый открывающий дескриптор должен иметь закрывающий, если в

Синтаксис XML документа

Каждый открывающий дескриптор должен иметь закрывающий, если в блоке

есть вложенные данные
имя

Блоки не должны перекрываться
имя - нельзя
корневой блок должен быть один


..


<\root>
Слайд 17

Синтаксис дескриптора блока Данные блока Пример …

Синтаксис дескриптора блока

<имя атрибут1=“значение” атрибут2=“значение” … атрибутN=“значение”>
Данные блока
<\имя>
Пример

age=“16”>




Слайд 18

Пространства имен (namespace) Разные пользователи могут использовать одинаковые имена дескрипторов, атрибутов,

Пространства имен (namespace)

Разные пользователи могут использовать одинаковые имена дескрипторов, атрибутов, имен,

но смысл у них может быть разным
Пример
0xc0048000 //адрес памяти
Lomonosov str. 80 //домашний адрес
Для решения проблемы были введены пространства имен
Слайд 19

Определение пространства имен Введены для того, чтобы отличать одинаковые имена в

Определение пространства имен

Введены для того, чтобы отличать одинаковые имена в

разных контекстах
Пространство имен – определяется следующим образом
xmlns:префикс=“уникальное имя”
Уникальное имя – URI, который никуда может не указывать
Пример
xmlns:my_ns=“http://my_ns.xml/my_ns”
Слайд 20

Использование пространства имен Lomonosov Str. 80 0xc0048000 То же самое Lomonosov Str. 80 0xc0048000

Использование пространства имен


Lomonosov Str. 80


0xc0048000

То

же самое

Lomonosov Str. 80


0xc0048000

Слайд 21

Описания типов документов (DTD) Для того, чтобы четко указать какие элементы

Описания типов документов (DTD)

Для того, чтобы четко указать какие элементы могут

иметь какие атрибуты и какие типы значений могут эти атрибуты принимать






]>
Если что-то не совпадает, то XML документ не верный
Слайд 22

XML документ в соответствии с описанием NAME="cluster.univ.kiev.ua” LOCALTIME="1120060429" OWNER="National Taras Shevchenko

XML документ в соответствии с описанием

NAME="cluster.univ.kiev.ua” LOCALTIME="1120060429" OWNER="National Taras Shevchenko

University of Kyiv"
LATLONG="50° 28' North; 30° 29' East;" URL="http://www.cluster.kiev.ua/">
….
Слайд 23

Схемы Типизация помогает избежать ошибок Схемы – описание сложных структур данных

Схемы

Типизация помогает избежать ошибок
Схемы – описание сложных структур данных (по аналогии

со структурами и объектами C, C++)
Фактически – описание типа
Какие элементы каких типов могут входить в сложную структуру данных
Сколько и каких элементов может в этой структуре быть
Используется XML вместо DTD
Хорошо подходит для запросов и ответов от баз данных, передачи RPC параметров
Слайд 24

Пример схемы C++ class person_t { string name; string surname; time_t birth_date; }; XML

Пример схемы

C++
class person_t {
string name;
string surname;
time_t birth_date;
};

XML

type=“personType"/>








Слайд 25

Пример объектов (структур) C++ person_t person; person.name=“Olexandr ”; person.surname=“Sudakov ”; person.birth_date=“23-12-1973”; XML Olexandr Sudakov 23-12-1973

Пример объектов (структур)

C++
person_t person;
person.name=“Olexandr ”;
person.surname=“Sudakov ”;
person.birth_date=“23-12-1973”;

XML


Olexandr

Sudakov




23-12-1973


Слайд 26

Document Object Model (DOM) Представление сложных объектов в виде XML документов

Document Object Model (DOM)

Представление сложных объектов в виде XML документов
Представление XML

документов в виде структур данных на каком-либо языке программирования
Сериализация/десериализация
Передача аргументов и возврат значений
Простое создание XML документов
Слайд 27

Пример function loadXML() { var xmlDoc = new ActiveXObject("Microsoft.XMLDOM") xmlDoc.async="false" xmlDoc.load("note.xml")

Пример



Слайд 28

Сетевой протокол прикладного уровня HTTP – hypertext transfer protocol RFC 2616

Сетевой протокол прикладного уровня

HTTP – hypertext transfer protocol
RFC 2616 HTTP/1.1
RFC 1945

HTTP/1.0
Работает по верх протокола TCP, рассчитанного на соединение
HTTP рассчитан на передачу запроса (в виде сообщений) серверу и получение ответа (в виде сообщений)
Слайд 29

HTTP сеанс Клиент устанавливает соединение Клиент отправляет на сервер запрос Сервер

HTTP сеанс

Клиент устанавливает соединение
Клиент отправляет на сервер запрос
Сервер обрабатывает запрос и

отправляет ответ
Сервер обычно разрывает соединение после отправки всего ответа
Сервер
Клиент

соединение

запрос

ответ

разъединение

Слайд 30

Формат запроса Метод запроса, URI и протокол запроса Заголовок Опциональные параметры

Формат запроса

Метод запроса, URI и протокол запроса
Заголовок
Опциональные параметры запроса
Опциональные параметры команды
Пустая

строка

GET http://www.univ.kiev.ua/ HTTP/1.0
Методом GET
Запросили список корневого каталога сервера www.univ.kiev.ua
Протокол HTTP/1.0

Слайд 31

Формат ответа Протокол ответа, Код статуса Параметры заголовка ответа Пустая строка

Формат ответа

Протокол ответа, Код статуса
Параметры заголовка ответа
Пустая строка
Данные ответа
Разрыв соединения

HTTP/1.1

200 OK
Date: Tue, 28 Jun 2005 13:52:43 GMT
Server: Apache/1.3.29 (Unix) mod_fastcgi/2.4.2 PHP/4.3.9 mod_perl/1.26 mod_ssl/2.8.16 OpenSSL/0.9.7d
Connection: close
Content-Type: text/html



Index of /



Слайд 32

Методы запроса GET – получить заданный URL PUT – поместить нижеследующие

Методы запроса

GET – получить заданный URL
PUT – поместить нижеследующие данные в

заданный URL
POST – передать нижеследующие данные ресурсу, связанному с URL
DELETE – удалить заданный URL
Слайд 33

Работа за брандмауэром и кэширование HTTP хорошо рассчитан на работу за

Работа за брандмауэром и кэширование

HTTP хорошо рассчитан на работу за брандмауэром
Клиент

является активным и к клиенту присоединяться не нужно невозможно
HTTP удобен для кэширования информации
Клиент обращается к прокси-серверу с просьбой о доставке URI
Прокси-сервер либо доставляет URI, и кэширует, либо возвращает закэшированные данные, если они есть
Достаточно легко сжимать и шифровать информацию в потоке
Слайд 34

Основное использование WWW Серверы данных Возможность получить данные (документы, программы) с

Основное использование WWW

Серверы данных
Возможность получить данные (документы, программы) с другой машины

на свою машину и запустить или открыть их
Серверы приложений
Возможность запустить программу (сервлет) на другой машине и увидеть результат ее выполнения на своем браузере
WWW службы
Возможность разработать распределенную программу, которая состоит из множества компонент, находящихся на разных машинах (аналогично CORBA)
Слайд 35

Серверы приложений Клиент обращается к серверу (пользователь «кликает») Сервер запускает приложение,

Серверы приложений

Клиент обращается к серверу (пользователь «кликает»)
Сервер запускает приложение, связанное с

URI, указанным клиентом
Приложение выполняет сложную работу и выдает результат в виде HTML
Слайд 36

Основные подходы к созданию серверов приложений CGI – common gateway interface

Основные подходы к созданию серверов приложений

CGI – common gateway interface
Клиент передает

серверу URI и параметры программы
Сервер запускает программу с заданными параметрами (cgi обработчик)
Программа-обработчик возвращает результаты выполнения в виде HTML на стандартный вывод, который непосредственно передается клиенту
Контейнер-серверы
Сервер сам является интерпретатором с некоторого языка программирования (Java)
С URI связан некоторый исполняемый файл (сервлет)
Сервер запускает сервлет с параметрами, переданными клиентом
Сервлет возвращает результат
Слайд 37

Передача параметров на сервер (CGI) Метод GET Как часть URI GET

Передача параметров на сервер (CGI)

Метод GET
Как часть URI
GET http://cluster/ganglia/index?c=cluster.univ.kiev.ua&h=ss20-15.univ.kiev.ua HTTP/1.0
Пустая

строка
Метод POST
В заголовке запроса
POST http://cluster/ganglia/index HTTP/1.0
Content-Length: 48
&c=cluster.univ.kiev.ua
&h=ss20-15.univ.kiev.ua
Слайд 38

Ответ сервера HTTP/1.1 200 OK Date: Wed, 29 Jun 2005 16:17:40

Ответ сервера

HTTP/1.1 200 OK
Date: Wed, 29 Jun 2005 16:17:40 GMT
Server: Apache/2.0.51

(Fedora)
X-Powered-By: PHP/4.3.8
Set-Cookie: gs=grid.org.ua%40; expires=Thu, 30-Jun-2005 16:17:41 GMT
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Last-Modified: Wed, 29 Jun 2005 16:17:41 GMT
Cache-Control: no-cache, must-revalidate
Pragma: no-cache
Connection: close
Content-Type: text/html; charset=UTF-8



Ganglia:: Host Report
Слайд 39

Обработка параметров при запуске CGI программы Метод GET – программе передается

Обработка параметров при запуске CGI программы

Метод GET – программе передается

URL
Через системную переменную
Через динамически создаваемые переменные с уже разобранным синтаксисом
Метод POST – программа считывает данные со стандартного ввода
Данные обрабатываются самой программой
Данные обрабатываются специальной библиотечной функцией
Слайд 40

Недостатки CGI и их преодоление Необходимость запуска программы на каждый запрос

Недостатки CGI и их преодоление

Необходимость запуска программы на каждый запрос
При большом

количестве запросов много процессорного времени уходит только на запуск
Сервлеты – отдельный поток
Значительно облегчается переключение контекста
Слайд 41

Сервлеты Играют ту же роль, что и CGI скрипт, но Написаны

Сервлеты

Играют ту же роль, что и CGI скрипт, но
Написаны на Java

и хорошо портируются
Выполняются как функция в отдельном потоке WWW сервера
Для сервлетов необходим контейнер-сервер, который их может выполнять
Сервлеты очень хорошо подходят для создания WWW служб с использованием распределенной компонентной модели
Java Beans – технолгия создания распределенных программ
Слайд 42

WWW службы Серверы приложений – результат получает пользователь WWW службы –

WWW службы

Серверы приложений – результат получает пользователь
WWW службы – части большой

распределенной программы, которые работают на разных WWW серверах (RPC)

Пользователь

Сервер приложений

Распределенная программа

Сервер 1
Служба 1

Сервер 2
Служба 2

Сервер 3
Служба 3

Слайд 43

Определение WWW службы WWW служба – это программа, которая идентифицируется с

Определение WWW службы

WWW служба – это программа, которая идентифицируется с помощью

URI и все интерфейсы (структура входных и выходных данных) который могут быть описаны с помощью XML
WWW служба может быть интегрирована (использована) в любой программе, которая умеет работать с XML посредством обращения через Интернет
Слайд 44

Структура системы WWW служб Инициатор запроса - клиент Провайдер службы –

Структура системы WWW служб

Инициатор запроса - клиент
Провайдер службы – сервер,

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

Стандарты для WWW служб SOAP – simple object access protocol UDDI

Стандарты для WWW служб

SOAP – simple object access protocol
UDDI – universal

description and discovery protocol
WSDL – Web Service Description Language
Слайд 46

Протокол SOAP Инкапсуляция различных протоколов в XML и передача с помощью

Протокол SOAP

Инкапсуляция различных протоколов в XML и передача с помощью HTTP
Состоит

из оболочки, заголовка и тела сообщения, элементы которых могут быть структурированы
Так же как и HTTP состоит из запросов и ответов на них
Слайд 47

SOAP – RPC в пределах Интернет

SOAP – RPC в пределах Интернет

Слайд 48

Оболочка – кодировка Заголовок – информация, которая не касается программы обработчика Тело – параметры запроса

Оболочка – кодировка
Заголовок – информация, которая не касается программы обработчика
Тело –

параметры запроса
Слайд 49

Связь SOAP с транспортным протоколом Обычно HTTP Метод GET входные данные

Связь SOAP с транспортным протоколом

Обычно HTTP
Метод GET
входные данные – URI
Выходные

данные – SOAP
Метод POST
Входные данные SOAP
Выходные данные - SOAP
Слайд 50

XML RPC http://www.xmlrpc.com/ Простой протокол удаленных вызовов процедур через Интернет

XML RPC

http://www.xmlrpc.com/
Простой протокол удаленных вызовов процедур через Интернет

Слайд 51

WSDL – аналог IDL Описание WWW служб на языке XML Для

WSDL – аналог IDL

Описание WWW служб на языке XML
Для работы достаточно

знать только интерфейсы
XML схема, которая используется
Какие типы сообщений могут использоваться для передачи данных
Какие операции (методы) может выполнять служба
Какой транспортный протокол может использоваться для каких сообщений
Где работает служба (на каком сервере)
Откуда служба может быть доступна (контроль доступа)
Слайд 52

WSDL – XML документ

WSDL – XML документ

Слайд 53

Пример описания типов

Пример описания типов

Слайд 54

Пример описания операций Операция – функция Сообщение – типы передаваемых аргументов

Пример описания операций

Операция – функция
Сообщение – типы передаваемых аргументов и возвращаемых

значений для операций
Типы взаимодействий
Слайд 55

Порты Порт – набор всех операций службы, доступных по одному протоколу

Порты

Порт – набор всех операций службы, доступных по одному протоколу
Порту соответствуют

операции и типы сообщений
Операции определяются для каждого порта
Слайд 56

Привязки (binding) и службы Привязка связь портов с протоколом (soap) Служба

Привязки (binding) и службы

Привязка
связь портов с протоколом (soap)
Служба
Набор портов доступных по

разным протоколам
Разные порты службы имеют одни и те же операции, но доступны по разным протоколам
Слайд 57

UDDI Высокоуровневая инфраструктура для WWW служб Поиск WWW служб Регистрация WWW

UDDI

Высокоуровневая инфраструктура для WWW служб
Поиск WWW служб
Регистрация WWW служб
Обеспечение надежности
Координация (балансировка

нагрузки)

Слайд 58

Примеры использования WWW GRID системы – распределенные системы для обеспечения совместного

Примеры использования WWW

GRID системы – распределенные системы для обеспечения совместного использования

и координации вычислительных ресурсов, которые географически распределены
http://alien.cern.ch/
ГРИД система, в которую входят вычислительные кластеры различных стран для расчетов по ядерной физике
Обеспечивается балансировка нагрузки, совместное использование дисковых ресурсов