Пример perl6-клиента веб-сервиса

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

Студия Лебедева первой в рунете показала пример веб-сервис-клиента (http://www.artlebedev.ru/tools/typograf/webservice/), написанного на Perl 6.

Клиент по сути предствляет собой экземпляр класса ArtLebedevStudio::RemoteTypograf. Для того, чтобы воспользоваться услугами, которые предоставляет сервис, требуется лишь создать новый объект и вызвать единственный метод:

use ArtLebedevStudio::RemoteTypograf;

my $remoteTypograf = new ArtLebedevStudio::RemoteTypograf;
say $remoteTypograf.processText(«some text follows here:\n\»text\»»);

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

Определение класса содержится в отдельном файле. Как и в Perl 5, именование каталогов и файлов однозначно совпадает с именем класса, а сам файл имеет расширение .pm. Таким образом, упомянутый класс расположен в файле ArtLebedevStudio/RemoteTypograf.pm.

В Perl 6 поддержка классов намного удобнее, чем это было раньше. Вместо blessed-хешей теперь есть ключевое слово class. А для создания данных и методов классов следует пользоваться ключевыми словами has и method. (О том, как управлять правами доступа, я расскажу позднее.)

class ArtLebedevStudio::RemoteTypograf
{
has $.entityType;
. . .
method processText ($text is copy)
{
. . .
}
}