Catalyst – MVC framework на Perl (RIT 2008)
-
Upload
sergey-skvortsov -
Category
Technology
-
view
1.229 -
download
0
description
Transcript of Catalyst – MVC framework на Perl (RIT 2008)
1
Catalyst – MVC framework на Perl
Сергей Скворцов
$Revision:: 11$
2
Кто аудитория этого доклада?
• Разработчики на Perl– на “May Perl 2008” будет более детальный доклад
• Разработчики не на Perl– которые почему-то (?!) его не знают
• Менеджеры– спокойно, в докладе не будет ни строчки Perl-кода
3
Что такое Catalyst?• Web framework на Perl
• Архитектурный паттерн MVC
• Принцип TIMTOWTDI - «всегда есть более чем один способ сделать это» вместо «one way to do it».
• Постмодернизм – как в Perl, так и в Catalyst
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• Управление пользователями
– Аутентификация, авторизация, сессии
5
Что ещё делает web-framework?
• Прочесть и/или сохранить что-то в модели источника данных (БД, …)– DBIx::Class, LDAP,
• Обработка HTML-форм– FormBuilder, FormFu
• Собственно логика приложения• Отображение результатов
– (x)HTML, PDF, e-mail, JSON, …
6
Что такое MVC?
Application
ControllerModel
View
5
2
34
16
1. Request2. Dispatch3. Read / Store4. Forward5. Render6. Response
7
Какие могут быть Model’и?• Реляционные БД (через ORM или нет)
– DBIx::Class, Class::DBI, DBI
• Данные как результат запроса– SOAP, XMLRPC, Jabber, LDAP, RSS/Atom
• Данные через API веб-служб– YouTube, Flickr, Amazon-S3
• «Простые» модели– Filesystem, Email, SVN, …
8
Какие могут быть View?• Системы шаблонов (template systems):
– Template-Toolkit, Mason, HTML-Template, …
• Представление данных для «машин» (REST):– JSON, YAML, XML, …
• Графика (SVG, PNG, …) и специальные форматы (Email)
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 - языко-независимый, очень быстрый
10
View: какие есть Template’ы?
• MicroMason – компилятор шаблонов
• Petal – реализация спецификации TAL из Zope
• PSP – Perl Server Pages (похож на JSP)
• Template::Declare
• PHP – (нет, правда!)
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
12
Поддержка сессий• Session::State
– Cookie, URI
• Session::Store– Cache, DBI, FastMmap, Delegate, File, Memcached
13
Аутентификация и авторизация • Аутентификация
– Credentials – способ / алгоритм• Password, HTTP, OpenID, Atom, PAM, Facebook
– Store – хранилище данных о пользователе• Htpasswd, DBIx-Class, LDAP, …
– набор Realms – пары <Credentials, Store>• Авторизация
– Authorization::Roles – Authorization::ACL
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)
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
16
Работа с Catalyst• Готовые компоненты на CPAN
– порядка 200 модулей
• Детальная документация– POD, Wiki, книги
• Helpers & scaffolding– scripts/myapp_create.pl model …
• Тесты– Catalyst::Test– Test::WWW::Mechanize::Catalyst
17
TIMTOWTDI• There is more than one
way to do it– «всегда есть более чем
один способ сделать это»
• Итеративная миграция– с других платформ или
существующих проектов
• Гибкость будущего развития
• One way to do it– «есть только один верный
путь»– «opinionated software»
• Миграция путем переписывания всего кода сразу
• Зависимость от «линии партии»
18
Постмодернизм: Perl и Catalyst• Мы с благодарностью используем новые
придумки из других систем и языков…• … и с одобрением смотрим, как адаптируют
наши.• Интересные идеи легко и непринуждённо
инкорпорируются, ведь…• …это мир open-source, не надо быть скупыми!• Постмодернизм – это круто!