Po letmém seznámení s frameworkem MonoRail (MR) je tu první část slibovaného seriálu. V dnešním díle se ponoříme do technických principů frameworku.
Základem MR je klasický IHttpHandler známý z ASP.NET,
který se stará o zpracování požadavků přicházejících na server. Ve
výchozím stavu zpracovává požadavky s příponou .rails, ale
protože tato není na většině hostingů nastavena na ISAPI filtr ASP.NET,
dá se nastavit zpracování přípony jiné (často ashx), která
je webovému serveru známá a je spojená s ASP.NET filtrem.
Handler rozparsuje adresu a snaží se najít vhodný Controller
a jeho metodu, která požadavek zpracuje a předá data na patřičný
View. Vypadá to asi následovně. Na handler přijde požadavek ve
tvaru /home/index.rails, handler se pokusí vyhledat třídu
HomeController, která dědí ze třídy Controller, a
u ní metodu Index(). Takže controller pro tento požadavek by
vypadal asi následovně:
public class HomeControler : Controller {
public void Index() {
PropertyBag["hello"] = "Pozdrav z jednokolejky";
}
}
Takový controller by se měl nacházet v projektu ve složce
controllers. Vlastnost PropertyBag je slovník
(asociativní pole), který předává data z controlleru na view. Aby se nám
to celé mohlo někde zobrazit, potřebujeme ještě tedy view. Ve složce
/views/home/ si vytvoříme soubor index.brail (Brail
je jedním z ViewEnginů) do kterého zadáme:
<html>
<head>
<title>Pozdrav</title>
</head>
<body>
<h1>${hello}</h1>
</body>
</html>
Řetězec ${hello} bude na výstupu nahrazen textem
z PropertyBagu. Dolar složené závorky totiž prochází lokální proměnné
a snaží se z nich získat hodnotu. Pokud taková proměnná neexistuje
zavolá se metoda GetParametr, která projde kolekce PropertyBag,
Flash, Request apod. a snaží se v nich nalézt klíč, kterým je text mezi
závorkami. Hodnota je pak vypsána namísto dolarové funkce. :) Dolarová
funkce je takový shortcut pro tento zápis: <?brail output hello
?> což je obdoba <?php echo $hello; ?> v PHP nebo
<%= hello %> v ASP.
Celá skládačka do sebe zapadne, když do prohlížeče zadáme adresu
http://server/home/index.rails. Díky příponě rails se
požadavek předá Handleru MonoRail. Ten rozparsuje adresu a snaží se najít
třídu HomeController, kterou jsme vytvořili, takže success.
V této třídě hledá metodu Index, tu máme taky, další bod
k dobru. Tato metoda nám nastaví v PropertyBagu hello na hodnotu
„Pozdrav z jednokolejky“. Dále handler hledá vhodné view, které jsme
také vytvořili. Předá mu Context, zpracuje se šablona a nakonec bude do
prohlížeče odesláno HTML.
<html>
<head>
<title>Pozdrav</title>
</head>
<body>
<h1>Pozdrav z jednokolejky</h1>
</body>
</html>
Pro dnešek vše.











Komentáře
Jozef Izso
23.06 - 17. srpna 2007 | #
Aleš Roubíček
07.19 - 18. srpna 2007 | #
Jozef Izso
11.02 - 18. srpna 2007 | #
Aleš Roubíček
08.02 - 19. srpna 2007 | #
Místo pro tvůj názor