Perėjimas nuo PHP prie Zope/Python  (4)

Straipsnyje trumpai aprašomi pagrindiniai Zope privalumai lyginant su PHP, pateikiamos elementarios situacijos, kurioms esant Zope yra pranašesnė prieš standartinius PHP sprendimus.


Prisijunk prie technologijos.lt komandos!

Laisvas grafikas, uždarbis, daug įdomių veiklų. Patirtis nebūtina, reikia tik entuziazmo.

Sudomino? Užpildyk šią anketą!

Nuolat dirbant su kompiuteriais neretai kyla naujos mintis apie įsisenėjusias problemas. Kartais pavyksta aptikti naujų sprendimų, kurie būna taip gerai apgalvoti ir integruoti, kad senieji sprendimai palyginus atrodo griozdiški ir grubūs.

Kaip pavyzdį galima paanalizuoti Zope platformą ir jos privalumus lyginant su PHP.

 

Problemos su skriptų rašymu

 

Dirbant su PHP dalį laiko tenka skirti „rato išradinėjimams“. Sunku rasti nors vieną skriptų kūrėją, kuris nebūtų pats parašęs klasių, reikalingų norint prisijungti prie duomenų bazių arba atvaizduoti turinį. Analizuojant kodavimui skiriamą laiką galima nesunkiai pastebėti, kad daug trunka rutininių problemų sprendimas. Reikalingas būdas pašalinti šią rutiną.

Gudrus PHP programuotojas gali pasinaudoti standartinėmis klasėmis: Pear, Smarty ir ADODB yra didesni struktūriniai blokai, kurių pagalba galima sukonstruoti projektą. Dėl jų panaudojimo mūsų programavimo stilius nepasikeičia fundamentaliai – tačiau jie apsaugo programuotojus nuo kai kurių kankinančių smulkmeniškumų. Kai tik įsisavinate šias klases, ne taip sudėtinga sukurti kokį nors tipinį jų apjungimo būdą, ir galbūt netgi daugiau nei apjungimo būdą – galima susikurti standartinį bibliotekų rinkinį, kuris būtų naudojamas kasdieniniame darbe.

Taigi kas gali būti ne taip, jei turimos nuosavos programų serverio ar turinio valdymo sistemos bibliotekos? Panaudojant šias bibliotekas galima sukurti didelį kiekį panašių projektų. Tačiau ką daryti jei klientas nori kažko visiškai kitokio? Ar jūs visada randate būdą kaip praplėsti savo sistemą? Ar jūs programuojate kažką naujo nuo nulio, ar tiesiog įspraudžiate projekto reikalavimus į senojo kodo rėmus?

 

Zope filosofija

 

Argi nebūtų puiku, jei egzistuotų pakankamai lanksti sistema, kurią kurtų ir aptarnautų kažkas kitas? Jūs galbūt naudojate programinį paketą Zope dėl tos pačios priežasties, dėl kurios dauguma žmonių naudoja Linux distribuciją vietoj to, kad rankinių būdu surinkinėtų atskirus komponentus iš pavienių autorių TGZ failų.

Pavyzdžiui, beveik kiekvienai internetinei sistemai reikalinga šablonų struktūra: Zope pateikia du skirtingus šablonų kūrimo metodus (DTML, ZPT) – nepaisant jų skirtumų abu turi panašius API ir gali būti panašiai programuojami. Rezultate jie gali būti naudojami pakaitomis.

Zope taip pat pateikia pakankamą informacijos šaltinių objektų pasirinkimą – standartinis objektas, vadinamas „ZSQL metodas“ gali būti naudojamas sudaryti jungčiai su bet kuria duomenų baze ir gali būti kombinuojamas su bet kuria forma ar šablonu, taip sukuriant paprastą prisijungimo prie duomenų bazės ir duomenų atvaizdavimo programą beveik be programavimo.

Kadangi visi objektai šioje sistemoje veikia standartiniu platformos numatytu būdu, programuotojui nereikia rūpintis kaip viskas veiks kartu – vietoj to dėmesys gali būti kreipiamas į tai, ką išties norima padaryti su šiais komponentais (vietoj rato išradinėjimo galima vairuoti automobilį).

 

Kas yra Zope?

 

Zope yra objektų publikavimo aplinka (angl. Object Publishing Environment). Tai tam tikros rūšies programų serveris, kuris leidžia lengvai ir patogiais būdais kombinuoti objektus sprendžiant konkrečius uždavinius. Zope aplinkoje visi elementai yra objektai, pradedant dokumentais ir baigiant pranešimais apie klaidas. Zope pagrindas yra paprastų objekto užklausų tarpinė terpė (angl. simple object request broker) – programa, kuri „žino“ kaip suderinti objektus su vartotojo užklausomis ir pateikti rezultatus per interneto protokolą.

Kiekvienas objektas Zope terpėje paveldi keletą pirminių klasių, kurios apibrėžia pačius pagrindinius objektų API aspektus. Pavyzdžiui, kiekvienas konteinerio tipo objektas elgiasi labai panašiai kaip ir bet kuris „kataloginio“ tipo objektas. Reiškia, jei jūs suprasite bendrąjį konteinerių interfeisą, yra galimybė kad jūs sugebėsite naudotis visais konteinerio tipo objektais.

Išvardinsime keletą komponentų, kurie pateikiami kartu su bazine Zope distribucija:

ZODB – objektinė (angl. object oriented) duomenų bazė, skirta saugoti kodui ir turiniui. Iš pirmo žvilgsnio ji panaši į failų sistemą – tačiau dėl savitos savybės, vadinamos „surinkimu“ (angl. acquisition) ji gali leisti objektams atsirasti daugiau nei vienoje vietoje. Ši įmantri savybė leidžia programuotojams greitai kreiptis į labiausiai tinkamą objektą, remiantis „kontekstu“.

ZMI – Zope valdymo sąsaja; tai yra Zope pagrindu sukurta internetinė programa, kuri leidžia vartotojui sukurti kitas internetines programas. Programuotojai gali manipuliuoti ZODB įterpdami ir redaguodami Zope objektus.

WebDav / FTP sąsaja – alternatyva ZMI sąsajai, leidžianti programuotojui dirbant su Zope toliau naudoti mėgstamas integruotas projektavimo aplinkas. ZODB imituoja tradicinę failų sistemą; tai leidžia vartotojui greitai įkelti ir keisti svetainių turinį.

Document ir Template klasės – jų pagalba galima standartiniu būdu atvaizduoti dokumentus ir pateikti duomenis. Zope 2.x turi du pagrindinius šablonų tipus, tačiau yra planų ateityje šiuos du modelius apjungti.

Data Access klasės – vartotojas gali kreiptis į data-connection klasę naudodamas ZSQL metodą. Tai yra informacijos šaltiniai, kuriuos galima katalogizuoti, filtruoti ir pateikti panaudojant kitas klases.

„Taikomosios“ ir „Aptarnavimo“ klasės – jos pateikia platų pagalbinių funkcijų diapazoną, tokių kaip klaidų registravimas, indeksavimas, elektroninio pašto siuntimas ir priėmimas.

Produktai, skriptai ir išoriniai metodai – jų pagalba galima praplėsti Zope naudojantis Python programavimo kalba. Produktu paprastai laikomas objektų rinkinys, turintis valdymo sąsają. Skriptai ir išoriniai metodai yra labiau panašūs į funkcijas procedūrinėse programavimo kalbose.

Kuriant portalą paprastai nereikia priėjimo prie serverio operacinės sistemos. Windows Zope serveris atrodo identiškai Linux Zope serveriui. Zope yra geras pasirinkimas tiems programuotojams, kurie nenori veltis į skirtingų platformų karus.

Zope yra daugiau nei tiesiog jūsų mėgstamos skriptų rašymo kalbos alternatyva – tai yra visiškai objektinė aplinka, įgalinanti sukurti geresnes taikomąsias programas.

 

Tęstinumas

 

Zope vartotojams suteikia kai kurias galimybes, kurias realizuoti kitose skriptų kūrimo kalbose yra gerokai sudėtingiau. Pavyzdžiui, objektų ir kintamųjų tęstinumas (angl. persistence).

Norint užtikrinti elemento tęstinumą paprastu atveju galima naudoti sesijos klasę, ar netgi vartotojo sugalvotą klasę, įrašančią tęstinumo reikalaujančius elementus į reliacinę duomenų bazę. Vėlgi, Zope tokio tipo tradicinio sprendimo nedraudžia naudoti, tačiau kaip visada ji leidžia viską atlikti daug paprasčiau.

Zope pagrindas yra ZODB – objektinė duomenų bazė, kurioje saugomi ir iš kurios nuskaitomi Zope objektai. Rezultate, siekiant kokių nors duomenų tęstinumo, užteka tiesiog nustatyti tam tikrą savybę arba įrašyti objektą. Nereikia papildomai rūpintis SQL, papildomomis klasėmis arba kreipiniais į duomenų bazę – toks funkcionalumas užtikrinamas nuo pat sistemos įdiegimo pradžios.

 

Jūsų kodas gali būti tinkamesnis pakartotiniam naudojimui

 

Patyrę skriptų kūrėjai paprastai programuoja savo klases apibendrintai, kurios po to gali būti skirstomos į poklasius pagal konfigūravimo informaciją. Tokiu būdu klasė ir jos konfigūracija gali būti saugomos atskiruose failuose. Tokia technika yra efektyvi, tačiau kai ja yra naudojamasi, bet kuriam, norinčiam pasinaudoti tokio tipo klase, būtina išsamiai išmanyti kintamųjų nustatymą.

Ir šioje vietoje Zope nedraudžia naudoti tokio tipinio skriptų rašymo būdo, tačiau ji užtikrina daug galingesnius įrankius bendriesiems komponentams kurti: Zope Produktai yra standartinis Zope funkcionalumo praplėtimo būdas.

Produktas yra savarankiškas kodo paketas, į kurį įeina administracinės sąsajos, vartotojo sąsajos ir klasės, kurios priverčia jį veikti. Zope programuotojo požiūriu, vieną kartą sukūrus, produktas yra tai, ką galima patalpinti į konteinerį ir naudoti analogiškai kaip ir bet kurį kitą objektą.

Šios sistemos privalumas yra tai, kad produktų atliekamos funkcijos neturi priklausyti nuo konkrečių objekto realizacijų panaudojimo. Norint pakartotinai panaudoti kodą Zope aplinkoje užtenka paprasčiausiai sukurti objektą ir nustatyti jame tam tikrus konfigūravimo parametrus.

 

Zope yra saugi

 

Interneto programos garsėja savo pažeidžiamumu; sudėtinga užtikrinti tinkamą saugumą, o kai projektavimo metu nustatomi griežti terminai, saugumo klausimai paprastai sprendžiami paskutiniąją minutę. To pasekoje dauguma interneto programų pasižymi prastu saugumu.

Zope leidžia vartotojams šią situaciją apversti aukštyn kojomis. Zope realizuotas deklaratyvinis saugumo modelis (angl. declarative security model), kurio dėka saugumas tampa vidine bet kokio kuriamo objekto savybe.

Kaip ir bet kurios objektinės aplinkos atveju naujai sukurti objektai gali paveldėti senesnių objektų savybes. Kai iš anksto sukuriamas puikus saugumo modelis, visi Zope objektai automatiškai įgauna ši privalumą.

Zope objektai yra apsaugomi nustatant priėjimo teises (angl. permissions), ir šios teisės suteikiamos vartotojams ar vartotojų grupėms; visa tai gali būti nustatyta atskirai nuo aprašomojo objektinio kodo.

Žinoma, jei jūs norite išrasti naujus saugumo teisių tipus ar sukurti naują saugumo modelį, niekas sistemoje jums nedraudžia to padaryti.

 

Zope informacijos tvarkymo galimybės

 

Kaip jau minėta anksčiau, Zope pagrindas yra objektinė duomenų bazė ZODB. Tai yra puikus daugumai hierarchiškai organizuojamų interneto portalų. Objektinės duomenų bazės yra tinkamesnės tais atvejais, kai informaciją aprašančios taisyklės dažnai turi išimčių.

Žinoma, niekas jūsų neverčia viską saugoti objektų pavidalu. Zope turi integruotą bazinę reliacinę duomenų bazę Gadfly, kartu su kuria pasitelkus Data Adapter įrankį (pvz. MySQL, Postgres duomenų bazėms) jūs galite naudoti praktiškai bet kokią rinkoje egzistuojančią reliacinę duomenų bazę.

Skriptus kuriantys žmonės paprastai naudojasi duomenų bazės abstrakcijos lygmenimis (angl. database abstraction layers), kurių pagalba gerokai supaprastėja bendravimas su duomenų baze. PHP turi mažiausiai du puikius abstrakcijos lygmenis (ADODB ir Pear DB). Zope užtikrina abstrakciją, taip pat galimybę vizualiai redaguoti prisijungimo objektus ir užklausų šablonus.

ZSQL kombinuojant su Connection objektais galima sukurti SQL  šablonus, kurie gali būti vykdomi kaip užklausos. Bet koks ZSQL metodas tampa informacijos šaltiniu. Iš to seka, kad jis gali būti jungiamas nuosekliai su kitais objektais, kurie „žino“, kaip apdoroti, sisteminti ar atvaizduoti šią informaciją.

 

Zope gerai veikia kartu su egzistuojančiais įrankiais

 

Bazinis Zope principas yra pateikti alternatyvą, neverčiant programuotojo atsisakyti standartinių įrankių ir programavimo metodų. Priešingai populiariai nuomonei, jums nereikia atsisakyti Alache ar jūsų mėgstamos redagavimo terpės. Jums nereikia visko atlikti tiesiogiai per Web sąsają.

Zope FTP ir WebDav sąsajos leidžia daugumai projektavimo aplinkų tiesiogiai prisijungti prie Zope serverio. Tokiu būdu aplenkiama Web sąsaja, kuri nėra tinkama didelio teksto kiekio apdorojimo užduotims. Macromedia Dreamweaver, FrontPage ir KDE Kate gali dirbti su Zope objektais taip, tarsi jie būtų normalūs failai šioje failų sistemoje.

Virtual Host Monster leidžia Apache ir Zope platformoms saugiai bendradarbiauti. Ši pagalbinė klasė leidžia nenutrūkstamai peradresuoti Apache virtualius host‘us į tam tikrus ZODB adresus. Ji leidžia paversti vieną Zope realizaciją (angl. instance) į keletą virtualių Zope realizacijų, pasiekiamų per Apache mod_proxy.

 

Apibendrinimas

 

Zope yra puikus integruotas sprendimų rinkinys, kuriais remiantis galima sėkmingai spręsti dažnai pasitaikančias interneto projektų problemas. Ji veikia iš esmės skirtingu būdu lyginant su tradicinėmis skriptų pagrindu kuriamomis sistemomis. Apie Zope galima daugiau galvoti kaip apie objektų rinkinį, kurie padeda dirbti su internetine leidyba, nei apie skriptų rinkinį, atliekančių tam tikrą darbą.

Zope objektai sukurti taip, kad būtų gerai suderinti tarpusavyje. Vietoj to, kad domėtis, kaip geriausia vienai klasei komunikuoti su kita klase, jūs galite tiesiog imti ir kurti savo portalą.

Pasinaudodami šia gerai suprojektuota ir stabilia platforma, kurioje jau išspręstos dažniausiai pasitaikančios problemos, jūs galite daugiau dėmesio skirti unikaliems problemų aspektams.

 

Straipsnis parengtas remiantis straipsniu "Switching from PHP to Zope/Python". Originalų straipsnį galima rasti adresu http://www.kuro5hin.org/story/2004/3/21/184222/896

Pasidalinkite su draugais
Aut. teisės: www.technologijos.lt
(0)
(0)
(0)
Naujienos iš interneto

Komentarai (4)

Susijusios žymos: