Internetul si World Wide Web reprezinta fundamentul pe care īl utilizeaza firmele pentru a construi economia informationala. Īn aceasta economie, informatia valoreaza la fel de mult ca bunurile sau serviciile, devenind o parte vitala a pietei. Pe o asemenea piata, se impun tehnologiile cele mai bune, deoarece toate organizatiile īncearca sa obtina un avantaj fata de competitori, utilizānd, printre altele, si noile tehnologii.
Īn economia informationala, este strategic pentru fiecare organizatie sa aiba o buna utilizare a informatiilor. Este foarte important, deci, ca informatia sa fie integrata cu afacerea īnsasi.
Īn vreme ce acestea par a fi noi tendinte, Internetul si World Wide Web doar intensifica o provocare pe care profesionistii din IT (Information Technology) o simt de mult, si anume cererea de a realiza un management de calitate al 727h79h informatiilor valoroase ale organizatiei. Īntr-o prima faza, raspunsul la aceasta cerere s-a materializat īn managementul computerizat al informatiilor critice ale afacerii. Mai recent, a īnceput sa fie simtita nevoia de integrare mai mare īntre afacere si sistemele de calcul, precum si nevoia de a avea capacitatea de corelare a unor informatii din surse diferite īn vederea unor nevoi strategice specifice.
Enterprise Java este un concept din ce īn ce mai raspāndit īn lumea calculatoarelor. Nu s-a dorit traducerea acestui concept īn romāna, īntrucāt i s-ar putea denatura sensul original. Īn orice caz, enterprise semnifica īntreprindere, companie, organizatie. De ideea de organizatie, este legat un alt termen foarte des īntālnit īn lumea informatica, si anume intranet.
Un intranet reprezinta o retea de calculatoare interna a unei organizatii deci protejata de lumea exterioara. Cu alte cuvinte, un intranet reprezinta o insula īn marea numita Internet, insula autonoma si cu guvernare interna, dar supusa protocoalelor de comunicare din Internet.
Acum se clarifica conceptul de enterprise Java: este vorba de aplicatiile Java proiectate pentru intranet, si anume pentru intranet - ul specific unei organizatii, deci e vorba de modul de utilizare a tehnologiei Java la nivel de īntreprindere.
Una dintre tehnologiile Internet obisnuite, puse īn functiune īn interiorul organizatiilor, este sistemul hypertext al Web-ului. Folosirea intranet - ului unei companii ca mediu de scriere a informatiilor īn pagini de Web da posibilitatea angajatilor companiei sa gaseasca repede raspunsuri la īntrebari. Ei nu trebuie sa caute documentatie īn alta parte, ci e suficient sa caute informatia respectiva īn paginile de Web ale companiei. Īn mod ideal, intranet - ul unei companii foloseste multe tehnologii Internet ca : e-mail, ftp, telnet, news si servicii de Web.
Notiunea de enterprise este destul de larga, ea semnificānd orice firma, organizatie, companie care utilizeaza calculatoare ce ruleaza aplicatii de uz intern. Asta nu īnseamna, īnsa, ca aplicatiile dezvoltate si folosite de o firma anume nu pot fi folosite si de altele. Fiecare companie fie ea mica, medie sau mare are diferite departamente : management, marketing, proiectare si dezvoltare de programe, resurse umane, etc. Fiecare departament foloseste aplicatii specifice, deci aceleasi departamente ale mai multor firme pot folosi aceleasi aplicatii.
Īn industria calculatoarelor, termenul enterprise este utilizat pentru a desemna o organizatie care utilizeaza computere. Acest termen desemneaza corporatii, mici afaceri, institutii non profit, institutii guvernamentale si alte tipuri de organizatii. Totusi, īn practica, termenul este aplicat mai degraba organizatiilor mai mari.
Pe masura dezvoltarii tehnicii de calcul si odata cu aparitia arhitecturii client/server, se impun noi strategii de dezvoltare a aplicatiilor folosite īn industrie.
Pentru a raspunde nevoilor organizatiilor, s-a impus ideea de componente software. Exista mai multe implementari ale acestui concept. Īn principal, implementarile vin de la Microsoft , Sun si OMG.
O posibila definitie a componentelor software este urmatoarea: "O componenta software este o portiune de cod care implementeaza un set de interfete. Este o unitate discreta de aplicatie logica care poate fi controlata. Componentele nu sunt aplicatii de sine statatoare, nu pot functiona singure. Ele sunt utilizate īn mod asemanator pieselor de puzzle pentru a rezolva probleme mai mari. Ideea de componente software este foarte practica. O companie poate cumpara un modul bine definit care rezolva o problema si īl poate utiliza īmpreuna cu altele pentru a rezolva probleme mai mari". (Roman, 1999).
Se spune ca o componenta software are o "granularitate" mai mare decāt cea a unei clase (Roman, 1999), dar, īn mod evident, mai mica decāt a īntregii aplicatii.
O alta posibila definitie este aceasta: "Componentele software sunt unitati de compunere cu interfete specificate prin contract si care au doar dependente de context explicite. O componenta software poate fi instalata si utilizata de terte parti. Componentele si potentialii utilizatori ai acestora se dezvolta independent, motiv pentru care este important ca serviciile oferite de catre o componenta sa fie facute cunoscute prin interfetele implementate de componenta. Mai mult, distributia si instalarea componentelor se face sub forma binara, deci clientii lor nu vor avea acces la codul sursa." (Jurca, 2000)
Avantajele utilizarii componentelor software sunt multiple: īn primul rānd, timpul īn care poate sa fie dezvoltata o aplicatie scade simtitor, ceea ce permite firmei sa aiba o pozitie mai buna pe piata. Un alt avantaj este ca nu este nevoie de persoane cu experienta foarte bogata pentru a crea o aplicatie, folosind componente software cumparate. Aici trebuie mentionat ca realizarea componentelor necesita, totusi, cunostinte foarte solide de programare obiectuala. Cel mai mare avantaj este faptul ca se poate astfel reutiliza codul īn alte aplicatii, īn acest fel costul total al unei aplicatii scazānd.
Un alt concept foarte important, care tine de filozofia unei aplicatii enterprise, este cel de arhitectura multi tier. Īn primul rānd, ar trebui prezentat conceptul de tier. O aplicatie software poate fi īmpartita īn mai multe niveluri izolate unele de altele. Avantajul este ca se cāstiga o independenta īntre nivele, astfel ca, atunci cānd unul se modifica, impactul asupra celorlalte este minim, daca interfata dintre ele nu se modifica. Un astfel de nivel al aplicatiei se numeste tier.
Īn mod traditional, aplicatiile sunt structurate pe doua tiers: Presentation Layer si Business Logic/Data Layer. Problema cu aceasta abordare este ca logica de bussiness este continuta īn procedurile stocate din baza de date. Din pacate, fiecare baza de date are propriul limbaj īn care se scriu procedurile stocate, deci este foarte greu portabil. Īn cele mai multe cazuri, aplicatiile create folosind doar doua straturi (tiers) sunt nescalabile si greu portabile. Arhitectura unei asemenea aplicatii poate fi observata īn Figura 2.1.
Scalabilitatea este proprietatea unei aplicatii de a fi extinsa (pentru a putea fi utilizata de mai multi utilizatori, īn ideea de acoperire a nevoilor unei organizatii īn expansiune) folosind mai multe sisteme de calcul dar fara a fi nevoie sa se modifice codul sursa.
Totusi, avantajul unei asemenea arhitecturi sta īn faptul ca traficul īn retea necesar este mai mic, deoarece procesarea se face local īn serverul de baze de date. Pe de alta parte, Java īncepe sa fie folosit tot mai mult ca limbaj pentru procedurile stocate. Īnsa, ramān probleme cu scalabilitatea aplicatiei si cu faptul ca driverul de baze de date este instalat la client. Astfel, orice update la driver este foarte costisitor, deoarece necesita ca fiecare client sa-si schimbe driverul.
Figura
2.1. Arhitectura clasica two
tier a aplicatiilor
Īntr-o
arhitectura multi tier, se
interpun īntre cele doua tiers
din modelul clasic, unul sau mai multe
alte tiers noi. De fapt, ceea ce se
face este ca se separa logica de business de cea legata de baza
de date. Īn acest fel, se poate cāstiga independenta fata
de baza de date. De obicei, aplicatiile multi tier sunt divizate īn
trei straturi, dupa cum se poate
observa si din Figura 2.2.
Figura 2.2. Arhitectura unei aplicatii three tier
Cele trei straturi (tiers) ale arhitecturii three tier, pornind de la nivelul bazei de date, sunt:
I. Data Tier (stratul de date) este compus din una sau mai multe baze de date care pot contine si logica de procesare sub forma de proceduri stocate.
II. Business Logic Tier (stratul de logica de business) este stratul īn care ruleaza componentele software. Serverul (serverele) utilizat īn acest strat are rolul de a furniza un mediu de viata potrivit pentru componentele software. Acest server are rolul de a realiza un management eficient al componentelor si de a le furniza anumite servicii. De exemplu, serverul poate furniza un strat de acces la baza de date, permitānd componentelor sa salveze si sa īncarce date din System Information Tier. Un alt rol important al serverului este sa faca componentele sa fie disponibile pentru utilizare, sa le instantieze dupa necesitati, deci sa le gestioneze ciclul de viata.
III. Presentation Tier (stratul de prezentare) are rolul de prezenta informatia la client, de obicei folosind tehnologii ca Java Server Pages si servlets sau Active Server Pages, iar ca server folosind servere Web.
Caracteristicile unei aplicatii multi tier sunt urmatoarele:
Costurile deployment - ului (instalarea si punerea īn functie) aplicatiilor este mai mic, deoarece driverele pentru bazele de date sunt instalate la partea de server si nu sunt necesare instalarile la fiecare client ca īn modelul clasic.
Modificarea bazei de date se poate face cu usurinta, deoarece clientii nu mai acceseaza direct baza de date, ci middle tier care va face legatura cu baza de date. Deci o modificare a bazei de date va duce doar la modificari ale middle tier, fara a necesita vreo modificare la partea aplicatiei client.
Modificarea logicii de business este usor de realizat, deoarece nu este nevoie de recompilarea clientului.
Partile vitale ale aplicatiei ( situate īn Business Logic Tier si Data Information System) pot fi protejate folosind firewalls amplasate plasate īntre Presentation Ttier si Business Logic Tier.
Resursele pot fi reutilizate īn mod eficient exploatānd faptul ca, de obicei, clientii fac alte lucruri pe lānga utilizarea de resurse, ca de exemplu afisarea interfetei grafice. Se poate implementa un mecanism prin care componentele folosesc īmpreuna conexiunile la resurse. Acest mecanism se numeste pooling mechanism si are avantajul cresterii scalabilitatii aplicatiei. Acest mecanism se poate aplica si asupra componentelor, avānd ca rezultat faptul ca un client nu va avea nevoie de o componenta dedicata doar lui. Acesta este un avantaj major al arhitecturii multi tier fata de arhitectura two tier (cea clasica), unde fiecare client avea o componenta dedicata lui.
Erorile sunt localizate, nu se propaga de la un tier la altul. Daca apare o eroare critica, ea se gaseste īntr-un singur tier. Celelalte tiers pot sa functioneze fara probleme īn continuare, punānd la dispozitie ceea ce le sta īn putere pentru a face fata situatiei. De exemplu, daca serverul de aplicatii īn care ruleaza componentele din middle tier cade, totusi ramāne īn functiune Web serverul din presentation tier care poate afisa o pagina de "site down" pentru clienti.
Dezavantajul aplicatiilor cu arhitecturi multitier este necesitatea unei benzi mai mari, daca nu se face o proiectare inteligenta a obiectelor distribuite. Aceasta apare deoarece tiers (straturile aplicatiei) sunt separate fizic, aflāndu-se de multe ori pe masini diferite, iar obiectele distribuite trebuie sa comunice unele cu altele. Toate acestea duc la cresterea traficului. Exista, totusi, posibilitatea de a elimina o parte din trafic, daca se face o proiectare a obiectelor distribuite, astfel īncāt sa se apeleze īntre ele cāt mai rar si atunci sa-si transmita unul altuia datele īn mod eficient.
Īn concluzie, cele doua arhitecturi au avantajele, dar si dezavantajele lor. Daca se doreste realizarea unei aplicatii care sa aiba trafic minim, atunci se va folosi arhitectura clasica, cea two tier, īnsa vor fi mari probleme cu portabilitatea si cu modificarile ulterioare ale codului, uneori si cu scalabilitatea. Daca, īn schimb, se foloseste arhitectura multi tier, atunci se va cāstiga portabilitate si usurinta īn realizarea modificarilor ulterioare, precum si scalabilitate, dar se va pierde din eficienta utilizarii traficului disponibil. Totusi trebuie mentionat faptul ca o proiectare buna a aplicatiei poate atenua mult din acest dezavantaj.
Componentele Enterprise au avantajul ca permit realizarea de aplicatii cu arhitectura multi tier, beneficiind, astfel, de toate avantajele mai sus mentionate.
Implementarea conceptului de componenta de catre Microsoft a fost facuta folosind serviciile sistemului de operare Windows NT. Tehnologia DCOM furnizeaza o modalitate de separare a interfetei fata de implementarea ei si astfel se realizeaza independenta fata de limbaj. Alte tehnologii Microsoft utilizate in aplicatiile enterprise sunt:
MSMQ (Microsoft Message Queues) permite comunicarea īntre componente.
MTS (Microsoft Transaction Server) este un server care foloseste componentele.
Microsoft SQL Server este folosit pentru stocarea datelor īn baze de date relationale.
Microsoft Internet Information Services are rol de server Web.
Microsoft Management Console este utilizat pentru deployment.
Dezavantajul major al implementarii de la Microsoft este dependenta de platforma, deoarece se poate utiliza doar Windows NT si īn plus, pentru acest gen de servere, este nevoie de masini foarte puternice, mai ales pentru marile companii. Numarul maxim de procesoare pentru masinile pe care poate rula Windows NT este de 16 pentru Windows 2000 (NT5.0).
Implementarea conceputului de componenta de catre Object Management Group (OMG) este īnca īn faza de īnceput. Celelalte doua standarde dezvoltate pāna acum de catre OMG sunt Common Object Request Broker (CORBA) si Internet Inter-ORB Protocol (IIOP). Aceste doua standarde furnizeaza un cadru potrivit pentru obiecte distribuite. Este foarte important de mentionat ca J2EE (produsul de la Sun) implementeaza deja cele doua standarde. Īn plus, īn cadrul OMG, exista mari dezbateri daca standardul CORBA Components sa fie scos, deoarece J2EE este deja compatibil CORBA/IIOP.
O implementare foarte populara vine de la firma Sun Microsystems si este reprezentata de standardul J2EE. Acest standard a fost implementat de Sun precum si de catre alte firme ca BEA prin produsul BEA Web Logic sau Allaire prin produsul JRun. Java 2 Enterprise Edition (platforma J2EE) suporta aplicatii distribuite, care folosesc avantajele oferite de un numar mare de alte tehnologii aflate īn expansiune īn momentul de fata.
|