• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Psgi app
 

Psgi app

on

  • 4,019 views

Построение PSGI-совместимых Web-framework'ов

Построение PSGI-совместимых Web-framework'ов

Statistics

Views

Total Views
4,019
Views on SlideShare
1,366
Embed Views
2,653

Actions

Likes
1
Downloads
2
Comments
0

16 Embeds 2,653

http://allframeworks.ru 1595
http://planetperl.ru 819
http://sayperl.org 131
http://www.allframeworks.ru 50
http://www.sayperl.org 17
http://xss.yandex.net 12
http://www.planetperl.ru 8
http://feeds.feedburner.com 6
http://a0.twimg.com 5
http://translate.googleusercontent.com 3
http://up.allframeworks.ru 2
http://webcache.googleusercontent.com 1
http://admin.totalmarketing.com 1
http://neznakomim.ru 1
http://www.informatica.md 1
http://yupe.local 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Psgi app Psgi app Presentation Transcript

    • Black Perl 2011 Построение PSGI-совместимых Web-framework’ов Сергей Засенко (und3f) 1 октября 2011 г.
    • Преимущества • Свобода выбора архитектуры приложения. • Возможность простроения асинхронного приложения на базе любой событийной машины. • Выбор зависимостей системы.
    • Составляющие веб-фреймворка
    • Составляющие веб-фреймворка Routes разбор адреса запроса. Controller контроль входящих данных и реализация реакции с помощью модели и представления. View отображение информации. Model данные и методы работы с ними.
    • Что необходимо выполнить? Соединить готовые компоненты
    • Модули разбора маршрутов • HTTP::Router • Path::Dispatcher • Path::Router • Route::Simple • Routes::Tiny • другие.
    • Шаблонизаторы • HTML::CTPP2 • HTML::Template • Template::Toolkit • Text::Caml • Text::Xslate • другие.
    • Этапы выполнения 1 Разбор адреса запроса и определение обрабатывающего контроллера. 2 Передача управления в соответствующий контроллер. 3 Обработка шаблона с параметрами контроллера.
    • Реализация Hello, Plack!
    • Инструменты реализации • Plack • Text::Caml • Routes::Tiny
    • Инициализация rout’ов my $routes = Routes::Tiny−>new; $routes−>add_route(’/’, defaults => {action => &root}); $routes−>add_route(’/welcome/:name’ , defaults => {action => &welcome});
    • Разбор URL sub dispatch { my $env = shift; my $path = $env−>{PATH_INFO}; if (my $route = $routes−>match($path)) { my $action = $route−>{params}{action}; $action−>($env, $route−>{params}); } }
    • View sub render { my ($template, $data) = @_; my $view = Text::Caml−>new; my $html = $view−>render_file($template, $data); [200, [ ’Content−Type’, ’text/html’ ], [$html ]]; }
    • Контроллеры sub root { my ($env, $params) = @_; render( ’ root .mt’); } sub welcome { my ($env, $params) = @_; render( ’welcome.mt’, $params); }
    • Шаблоны root.mt <html> <body>Hello, Plack!</body> </html> welcome.mt <html> <body>Hello, {{name}}.</body> </html>
    • Тесты use FindBin ’$Bin’ ; my $app = require "$Bin/../app.psgi"; test_psgi $app, sub { my $cb = shift; my $res = $cb−>(GET ’/’); like $res−>content, qr/Hello, Plack!/; $res = $cb−>(GET ’/welcome/Sergey’); like $res−>content, qr/Hello, Sergey ./; }
    • Итог • Есть набор готовых компонент для построения собственного web-framework’а. • Соединять компоненты легко. • Возможно разработать приложение любой конфигурации. • Разрабатывайте!
    • Исходный код https://github.com/und3f/black-perl-2011
    • Другие примеры JLogger::Web https://github.com/und3f/jlogger-web Lamework https://github.com/vti/lamework Web::Simple https://metacpan.org/module/Web::Simple
    • Вопросы?