Опубликован: 17.08.2006 | Доступ: свободный | Студентов: 5313 / 680 | Оценка: 4.49 / 3.94 | Длительность: 20:58:00
ISBN: 978-5-9556-0078-9
Лекция 18:

Web-программирование

< Лекция 17 || Лекция 18: 123456

Web-сервисы

Первоначальное использование WWW только для доставки информации человеку постепенно сменяется использованием Всемирной Паутины для программного взаимодействия между информационными системами. Новым применением WWW стало использование ее в качестве пространства для распределенного компонентного программирования. В соответствии с этим подходом распределенные приложения строятся на основе сервис-ориентированной архитектуры. Для обращения к сетевым программным компонентам, называемым web-сервисами, используется протокол SOAP (Simple Object Access Protocol). Поскольку SOAP основан на стандарте XML, то он не зависит от используемого языка программирования и операционной системы. Данные передаются в виде текстовых сообщений в формате XML, поэтому могут передаваться с помощью неспециализированных протоколов, например, HTTP или SMTP. Чтобы правильно обратиться к web-службе, нужно знать ее интерфейс. Для описания методов, предоставляемых web-сервисами, и состава передаваемых данных создан язык описания web-сервисов WSDL (Web Services Description Language). А для хранения описаний web-сервисов в специальных реестрах и их поиска разработана система описания, обнаружения и интеграции UDDI (Universal Description, Discovery and Integration).

Среди средств, имеющихся в Perl для работы с web-сервисами, библиотека SOAP::Lite выделяется удобством использования и полнотой реализации необходимых протоколов. На простом примере покажем, насколько легко создать web-службу с ее помощью. Для начала напишем класс, который будет выполняться на сервере и предоставлять свои методы в виде web-сервисов. Это самый обычный класс:

package Calculator; # класс, реализующий простой калькулятор
sub add {                   # сложить
   my ($self, $a, $b) = @_;
   return $a + $b;
}
sub subtract {              # вычесть
   my ($self, $a, $b) = @_;
   return $a - $b;
}
sub multiply {              # умножить
   my ($self, $a, $b) = @_;
   return $a * $b;
}
sub divide {                # разделить
   my ($self, $a, $b) = @_;
   return $b == 0 ? 0 : $a / $b;
}
1;

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

use SOAP::Transport::HTTP; # использовать протокол HTTP
SOAP::Transport::HTTP::CGI # для обращения через CGI
                    # к web-сервисам из этого каталога:
   -> dispatch_to('/_Learn/Perl/web-services')
   -> handle;

Затем напишем клиента для обращения к web-службам с использованием возможности перенаправления запросов, реализованной в библиотеке SOAP::Lite:

# включаем автоматическое
	use SOAP::Lite +autodispatch => # перенаправление запросов
	   uri => 'urn:Calculator',     # к классу  Calculator
	                       # при обращении по указанному адресу
	   proxy => 'http://localhost/cgi-bin/web_soap.cgi';
	my $a = 5;                    # первый и
	my $b = 3;                    # второй проверочные операнды
	# вызываем методы класса на сервере:
	print add($a, $b)     , "\n"; # результат: 8
	print subtract($a, $b), "\n"; # результат: 2
	print multiply($a, $b), "\n"; # результат: 15
	print divide($a, $b)  , "\n"; # результат: 1.66666666666667

Для проверки работы этой web-службы была написана другая клиентская программа на языке VBScript. Чтобы показать, как выглядят передаваемые данные, результат работы метода multiply (5, 3) был выведен в виде неформатированного SOAP-сообщения, которое приведено на рис. 18.4.

Пример SOAP-сообщения при обращении к web-сервису

Рис. 18.4. Пример SOAP-сообщения при обращении к web-сервису

Подобным способом через web-сервисы можно организовать доступ к методам любых других прикладных классов. В последнее время популярность получила технология AJAX (асинхронный доступ из JavaScript с помощью XML). Она может использоваться для доступа к web-службам из программ на JavaScript, превращая браузер в клиента прикладных классов, написанных на языке Perl. Пример обращения к разработанному нами web-сервису из JavaScript показан на рис. 18.5.

Браузер как клиент web-сервисов

Рис. 18.5. Браузер как клиент web-сервисов

Программные средства, рассмотренные в этой лекции, охватывают только небольшую часть возможностей Perl для работы с ресурсами WWW. Web-программирование принесло языку Perl успех и большую популярность. Но Perl готов к переменам, которые неизбежно принесет нам будущее: ведь он создавался как расширяемый и адаптируемый язык. И он постоянно продолжает развиваться силами сообщества Perl-программистов, к числу которых теперь можете причислить себя и вы. Успехов вам в разработке программ на Perl и в дальнейшем изучении этого прекрасного языка программирования!

< Лекция 17 || Лекция 18: 123456
Галина Башкирова
Галина Башкирова

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

Системный администратор информационно-коммуникационных» систем.
Мне нужно самой найти тему? или делать по высланным темам

 

Константин Моренко
Константин Моренко
Марина Дайнеко
Марина Дайнеко
Россия, Moscow, Nope, 2008
Сергей Пантелеев
Сергей Пантелеев
Россия, Москва