LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> Perl (93) - Catalyst - MVC framework pro Perl

Perl V několika následujících dílech se budeme věnovat Catalystu, což je MVC framework, který si za krátkou dobu vydobyl velkou popularitu. Catalyst nabízí obrovskou paletu různých nástrojů. Naším cílem nebude kompletně ho popsat, ale spíše seznámit se s jeho filozofií.

30.11.2009 01:00 | Jiří Václavík | Články autora | přečteno 10824×

Obvyklý způsob navržení webové aplikace funguje takovým postupem, že každá stránka je generována nějakým skriptem. Tento skript nejprve získá data, dále s nimi něco udělá a na závěr vygeneruje HTML výstup. Takový postup bezesporu funguje. My si však nyní představíme jiný přístup.

MVC architektura

Model-View-Controller (MVC), pocházející původně ze Smalltalku, je způsob navržení aplikace, který ji rozděluje z hlediska programátora na tři části:

  • rozhraní pro uživatele
  • data
  • řadič

Systém funguje tak, že uživatel vyvolá nějakou událost a ta je předána řadiči, který na základě ní udělá změny v datech. Podle toho, jak se změnila data, nyní může zareagovat i rozhraní.

Přitom platí, že modifikace jedné části by neměla mít vliv na ostatní. Tedy například to, kde jsou uložená data, by nemělo mít vliv na vzhled aplikace.

K vytvoření aplikace je obecně nutné vytvořit tři komponenty, které reflektují právě popsanou architekturu.

  • View - tato komponenta rozhoduje o tom, jak se zobrazí aplikace uživateli
  • Model - reprezentace dat; může jím být v podstatě cokoliv
  • Controller - spolupracuje s modelem i uživatelským rozhraním; na základě požadavků uživatele (komponenta View) mění nebo získává data (komponenta Model)

Existuje celá řada frameworků implementujících architekturu MVC. Pro představu lze navštívit například wikipedii.

Catalyst

Catalyst je flexibilní web framework využívající architektury MVC inspirovaný zejména konkurenčním Ruby on Rails a Maypolem, který je určený pro rychlé vytváření velkých dobře udržovatelných aplikací. První verze Catalystu vznikla v roce 2005 a od té doby proběhl bouřlivým vývojem.

Catalyst lze používat na všech webových serverech s CGI nebo FastCGI. Pro testovací účely je navíc v distribuci Catalistu zahrnut i vlastní velmi jednoduchý HTTP server, který budeme používat při vývoji.

Další příjemnou vlastností je to, že bude potřeba psát minimum kódu. To ostatně uvidíme v následujících dílech.

Instalace

Je možné, že je ve vaší distribuci Catalyst již nainstalován, avšak nebývá to pravidlem. Některé distribuce ho dodávají jako balíček libcatalyst-perl.

Pokud Catalyst nainstalovaný nemáte, lze tak učinit standardním postupem pomocí perlového modulu CPAN.

$ cpan -i Catalyst::Runtime Catalyst::Devel

Obvykle se instaluje velké množství závislostí, takže celý proces může trvat i desítky minut. Pokud nastal nějaký problém, můžete se zkusit inspirovat v dokumentaci.

Vytvoření kostry aplikace

Catalyst je dodáván se shellovým skriptem catalyst.pl. Tento příkaz vytváří kostru každé webové aplikace, na kterou budeme chtít Catalyst použít. Zkusme spustit následující příkaz.

$ catalyst.pl MojeAplikace

Můžeme pozorovat, že se vytvořil adresář MojeAplikace a uvnitř něj řada souborů.

created "MojeAplikace"
created "MojeAplikace/script"
created "MojeAplikace/lib"
created "MojeAplikace/root"
created "MojeAplikace/root/static"
created "MojeAplikace/root/static/images"
created "MojeAplikace/t"
created "MojeAplikace/lib/MojeAplikace"
created "MojeAplikace/lib/MojeAplikace/Model"
created "MojeAplikace/lib/MojeAplikace/View"
created "MojeAplikace/lib/MojeAplikace/Controller"
created "MojeAplikace/mojeaplikace.conf"
created "MojeAplikace/lib/MojeAplikace.pm"
created "MojeAplikace/lib/MojeAplikace/Controller/Root.pm"
created "MojeAplikace/README"
created "MojeAplikace/Changes"
created "MojeAplikace/t/01app.t"
created "MojeAplikace/t/02pod.t"
created "MojeAplikace/t/03podcoverage.t"
created "MojeAplikace/root/static/images/catalyst_logo.png"
created "MojeAplikace/root/static/images/btn_120x50_built.png"
created "MojeAplikace/root/static/images/btn_120x50_built_shadow.png"
created "MojeAplikace/root/static/images/btn_120x50_powered.png"
created "MojeAplikace/root/static/images/btn_120x50_powered_shadow.png"
created "MojeAplikace/root/static/images/btn_88x31_built.png"
created "MojeAplikace/root/static/images/btn_88x31_built_shadow.png"
created "MojeAplikace/root/static/images/btn_88x31_powered.png"
created "MojeAplikace/root/static/images/btn_88x31_powered_shadow.png"
created "MojeAplikace/root/favicon.ico"
created "MojeAplikace/Makefile.PL"
created "MojeAplikace/script/mojeaplikace_cgi.pl"
created "MojeAplikace/script/mojeaplikace_fastcgi.pl"
created "MojeAplikace/script/mojeaplikace_server.pl"
created "MojeAplikace/script/mojeaplikace_test.pl"
created "MojeAplikace/script/mojeaplikace_create.pl"
Change to application directory and Run "perl Makefile.PL" to make sure your install is complete

Uveďme ještě, že obsahovalo-li by jméno aplikace čtyřtečky, nahradily by se lomítkem a vznikla by adresářová struktura.

Význam vytvořených souborů

Přímo v adresáři MojeAplikace je soubor mojeaplikace.conf, což je klasický konfigurační soubor pro aplikaci používající Apache syntaxi. Někdy zde místo něj je soubor se stejnou funkcí s koncovkou .pl nebo .yml, kde mají konfigurační příkazy jiný tvar.

Soubor Makefile.PL slouží k vygenerování Makefile pro build naší aplikace.

Dále zde jsou soubory jako README a Changes, které mají standardní význam.

Také je zde několik důležitých adresářů. Sem patří i lib, kde jsou uloženy moduly pro Controller, View a Model. Již zde existuje soubor MojeAplikace.pm, což je základní modul naší aplikace; dále adresář MojeAplikace, který obsahuje adresáře Controller, Model a View. Zde bude mít aplikace uložené komponenty všech tří typů, které později budeme vytvářet. Jak vidíme, je zde již Controller Root.pm, který se stará o úvodní stránku aplikace.

V adresáři root je skladiště šablon. Podadresář static se používá většinou k uchovávání obrázků, souborů ke stažení nebo CSS.

Adresář t slouží k ukládání testů. Na začátku jsou zde vytvořené 3 testy: 01app.t pro test, zda se aplikace zkompiluje a 02pod.t a 03podcoverage.t pro účely dokumentace.

Nyní nás bude velmi zajímat adresář script obsahující několik perlových skriptů s různými účely.

Spuštění testovacího serveru a další skripty

Soubor script/mojeaplikace_server.pl je jednoduchý HTTP server, který můžeme používat při vývoji aplikace. Tento server spustíme standardním způsobem. Na obrazovce by se měl objevit výstup podobný následujícímu.

$ perl mojeaplikace_server.pl
[debug] Debug messages enabled
[debug] Statistics enabled
[debug] Loaded plugins:
.----------------------------------------------------------------------------.
| Catalyst::Plugin::ConfigLoader  0.27                                       |
| Catalyst::Plugin::Static::Simple  0.22                                     |
'----------------------------------------------------------------------------'

[debug] Loaded dispatcher "Catalyst::Dispatcher"
[debug] Loaded engine "Catalyst::Engine::HTTP"
[debug] Found home "/home/test/MojeAplikace"
[debug] Loaded Config "/home/test/MojeAplikace/mojeaplikace.conf"
[debug] Loaded components:
.-----------------------------------------------------------------+----------.
| Class                                                           | Type     |
+-----------------------------------------------------------------+----------+
| MojeAplikace::Controller::Root                                  | instance |
'-----------------------------------------------------------------+----------'

[debug] Loaded Private actions:
.----------------------+--------------------------------------+--------------.
| Private              | Class                                | Method       |
+----------------------+--------------------------------------+--------------+
| /default             | MojeAplikace::Controller::Root       | default      |
| /end                 | MojeAplikace::Controller::Root       | end          |
| /index               | MojeAplikace::Controller::Root       | index        |
'----------------------+--------------------------------------+--------------'

[debug] Loaded Path actions:
.-------------------------------------+--------------------------------------.
| Path                                | Private                              |
+-------------------------------------+--------------------------------------+
| /                                   | /index                               |
| /                                   | /default                             |
'-------------------------------------+--------------------------------------'

[info] MojeAplikace powered by Catalyst 5.80013
You can connect to your server at http://hostname:3000

Tím jsme spustili server. Pokud uděláme změny v adresáři lib, bude třeba webový server restartovat. Pokud však spustíme server s parametry -d -r, bude se o změny starat již spuštěný server sám.

$ perl mojeaplikace_server.pl -d -r

Dále jsou zde skripty mojeaplikace_fastcgi.pl a mojeaplikace_cgi.pl pro spuštění na jiném serveru.

Skript mojeaplikace_test.pl tiskne zdrojový kód požadované stránky bez spuštění serveru a dá se tedy použít na testování. Například pro výpis stránky /nejaka/cesta bychom použili následující příkaz.

$ perl mojeaplikace_test.pl /nejaka/cesta

Na konci výstupu vidíme zdrojový kód Page not found, což je správně, protože jsme zatím nic nevytvořili. Zkusme však otestovat kořenový adresář. Zde by se měl zobrazit zdrojový kód přednastavené webové stránky.

$ perl mojeaplikace_test.pl /

Úvodní stránka

Podívejme se ještě na výstup, který jsme dostali po spuštění serveru. Na konci je uvedena adresa http://hostname:3000, na níž se nám spustil webový server. Můžeme ji tedy zadat do webového prohlížeče a měli bychom spatřit úvodní stránku.

Úvodní obrazovka po spuštění webového serveru vygenerovaná Catalystem

Verze pro tisk

pridej.cz

 

DISKUZE

Nejsou žádné diskuzní příspěvky u dané položky.



Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

16.7.2018 1:05 /František Kučera

Červencový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 7. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát bude přednáška na téma: automatizační nástroj Ansible, kterou si připravil Martin Vicián.


Přidat komentář

18.6.2018 0:43 /František Kučera
Červnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 21. 6. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát na téma: F-Droid, aneb svobodný software do vašeho mobilu. Kromě toho budou k vidění i vývojové desky HiFive1 se svobodným/otevřeným čipem RISC-V.
Přidat komentář

23.5.2018 20:55 /Ondřej Čečák
Od pátku 25.5. proběhne na Fakultě informačních technologií ČVUT v Praze openSUSE Conference. Můžete se těšit na spostu zajímavých přednášek, workshopů a také na Release Party nového openSUSE leap 15.0. V na stejném místě proběhne v sobotu 26.5. i seminář o bezpečnosti CryptoFest.
Přidat komentář

20.5.2018 17:45 /Redakce Linuxsoft.cz
Ve čtvrtek 31. května 2018 připravuje webový magazín BusinessIT ve spolupráci s Best Online Média s.r.o. pátý ročník odborné konference Firemní informační systémy 2018. Akce proběhne v kongresovém centru Vavruška (palác Charitas), Karlovo náměstí 5, Praha 2 (u metra Karlovo náměstí) od 9:00 hod. dopoledne do cca 15 hod. odpoledne. Konference je zaměřena na efektivní využití firemních informačních systémů a na to, jak plně využít jejich potenciál. Podrobnější informace na webových stránkách konfrence.
Přidat komentář

14.5.2018 7:28 /František Kučera
Květnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 17. 5. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát na téma: Audio – zvuk v GNU/Linuxu.
Přidat komentář

7.5.2018 16:20 /František Kučera
Na stránkách spolku OpenAlt vyšla fotoreportáž Pražské srazy 2017 dokumentující srazy za uplynulý rok. Květnový pražský sraz na téma audio se bude konat 17. 5. 2018 (místo a čas ještě upřesníme).
Přidat komentář

17.4.2018 0:46 /František Kučera
Dubnový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 4. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tématem tohoto srazu bude OpenStreetMap (OSM) aneb svobodné mapy.
Přidat komentář

16.3.2018 22:01 /František Kučera
Kulatý OpenAlt sraz v Praze oslavíme klasicky: u limonády a piva! Přijďte si posedět, dát si dobré jídlo a vybrat z mnoha piv do restaurace Kulový blesk, který najdete v centru Prahy nedaleko metra I. P. Pavlova na adrese Sokolská 13, Praha 2. Sraz se koná ve čtvrtek 22. března a začínáme v 18:00. Heslo: OpenAlt. Vezměte s sebou svoje hračky! Uvítáme, když si s sebou na sraz vezmete svoje oblíbené hračky. Jestli máte nějaký drobný projekt postavený na Arduinu, nějakou zajímavou elektronickou součástku, či třeba i pěkný úlovek z crowdfundingové akce, neváhejte. Oslníte ostatní a o zábavu bude postaráno.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

20.2.2018 18:48 / Ivan Majer
portal

20.2.2018 15:57 / Jan Havel
Jak využíváte služby cloudu v podnikání?

16.1.2018 1:08 / Ivan Pittner
verejna ip od o2 ubuntu

15.1.2018 17:26 / Mira Harvalik
Re: Jak udělat HTML/Javascript swiping gallery do mobilu?

30.12.2017 20:16 / Michal Knoll
odmocnina

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2018) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze