- Фантастика и фэнтези
- Ироническое фэнтези
- Стимпанк
- Детективная фантастика
- Киберпанк
- Попаданцы
- LitRPG
- Космоопера
- Технофэнтези
- Городская фантастика
- Русское фэнтези
- Юмористическая фантастика
- Космическая фантастика
- Боевое фэнтези
- Эпическая фантастика
- Зарубежная фантастика
- Книги магов
- Мистика
- Разная фантастика
- Разное фэнтези
- Любовное фэнтези
- Романтическая фантастика
- Городское фентези
- Историческая фантастика
- Историческое фэнтези
- Социально-философская фантастика
- Сказочная фантастика
- Иностранное фэнтези
- Романтическое фэнтези
- Ироническая фантастика
- Ужасы и Мистика
- Постапокалипсис
- Героическая фантастика
- Фэнтези
- Научная Фантастика
- Социально-психологическая
- Альтернативная история
- Боевая фантастика
- Разная литература
- Пословицы, поговорки
- Шахматы
- Визуальные искусства
- Фанфик
- Авто и ПДД
- Военное
- Отраслевые издания
- Гиды, путеводители
- Зарубежная образовательная литература
- Военная история
- Цитаты из афоризмов
- Современная литература
- Великолепные истории
- Начинающие авторы
- Современная зарубежная литература
- Боевые искусства
- Изобразительное искусство, фотография
- Кино
- Литература 19 века
- Недвижимость
- Музыка, музыканты
- Готические новеллы
- Истории из жизни
- Культура и искусство
- Спецслужбы
- Зарубежная прикладная литература
- Музыка, танцы
- Подростковая литература
- Прочее
- Военная техника, оружие
- Газеты и журналы
- Периодические издания
- Домоводство, Дом и семья
- Любовные романы
- Экономическая литература
- Научные и научно-популярные книги
- О животных
- Биохимия
- Культурология
- Юриспруденция
- Политика
- Психотерапия
- Языкознание
- Научпоп
- Медицина
- Психология, личное
- Радиотехника
- Филология
- Педагогика
- Образовательная литература
- Деловая литература
- Физика
- Науки: разное
- Химия
- Воспитание детей, педагогика
- Детская психология
- Зарубежная публицистика
- Биология
- Архитектура
- Зарубежная психология
- Науки о космосе
- Социология
- Математика
- География
- Беременность, ожидание детей
- Литературоведение
- Транспорт, военная техника
- Обществознание
- Зоология
- География
- Альтернативная медицина
- Иностранные языки
- Ветеринария
- Рефераты
- Астрология
- Биофизика
- Экология
- История Европы
- Учебники
- Шпаргалки
- Государство и право
- Ботаника
- Религиоведение
- История
- Техническая литература
- Прочая научная литература
- Психология
- Детективы и Триллеры
- Справочная литература
- Проза
- Новелла
- Юмор
- Проза
- Историческая проза
- Русская современная проза
- Советская классическая проза
- Повести
- Очерки
- Эссе
- Рассказы
- Зарубежная современная проза
- Сентиментальная проза
- Зарубежная классика
- Афоризмы
- Эпистолярная проза
- Феерия
- Семейный роман/Семейная сага
- Разное
- Антисоветская литература
- Магический реализм
- Русская классическая проза
- Современная проза
- О войне
- Контркультура
- Классическая проза
- Поэзия, Драматургия
- Детская литература
- Детская фантастика
- Детские остросюжетные
- Детские стихи
- Детские приключения
- Внеклассное чтение
- Учебная литература
- Зарубежные детские книги
- Бизнес
- Загадки
- Книги для подростков
- Школьные учебники
- Детский фольклор
- Книги для дошкольников
- Детские детективы
- Детская познавательная и развивающая литература
- Буквари
- Прочая детская литература
- Сказка
- Детская проза
- Детская образовательная литература
- Юмор
- Документальные книги
- Бизнес
- Внешнеэкономическая деятельность
- Тайм-менеджмент
- Кадровый менеджмент
- О бизнесе популярно
- Управление, подбор персонала
- Бизнес
- Менеджмент и кадры
- Продажи
- Экономика
- Ценные бумаги и инвестиции
- Малый бизнес
- Делопроизводство, офис
- Корпоративная культура, бизнес
- Банковское дело
- Финансы
- Зарубежная деловая литература
- Ораторское искусство / риторика
- Личные финансы
- Интернет-бизнес
- Поиск работы
- Государственное и муниципальное управление
- Бухучет и аудит
- Работа с клиентами
- Менеджмент
- Краткое содержание
- Личная эффективность
- Переговоры
- Приключения
- Старинная литература
- Религия и духовность
- Компьютеры и Интернет
- Блог
Читаем без скачивания Язык программирования Perl - Михаил Шохирев
Шрифт:
Интервал:
Закладка:
SVG-документ, сформированный в результате выполнения этой программы, - это текстовый файл в формате XML, который выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd"> <svg height="300" width="400"> <text style="font-size:15;fill:blue" x="32" y="32"> Ïîñåùàåìîñòü ñàéòà: ðàñïðåäåëåíèå ïî äîìåíàì </text> <rect height="30" width="550" x="20" y="50" style="opacity:1; fill:red; fill-opacity:0.4" /> <text style="font-size:15;fill:red" x="25" y="70"> .RU 55 % </text> <rect height="30" width="240" x="20" y="80" style="opacity:1; fill:blue; fill-opacity:0.4" /> <text style="font-size:15;fill:blue" x="25" y="100"> .COM 24 % </text> <rect height="30" width="120" x="20" y="110" style="opacity:1; fill:green; fill-opacity:0.4" /> <text style="font-size:15;fill:green" x="25" y="130"> .ORG 12 % </text> <rect height="30" width="90" x="20" y="140" style="opacity:1; fill:black; fill-opacity:0.4" /> <text style="font-size:15;fill:black" x="25" y="160"> ïðî÷èå 9 % </text> <text x="12" y="200"> Perl 5.008007 + SVG.pm 2.33 + CGI.pm 3.10 </text> <!-- Generated using the Perl SVG Module V2.33 by Ronan Oger Info: http://www.roasp.com/ --> </svg>
Зная синтаксис описания SVG-графики, можно сформировать подобный документ c помощью одного из модулей Perl, генерирующих документы XML. Библиотека SVG лишь предоставляет для этого наиболее удобные средства. Если нет под рукою нужных модулей, можно даже создавать любые документы XML на чистом Perl. Текстовое представление, понятное человеку и легкое для обработки, стало одним из преимуществ XML по сравнению с применявшимися ранее двоичными форматами. На рис. 18.3 показано, как сформированный в программе SVG-документ выглядит в окне браузера в виде векторного изображения.
Рис. 18.3. Динамически сформированная SVG-графика
Первоначальное использование 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.
Рис. 18.4. Пример SOAP-сообщения при обращении к web-сервису
Подобным способом через web-сервисы можно организовать доступ к методам любых других прикладных классов. В последнее время популярность получила технология AJAX (асинхронный доступ из JavaScript с помощью XML). Она может использоваться для доступа к web-службам из программ на JavaScript, превращая браузер в клиента прикладных классов, написанных на языке Perl. Пример обращения к разработанному нами web-сервису из JavaScript показан на рис. 18.5.
Рис. 18.5. Браузер как клиент web-сервисов
Программные средства, рассмотренные в этой лекции, охватывают только небольшую часть возможностей Perl для работы с ресурсами WWW. Web-программирование принесло языку Perl успех и большую популярность. Но Perl готов к переменам, которые неизбежно принесет нам будущее: ведь он создавался как расширяемый и адаптируемый язык. И он постоянно продолжает развиваться силами сообщества Perl-программистов, к числу которых теперь можете причислить себя и вы. Успехов вам в разработке программ на Perl и в дальнейшем изучении этого прекрасного языка программирования!
Дополнения
Литература1. Barry P, Programming the Network with Perl, John Wiley & Sons, 2002
2. Bentley J, Programming Pearls, 2nd edition, Addison-Wesley, 2000
3. Blank-Edelman D.N, Perl for System Administration: Managing multiplatform environments with Perl, O'Reilly, 2000
4. Burke S.M, Perl & LWP, 1st edition, O'Reilly, 2002
5. Callender J, Perl for Web Site Management, O'Reilly, 2001
6. Christiansen T., Torkington N, The Perl Cookbook: Tips and Tricks for Perl Programmers, 2nd edition, O'Reilly, 2003
7. Conway D, Object Oriented Perl, Manning Publications,1999
8. Descartes A., Bunce T, Programming the Perl DBI: Database programming with Perl, O'Reilly, 2000
9. Dominus M.J, Higher-Order Perl, 1st edition, Barnes & Noble, 2005
10. Friedl J.E. F, Mastering Regular Expressions: Powerful Techniques for Perl and Other Tools, O'Reilly, 1997
11. Guelich S., Gundavaram Sh., Birznieks G, CGI Programming with Perl, 2nd еdition, O'Reilly, 2000
12. Holzner S, Perl Black Book, 2nd еdition, Paraglyph Press, 2001
13. Lidie S, Perl/Tk Pocket Reference, O'Reilly, 1998
14. Maher T, Minimal Perl For UNIX/Linux People, Manning Publications, 2006
15. Medinets D, Perl 5 by Example, Que, 1996
16. Menaker Y., Saltzman M., Oberg R.J, Programming Perl in the .NET Environment, 1st edition, Addison Wesley, 2002
17. Orwant J., Hietaniemi J., Macdonald J, Mastering Algorithms with Perl, O'Reilly, 1999
18. Randal A., Sugalski D., Totsch L, Perl 6 and Parrot Essentials, 2nd edition, O'Reilly, 2004
19. Ray E.T., McIntosh J, Perl and XML, 1st Edition, O'Reilly, 2002
20. Ray R.J., Kulchenko P, Programming Web Services with Perl, 1st edition, O'Reilly, 2002
21. Rolsky D., Williams K, Embedding Perl in HTML with Mason, 1st edition, O'Reilly, 2002
22. Schwartz R.L., Phoenix T, Learning Perl: Making Easy Things Easy and Hard Things Possible, 4th edition, O'Reilly, 2005
23. Schwartz R.L., Olson E., Christiansen T, Learning Perl on Win32 Systems, O'Reilly, 1997
24. Siever E., Spainhour S., Patwardhan N, Perl in a Nutshell, O'Reilly, 1998
25. Srinivasan S, Advanced Perl Programming, O'Reilly, 1997
26. Stein L.D, Network Programming with Perl, 1st Edition, Addison Wesley, 2000
27. Stein L., MacEachern D, Writing Apache Modules with Perl and C: The Apache API and mod_perl, O'Reilly, 1999
28. Stubblebine T, Regular Expression Pocket Reference, O'Reilly, 2003
29. Vromans J, Perl 5 Pocket Reference: Programming Tools, 3rd edition, O'Reilly, 2000
30. Wallace Sh, Perl Graphics Programming: Creating SVG, SWF (Flash), JPEG and PNG files with Perl, O'Reilly, 2002
31. Wall L., Christiansen T., Orwant J, Programming Perl, 3rd edition, O'Reilly, 2000
32. Walsh N, Learning Perl/Tk: Graphical User Interfaces with Perl, O'Reilly, 1999
33. Walters S, Perl 6 Now: Core Ideas Illustrated With Perl 5, APress, 2004
34. Wong C, Web Client Programming with Perl: Automating Tasks on the Web, O'Reilly, 1977
35. Бентли, Д, Жемчужины творчества программистов. 1-е изд, М: Радио и связь, 1990
36. Бланк-Эдельман Д.Н, Perl для системного администрирования, СПб: Символ-Плюс, 2001
37. Браун М, Perl. Архив программ, М: БИНОМ, 2001
38. Гулич С., Гундаварам Ш., Бирзнекс Г, CGI-программирование на Perl. 2-е изд, Спб: Символ-Плюс, 2001