Catalyst – MVC framework на Perl (RIT 2008)

19
1 Catalyst – MVC framework на Perl Сергей Скворцов $Revision:: 11$

description

Catalyst – MVC framework на Perl

Transcript of Catalyst – MVC framework на Perl (RIT 2008)

Page 1: Catalyst – MVC framework на Perl  (RIT 2008)

1

Catalyst – MVC framework на Perl

Сергей Скворцов

$Revision:: 11$

Page 2: Catalyst – MVC framework на Perl  (RIT 2008)

2

Кто аудитория этого доклада?

• Разработчики на Perl– на “May Perl 2008” будет более детальный доклад

• Разработчики не на Perl– которые почему-то (?!) его не знают

• Менеджеры– спокойно, в докладе не будет ни строчки Perl-кода

Page 3: Catalyst – MVC framework на Perl  (RIT 2008)

3

Что такое Catalyst?• Web framework на Perl

• Архитектурный паттерн MVC

• Принцип TIMTOWTDI - «всегда есть более чем один способ сделать это» вместо «one way to do it».

• Постмодернизм – как в Perl, так и в Catalyst

Page 4: Catalyst – MVC framework на Perl  (RIT 2008)

4

Что делает web-framework?• Взаимодействие с веб-сервером

– Apache, CGI, Zeus, FastCGI, …– Сделать что-то согласно URL– http://www.shop.ru/catalog/item/13467– http://www.bigbrother.ru/add?first_name=Ivan&

last_name=Ivanov&curator=1245• Управление пользователями

– Аутентификация, авторизация, сессии

Page 5: Catalyst – MVC framework на Perl  (RIT 2008)

5

Что ещё делает web-framework?

• Прочесть и/или сохранить что-то в модели источника данных (БД, …)– DBIx::Class, LDAP,

• Обработка HTML-форм– FormBuilder, FormFu

• Собственно логика приложения• Отображение результатов

– (x)HTML, PDF, e-mail, JSON, …

Page 6: Catalyst – MVC framework на Perl  (RIT 2008)

6

Что такое MVC?

Application

ControllerModel

View

5

2

34

16

1. Request2. Dispatch3. Read / Store4. Forward5. Render6. Response

Page 7: Catalyst – MVC framework на Perl  (RIT 2008)

7

Какие могут быть Model’и?• Реляционные БД (через ORM или нет)

– DBIx::Class, Class::DBI, DBI

• Данные как результат запроса– SOAP, XMLRPC, Jabber, LDAP, RSS/Atom

• Данные через API веб-служб– YouTube, Flickr, Amazon-S3

• «Простые» модели– Filesystem, Email, SVN, …

Page 8: Catalyst – MVC framework на Perl  (RIT 2008)

8

Какие могут быть View?• Системы шаблонов (template systems):

– Template-Toolkit, Mason, HTML-Template, …

• Представление данных для «машин» (REST):– JSON, YAML, XML, …

• Графика (SVG, PNG, …) и специальные форматы (Email)

Page 9: Catalyst – MVC framework на Perl  (RIT 2008)

9

View: какие есть Template’ы?

• Template-Toolkit – очень популярный[% FOREACH book IN books %]

<li>[% book.title %] by

[% book.author.name %]</li>

[% END %]

• HTML-Mason – тоже популярный

• HTML-Template – очень простой

• XSLT - стандартный XML-язык шаблонов

• ClearSilver - языко-независимый, очень быстрый

Page 10: Catalyst – MVC framework на Perl  (RIT 2008)

10

View: какие есть Template’ы?

• MicroMason – компилятор шаблонов

• Petal – реализация спецификации TAL из Zope

• PSP – Perl Server Pages (похож на JSP)

• Template::Declare

• PHP – (нет, правда!)

Page 11: Catalyst – MVC framework на Perl  (RIT 2008)

11

URI-to-Action dispatch package MyApp::Controller::Foo;

sub login :Global # /loginsub one :Path("foo") # /foo/foosub two :Path("/bar") # /barsub three :Path # /foo/* sub four :Regex("/group(\d+)/view") # /group12345/viewsub five :LocalRegex("baz/(.*)/quux") # /foo/baz/(.*)/quux

Page 12: Catalyst – MVC framework на Perl  (RIT 2008)

12

Поддержка сессий• Session::State

– Cookie, URI

• Session::Store– Cache, DBI, FastMmap, Delegate, File, Memcached

Page 13: Catalyst – MVC framework на Perl  (RIT 2008)

13

Аутентификация и авторизация • Аутентификация

– Credentials – способ / алгоритм• Password, HTTP, OpenID, Atom, PAM, Facebook

– Store – хранилище данных о пользователе• Htpasswd, DBIx-Class, LDAP, …

– набор Realms – пары <Credentials, Store>• Авторизация

– Authorization::Roles – Authorization::ACL

Page 14: Catalyst – MVC framework на Perl  (RIT 2008)

14

…и еще разного полезного

• HTML-формы– CGI::FormBuilder, HTML::FormFu

• AJAX– нет жесткой привязки, любой из:– Dojo, jQuery, script.aculo.us, Prototype, MochiKit, YUI– Jemplate - шаблоны на стороне клиента

• Unicode, L10N, I18N, …– Unicode прекрасно поддерживает Perl– Catalyst::Plugin::I18N (через Locale::Maketext)

Page 15: Catalyst – MVC framework на Perl  (RIT 2008)

15

Runtime: среда запуска• development:

– Standalone (Engine::HTTP)– CGI (не рекомендуем в production)

• production:– mod_perl 1.x / 2.x– FastCGI – nginx, apache, lighttpd– Catalyst-Engine-*:

• HTTP-POE, HTTP-Prefork, Wx, Zeus, XMPP2, Embeddable

Page 16: Catalyst – MVC framework на Perl  (RIT 2008)

16

Работа с Catalyst• Готовые компоненты на CPAN

– порядка 200 модулей

• Детальная документация– POD, Wiki, книги

• Helpers & scaffolding– scripts/myapp_create.pl model …

• Тесты– Catalyst::Test– Test::WWW::Mechanize::Catalyst

Page 17: Catalyst – MVC framework на Perl  (RIT 2008)

17

TIMTOWTDI• There is more than one

way to do it– «всегда есть более чем

один способ сделать это»

• Итеративная миграция– с других платформ или

существующих проектов

• Гибкость будущего развития

• One way to do it– «есть только один верный

путь»– «opinionated software»

• Миграция путем переписывания всего кода сразу

• Зависимость от «линии партии»

Page 18: Catalyst – MVC framework на Perl  (RIT 2008)

18

Постмодернизм: Perl и Catalyst• Мы с благодарностью используем новые

придумки из других систем и языков…• … и с одобрением смотрим, как адаптируют

наши.• Интересные идеи легко и непринуждённо

инкорпорируются, ведь…• …это мир open-source, не надо быть скупыми!• Постмодернизм – это круто!

Page 19: Catalyst – MVC framework на Perl  (RIT 2008)

19

Спасибо!

mailto: [email protected]

Catalyst – ваш технологический и философский выбор :)