“Finding .net to be .not ?”
Introducere
Ştim cu toţii ce înseamnă Internet. Numărul siturilor de web creşte pe zi ce trece, iar cererea de conţinut dinamic este din ce în ce mai mare. O mare parte dintre cei care îsi câştigă pîinea din programare şi servicii conexe sunt confruntaţi cu o problemă extrem de gravă : fie se apucă de limbaje de programare noi, care să le permită crearea şiîntreţinerea de situri dinamice, fie rămân fără clienţi. De cele mai multe ori timpul necesar învăţării unui nou limbaj este mare, fără a mai vorbi de timpul necesar adaptării stilului de lucru, al adaptării terminologiei, uneltelor etc.
Există pe piaţa diverse unelte care permit dezvoltarea de conţinut dinamic păstrând, într-o oarecare măsură, un stil tradiţionalist de lucru. La acest capitol regăsim uneltele de dezvoltare Oracle, mult mediatizatul .net de la Microsoft cu Visual Studio 7 şi altele. Există, de asemenea, limbaje de scripting, arhicunoscute, dintre care aş numi în primul rând PHP şi ASP. Fiecare din aceste unelte rezolvă o parte a problemei cu care se confruntă un programator care toată viaţa a lucrat în C++, de exemplu. Unele unelte nu permit o prea mare libertate de mişcare în domeniul interfeţei, pe când altele nu permit realizarea de proiecte de complexitate mare.
În continuare vă voi prezenta, pe scurt, un framework care încearcă să împace nevoile de control, timp mic de adaptare la tehnologie şi păstrarea stilului de lucru : IntraWeb.
Ce este IntraWeb ?
Scenariu
Şeful vine cu următoarea idee geniala : “Ce-ar fi să trecem tot programul nostru de facturare pe net ?”. Deoarece nu râde, probabil că e serios... dar ce vă faceţi ? Tot programul a fost făcut cu C++ Builder. Scrie în documentaţie ceva de WebBroker, şi ceva de “web content”, dar cum se face ? Cine ştie HTML ? JavaScript ? Aţi putea învăţa, dar sistemul trebuie să fie gata.. ieri ! Ce-i de făcut ?
Dacă aţi folosit pentru dezvoltare Delphi, C++ Builder, JBuilder, Kylix sau orice mediu .net sunteţi norocoşi – vă puteţi rezolva rapid problema folosind IntraWeb.
Descriere
Ideea pe care se bazează acest framework este simplă, dar eficientă. Modalitatea de dezvoltare a interfeţei este cea tradiţională, cu singura diferenţă că veţi folosi controale IntraWeb în loc de controale Windows. La rulare, programul dumneavoastră se va transforma într-un server web căruia îi veţi putea adresa cereri din orice browser. Nu este nevoie să ştiţi HTML, sau Javascript. Mai exact nu veţi vedea niciodata cod HTML... de fapt nici nu vă interesează, nu ?
Exemplu – Un program făcut cu IntraWeb
Cum o mie de vorbe doi bani nu fac, urmează o scurtă exemplificare a modului de lucru.
Vom crea un proiect foarte simplu, pentru a nu încărca acest articol. Ne propunem să facem o aplicaţie care să aleagă un număr la întâmplare, urmând ca utilizatorul să îl ghicească. Pentru o demonstraţie a tuturor posibilităţilor oferite de IntraWeb sugerez executarea programului demonstrativ “Features”, inclus în distribuţie.
Pentru exemplificare am ales Delphi 7. Codul sursă este extrem de simplu şi nu ar trebui să ridice nici un fel de probleme unui programator care ştie C sau Pascal.
Pasul 1 - Crearea unui proiect nou
Alegem din meniu File | New | Other şi selectăm tabul “IntraWeb”. Alegem “IntraWeb Application Wizard”. Aceasta va deschide asistentul care permite creearea facilă a aplicaţiilor IntraWeb.
Pentru acest proiect demonstrativ vom alege “StandAlone application”. Remarcaţi că este posibilă crearea de aplicaţii IntraWeb atât ca aplicaţie de sine statatoare, cât şi ca serviciu Windows, ca extensie ISAPI pentru serverele care permit acest lucru (IIS şi OmniHTTP), dar şi ca modul pentru serverul Apache.
Pasul 2 - Construcţia formei
În acest proiect avem nevoie de o singură formă şi o putem folosi foarte bine pe cea generată automat de asistentul invocat anterior. Pentru a adăuga controale pe formă procedăm ca în orice aplicaţie Delphi obişnuită – selectăm controlul dorit din paletă şi il punem pe formă.
Din paleta de controale standard (IW Standard) vom alege câteva controale “Label” (TIWLabel), un control “Edit” (TIWEdit) şi un buton (TIWButton). Aşezându-le obţinem o formă similară cu cea din imagine.
Proprietăţile controalelor pot fi modificate ca în orice aplicaţie dezvoltată cu Delphi, cu ajutorul ferestrei Object Inspector:
După desenarea ferestrei să trecem şi la cod. Vom scrie cod pentru evenimentele OnCreate al formei şi OnClick al butonului:
procedure TIWForm1.IWButton1Click(Sender: TObject);
var
LNumber : integer;
begin
if not TryStrToInt(IWEdit1.Text, LNumber) then
IWLabel2.Caption := 'Nu ati introdus un numar intreg !'
else
begin
Inc(FGuesses);
IWLabel3.Caption := IntToStr(FGuesses);
if LNumber < FNumber then
IWLabel2.Caption := 'Valoarea este prea mica !'
else
if LNumber > FNumber then
IWLabel2.Caption := 'Valoarea este prea mare !'
else
WebApplication.Terminate(Format('Felicitari ! Ati ghicit din %d incercari !', [FGuesses]));
end;
end;
procedure TIWForm1.IWAppFormCreate(Sender: TObject);
begin
Randomize;
FNumber := Random(100);
FGuesses := 0;
IWLabel2.Caption := '';
IWLabel3.Caption := IntToStr(FGuesses);
end;
Pentru ca acest cod să poată fi compilat, este necesară declararea următoarelor două variabile:
FNumber : integer; FGuesses : integer;
Pasul 3 - Execuţia
Compilaţi, executaţi. Veţi obţine următoarea fereastră, care este, de fapt, serverul pe care tocmai l-am construit:
În acest moment aplicaţia noastră este pornită şi
poate fi testată. Pentru aceasta porniţi un browser de web şi accesaţi
adresa 127.0.0.1 şi portul indicat în fereastra serverului
(în acest exemplu 4058). Adresa completa va fi, aşadar,
ceva de genul: http://127.0.0.1:4058.
Portul pe care ascultă serverul poate fi setat din proprietăţile
aplicaţiei.
Rezultatul obţinut în browser:
Interesant, nu ? Dacă aveţi curiozitatea să vă
uitaţi la sursa paginii o să vedeţi ca nu e nici o păcăleala.
Nu e un ActiveX. Nu e Java. Nu e un applet, nu e o animaţie Flash. E doar HTML şi JavaScript.
Cât HTML şi cât Javascript aţi scris ca să ajungeţi
la acest rezultat ? Zero.
Jucaţi-vă cu aplicaţia ca să vedeţi
că funcţionează absolut corect.
Şi nu aţi scris decât cod Delphi normal, pe care l-aţi
scrie în orice aplicaţie Windows.
Bine, ăsta e un program simplu, ce mai ştie să facă ?
În distribuţia de IntraWeb aveţi peste 60 de controale care
lucrează cu HTML 4.0. Mare parte din ele există şi în varianta de HTML 3.2.
Există controale pentru lucrul cu baze de date, pentru toate tipurile de liste, casete de
editare, butoane radio, meniuri, liste arborescente, imagini, transfer de fişiere,
hyperlinkuri, calendar etc.
O parte din controale lucrează direct pe partea de client, oferind
posibilitatea de a face grafice dinamice, dataset-uri şi tabele locale.
Folosind controalele care generează HTML 3.2 puteţi scrie
aplicaţii care vor rula cu succes pe orice browser compatibil
HTML 3.2, cum ar fi toate browserele de pe PDA-uri, telefoane mobile,
şi chiar şi Lynx !
Pentru a înfrumuseţa situl puteţi folosi
fişiere model (“template”), care la rulare vor fi
transformate de catre aplicaţie. În acest fel puteţi
separa complet munca programatorului de cea a designer-ului, şi
puteţi chiar să schimbaţi aspectul aplicaţiei fără
a scrie nici măcar o linie de cod, şi chiar fără a recompila!
Mai mult, folosind CLX puteţi scrie o aplicaţie complet
portabilă, pe care o recompilaţi cu Kylix sub Linux ca modul Apache de exemplu.
În acest fel dezvoltarea o să fie făcută pe masini Windows, iar în
productie aplicaţia va fi găzduita de un server Linux.
O întrebare frecventa pusă de cei care văd
pentru prima oara IntraWeb şi care au mai lucrat doar cu limbaje
de scripting este “cum se conectează la baza de date şi ce baze ştie”. Răspunsul
e simplu – IntraWeb vă ofera doar interfaţa cu utilizatorul, în realitate
dumneavoastră dezvoltaţi un program Delphi/C++ Builder/JBuilder clasic. Vă
puteţi conecta la orice baza de date vă puteţi conecta din aceste medii.
De ce IntraWeb şi nu PHP, ASP, Java ?
În comparaţie cu limbaje de scripting, gen ASP / PHP / Perl etc. superioritatea IntraWeb este
evidentă în cazul proiectelor de complexitate medie şi mare. Dezvoltarea se poate
face într-un mediu performant, codul aplicaţiei poate fi modularizat în
acelasi fel ca la o aplicaţie Windows obişnuită, pot fi folosite bibliotecile existente, nu
există cod HTML amestecat cu codul sursă al aplicaţiei,rezultatul este compilat, nu interpretat
şi multe altele. Pentru sceptici, imaginaţi-va programând aplicaţii de
contabilitate în PHP... destul de bizar, nu ? (Nota: sunt un mare fan PHP, dar pentru fiecare
problemă există o soluţie optimă, iar PHP pur şi simplu nu a fost gândit
pentru proiecte de sute de mii de linii de cod)
O alta soluţie foarte populară pentru aplicaţii Internet
este Java. Dacă ne referim la appleturi Java descarcate la
client, superioritatea IntraWeb este iarăsi evidentă:
viteza de încărcare sporită, toata aplicaţia
fiind pe server, compatibilitate totală cu orice browser care
suportă măcar HTML 3.2, gestiune a sesiunilor utilizator,
şi lista poate continua. Dacă, însă, este vorba
de Java la nivel de server, IntraWeb poate fi folosit cu succes
pentru a genera interfaţa cu utilizatorul !
Un alt factor care nu trebuie neglijat este timpul necesar adaptării
la o nouă tehnologie. Dacă în echipă
nu există deja programatori de PHP / ASP / Java, adaptarea va fi
dificila, pe când cu IntraWeb tot ce au de făcut membrii
echipei este să rescrie interfaţa grafică.
Evident, un ultim dar extrem de important factor este şi reutilizarea
bazei de cod existente deja. Nimanui nu îi face plăcere
să o ia de la zero cu un proiect care deja este folosit cu
succes în forma actuală. Adaptarea proiectului pentru Internet folosind IntraWeb
necesită un timp de dezvoltare redus şi nu afectează
semnificativ construcţia sau modul de operare al programului.
De unde îl iau şi eu ?
IntraWeb poate fi descărcat de pe situl producătorului, firma Atozed
Software.
Adresa sitului este http://www.atozedsoftware.com.
O variantă de IntraWeb este inclusă în distribuţia
Delphi 7.
Pentru varianta de evaluare suportul este asigurat prin intermediul
grupurilor de la adresa nntp://news.atozedsoftware.com.
Alte resurse
Componente
Cursuri de pregătire şi documentaţie