Веб-сервисы (или 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)
{
. . .
}
}