Saturday, June 19, 2010

Ext Direct Tutorial

Pozdrav nakon dužeg vremena opet, i da nastavimo sa još nekim zanimljivim i korisnim stvarcicama vezanim za ExtJS.

Jedna od veoma korisnih stvari koju cu pokušati da približim citaocima koji su zalutali ovde je takozvani Ext Direct.

Šta je Ext Direct i cemu služi?

Ext Direct je možemo reci platforma koja omogucava direktno pozivanje server side metoda sa klijentske strane.
Postoje odgovarajuci API-i za implementiranje ove platforme za veliki broj programskih jezika kao što su:
PHP, .NET, Java, Ruby, i drugi. Ja licno imam iskustva u radu sa Ext Direct-om u kombinaciji sa PHP-om i .NET-om, ali verujem da sve funkcioniše poprilicno ok i za druge programske jezike.

Ono što je zajednicko za server side koji koristi ovu platformu je da korisnik treba da uradi sledece:
- Da konfiguriše koja ce "komponenta" (koji server side deo) biti dostupna sa klijentske strane.
- Da integriše odgovarajuci API.
- Da konfiguriše odgovarajuci takozvani ruter, tj. deo koji ce biti zadužen za preusmeravanje "zahteva" od klijentske strane ka odgovarajucim serverskim metodama.

Šta nam je potrebno da bi mogli da koristimo Ext Direct?
Da ne bi odstupali od prethodnog dela tutorijala, i ovaj put cemo se za serverski deo oslanjati na PHP. Ext Direct Api za PHP ciji je inace autor João Bruni, ExtDirectApp.php skripta se može naci ovde.

Takodje, povezivanje sa ExtDirect API-jem u ovom slucaju uradjeno je preko skripte app.js koja izgleda ovako:
Code:

Ext.namespace( 'Ext.DirectTurorial' );

//Podesavanje API-a
Ext.DirectTurorial.REMOTING_API = {
'url': 'app.php',
'type': 'remoting',
'actions': { 'MojaBaseKlasa': [%actions%] }
};

Ext.Direct.addProvider( Ext.DirectTurorial.REMOTING_API );

Ext.Direct.on( 'exception', function(e) { alert( 'Greska: ' + e.message ) } );

//Direktan poziv PHP metode i hvatanje odgovora sa servera!
MojaBaseKlasa.VratiNekiResponce( function(result){ alert( result ); } );


index.html stranica bi trebalo da izgleda ovako
Code:

<html>
<head>
<title>Ext.Direct PRIMER</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="ext-all.js"></script>
<script type="text/javascript" src="app.php"></script>
</head>
<body>
<h1>Ext Direct tutorijal.</h1>
</body>
</html>


Primecujete da na kraju u html fajlu ukljucujemo kao javascript php fajl, i verovatno se pitate zašto je to tako.
Odgovor je zato što nam on služi kao ruter svih zahteva koji ce dolaziti na server i koji ce vracati odgovarajuci responce.

Naj jednostavniji primer može izgledati ovako (app.php):
Code:

<?php
require 'ExtDirectApp.php';

class MojaBaseKlasa extends ExtDirectActions
{
public function VratiNekiResponce()
{
return "Pozdrav svima koji ste zalutali ovde! Ovo je odgovor sa servera!";
}
}

new ExtDirectController( 'MojaBaseKlasa' );
?>

Dakle, u ovom delu koda, mi ukljucujemo ExtDirect Api i klasu cije funkcije želimo da pozivamo, "proširujemo" sa ExtDirectActions klasom, i pravimo Ext Direct Contoler objekat cijem konstruktoru prosledjujemo kao parametar naziv klase iz koje želimo da sa klijentske strane pozivamo serverske metode.


Koje su prednosti?
Prednosti su ocigledne, što se tice programera, na njemu je da lepo organizuje kod, i bez problema da štedi kod i prste, a da dobije na produktivnosti.

Koje su mane?
Iskreno, ja nisam naišao na nešto što bi mi preterano zasmetalo, tako da ostajete uskraceni za ovaj odgovor.

Pozdrav

No comments: