Introducere în IntraWeb

Acest articol a aparut in mai 2003 in revista NetReport. Din pacate linkul original catre arhiva NetReport nu mai functioneaza, asa ca il reproduc aici.

“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