Keretrendszerek

Download Report

Transcript Keretrendszerek

Szerver oldali
keretrendszerek
Web-adatbázis programozás
Horváth Győző, Menyhárt László, Tarcsi Ádám
2009. szeptember. 17.
Keretrendszerek
 Alapelemeket biztosító programozási
rendszerek, melyek összetett feladatokat
képesek támogatni.
 Egy vázat adnak alkalmazásaink számára.
 Bizonyos filozófiának megfelelő szabályok
gyűjteménye
 Gyakori, ismétlődő műveleteket támogatnak,
sablonokat biztosítanak:
▪ munkamenetek,
▪ adatbázis kapcsolatok,
▪ hibakezelés, stb.
2
Miért van szükség keretrendszerekre?
 Ömlesztett kód: HTML(, CSS), PHP, egyben van
 Ömlesztett logika: vezérlés, adatelérés,
megjelenítés, feldolgozás, alkalmazáslogika
egyben van
 Csoportmunka nem lehetséges
 Konfiguráció kódba épített
 Karakterkódolás eltérő lehet a HTML-ben, PHPban és adatbázisban, nincs egységesen kezelve
 Több belépési pontja van az alkalmazásnak, ami
biztonsági és jogosultsági kérdéseket vet fel
3
Keretrendszerek
 Előnyök
▪ Fejlesztési időt takarítható meg
▪ Rákényszerítik a programozót valamilyen kódolási
standard-re  átláthatóbb kódok
▪ Valamilyen szabályrendszert alkalmazását várják el.
▪ Támogatják az újra felhasználhatóságot
▪ Egységesebb alkalmazásfejlesztés
▪ Szétválasztott kód és logika
▪ Meghatározott könyvtárszerkezet
▪ Csoportmunka támogatott: külön fileok az egyes
szakembereknek (designer, adatbázisos, felületfejlesztő,
stb.)
▪ Rétegek szétválasztása
 Hátrányok
▪ Tanulásokhoz idő kell
▪ Szabályok korlátokat is jelentenek
4
Keretrendszerek - példák
 Vastag-kliens RAD: Visual Studio, Borland
Delphi, …
 PHP: CodeIgniter, Symfony, Zend
Framework, CakePHP, …
 PHP keretrendszerek tartalomkezelő
szolgáltatásokkal: Drupal, Joomla!,
Wordpress, …
 JavaScript: JQuery, Prototype,
script.aculo.us, Yahoo YUI, ExtJS
5
Mi a probléma az eddigi web-fejlesztési
gyakorlattal?
 Nagyobb munkák írása egyre nagyobb
nehézségekbe ütközik
 A kód felesleges elágazásokat tartalmaz,
nem lehet tudni, mikor mi hívódik meg
6
PHP KERETRENDSZEREK
7
Front Controller
 Minden oldalt érintő közös műveletek egy
helyen szerepelnek:
▪
▪
▪
▪
▪
Konfiguráció beolvasása
Autentikáció
Autorizáció
Input paraméterek előfeldolgozása, szűrése
Karakterkódolás
 1 belépési pont: index.php
 Hogyan jelezhető, melyik oldalt kell
megjeleníteni?
▪ hidden mező
▪ GET paraméterrel: index.php?oldal=main
8
Példa: Front Controller – 1.
switch ($oldal) {
case "index":
index();
break;
case "page1":
page1();
break;
case "page2":
page2();
break;
case "page3":
page3();
break;
default:
index();
}
function index() {
}
function page1() {
}
function page2() {
}
function page3() {
}
9
Példa: Front Controller – 2.
if
(function_exists($oldal)) {
call_user_func($oldal);
}
function index() {
}
function page1() {
}
function page2() {
}
function page3() {
}
10
Példa: Front Controller – 3.
switch ($oldal) {
case "index":
include "v3_index.php";
break;
case "page1":
include "v3_page1.php";
break;
case "page2":
include "v3_page2.php";
break;
case "page3":
include "v3_page3.php";
break;
default:
include "v3_index.php";
}
11
Példa: Front Controller – 4.
if (file_exists("v3_" . $oldal . ".php")) {
include_once("v3_" . $oldal . ".php");
}
12
Model-View-Controller
(Modell-Nézet-Vezérlő - MVC)
 A FrontController nem segít az egyes rétegek
szétválasztásában.
▪ A kód ugyanúgy ömlesztett marad az egyes
részmodulokban
 Összetett, sok adatot kezelő alkalmazásokban
elvárható:
▪ Az adatok (modell) és a felhasználói felület
(nézet) szétválasztása.
▪ A nézet ne befolyásolja az adatkezelést.
▪ Az adatok átszervezhetőek legyenek a
felhasználói felület változtatása nélkül.
13
MVC – 2.
 Az MVC tervezési minta elkülöníti az adatok
elérését és az üzleti logikát az adatok
megjelenítésétől és a felhasználói interakciótól
egy közbülső összetevő, a vezérlő
bevezetésével.
▪ Model: az adatokat, praktikusan az adatbázisbeli
táblák, néha beleértik ezek elérését segítő kódot
vagy magát az üzleti réteget is
▪ View: megjelenítésért szükséges réteg
▪ Controller: vezérlést végzi, értesíti a Modelt és a
Viewt is a változásokról, kezeli az input adatokat.
 Össze szokás kapcsolni a FrontController
mintával
14
MVC: Oldal életciklusa – 1.
15
MVC: Oldal életciklusa – 2.
 Példa: CodeIgniter
16
Saját MVC keretrendszer készítésének
menete
 Elvárások, szabályok megfogalmazása
 Könyvtárszerkezet
 View, template (PHP nyelvi elemek: echo,
for, foreach, while)
 Front Controller (index.php)
 Model elkészítése
17