TEJO
Disa Adresaro
Sistema arkitekturo
Redakcio 0.9
2000-12-27

Ĝenerala enhavo
Arkitektura reprezentado
Arkitekturaj celoj kaj limigoj
Uzkaza prezento
Logika prezento
Proceza prezento
Sterna prezento
Realiga prezento
Datumara prezento
Amsplekso kaj efikeco
Kvalito

Arkitektura reprezentado
Tiu ĉi dokumento donas reprezentadon de la arkitekturo laŭ pluraj vidpunktoj. Ĝi donas la ĝeneralajn skemojn por strukturado de la kodaro. Ne ĉiuj uzkazoj el la funkcia specifaro estos detale pristudaj ĉi tie. Programontoj imitos la pristuditajn uzkazojn por realigi la nepristudatajn.
La vidpunktoj prezentataj ĉi sube celas doni plej kompletan bildon la celota realigo. La uzkaza prezento nur listigas tiujn uzkazojn, kiujn detale pristudas la aliaj prezentoj. La logika prezento difinas la strukturigon de la kodaro, laŭ pakaĵoj de klasoj, paĝoj kaj bildoj. La proceza prezento klarigas la rilatojn inter la diversaj kunlaborantaj procezoj. La sterna prezento proponas la eblajn manierojn instali la programaron por ĝui ties funkciojn. La datumara prezento klarigas la ligadon inter la konservitaj datumoj kaj la tabela strukturo en la datumbazmanipulilo. Konsideroj pri efikeco kaj kvalito gvidas la ĝeneralajn elektojn pri solvoj kaj labormanieroj.
ĝenerala enhavo

Arkitekturaj celoj kaj limigoj
La celo estas disponigi pri rete alirebla programaro por prizorgi diversajn administrajn taskojn de la asociaro esperantlingva. Plej baze estas la prizorgado de ĝisdata adresaro (bona iniciato tiurilate estas la Reta Kartaro ĉe http://www.esperanto.nu/kartaro/). Aliaj servoj dependas de tiu baza servo: prizorgado de membraro, prizorgado de renkontiĝo, prizorgado de volontularo, prizorgado de kontaro, prizorgado de butiko, i.a.
La disponigota programaro estu uzebla same ĉe loka reto kiel ĉe Interreto. Pro uzado en reta medio, nenia devigo eblas pri elekto de operaciumo, nek ĉe la uzulo, nek ĉe la servilo. La bazaj teĥnologioj estu do tiuj uzataj por porteblaj distribuataj aplikaĵoj: kutima uzula foliumilo kaj Ĝava aplikaĵa servilo.
La sistemo baziĝas sur aplikaĵa servilo konforma al J2EE specifaĵoj. Tiel ĝi havas sestavolan arkitekturon laŭ jena ilustraĵo. La elekto pri la diversaj komponantujoj sekvos pli-malpli tiujn gvidliniojn:
foliumilo
iu ajn laŭ elekto de uzontoj. La sistemo supozas, ke la de la uzanto elektita foliumilo kapablas almenaŭ montri HTML 4 k CSS 2 kune kun JavaScript. Fakte uzotas XHTML 1.0 kaj ECMAScript.
ttteja demono
iu ajn demono, kiu kapablas trakti JSP.
aplikaĵa servilo
verŝajna elekto estus Enhydra Enterprise, kiu samtempe rolus kiel ttteja demono.
datumbazmanipulilo
verŝajna elekto estus InstantDB.
En jena ilustraĵo videblas la influo de konceptadaj skemoj plukitaj ĉe TheServerSide. Tiuj skemoj estos uzataj por solvi plurajn eventualajn problemojn, kiujn oni esperas tiel eviti.
Atentindas ankaŭ la neceso zorgi ĉe la stathava seanca fabo pri la eksdateco de la manipulitaj entoj. Tio eblas per la skemo "Long Lived Pseudo-Transaction". Ankaŭ tio estas prezentota en la diagramo.
ĝenerala enhavo

Uzkaza prezento
La kernaj uzkazoj pristudataj en tiu ĉi dokumento estas Identiĝi kaj Elekti adresaron. Ili emfazas multajn el la arkitekturaj elementoj.
ĝenerala enhavo

Logika prezento
Ekzistas du specoj da pakaĵoj:
prezentigaj
kiuj enhavas la erojn videblajn, t.e. bildoj, XHTML-paĝoj, JSP-paĝoj;
komputigaj
kiuj enhavas la Ĝavajn klasojn, ĉe la aplikaĵa servilo kaj ĉe la ttteja servilo.
La radiko de la prezentigaj pakaĵoj estas pagxar; tiu de la komputigaj estas org.esperanto. Ĉiu uzkazaro el la funkcia specifaro iĝas aparta pakaĵo en ĉiu el la du radikaj pakaĵoj. Ekzemple por la uzkazaro Adresarumado ekzistas la du pakaĵoj pagxar.adresar kaj org.esperanto.adresar. Por la komunaj eroj ekzistas specialaj pakaĵoj komunar kiel pagxar.komunar kaj org.esperanto.komunar. Jena listo prezentas la pakaĵnomojn kaj ties rilatojn al la uzkazaroj:
komunar
komunaj eroj (kiel ekz. stilfolio, logo, paĝo pri la programaro).
sekurec
por realigi la uzkazaron Sekurecumado.
adresar
por realigi la uzkazaron Adresarumado.
membrar
por realigi la uzkazaron Membrarumado.
renkontigx
por realigi la uzkazaron Renkontiĝumado.
encxambrig
por realigi la uzkazaron Enĉambrigumado.
volontul
por realigi la uzkazaron Volontulumado.
bank
por realigi la uzkazaron Bankumado.
butik
por realigi la uzkazaron Butikumado.
Ĉiu uzkazara pakaĵaro enhavas la saman strukturon. La prezentiga pakaĵo arigas siajn bildojn en sian subpakaĵon bildar. Tiel ekzemple la bildoj por la prezentado de la uzkazaro Adresarumado troviĝas en la pakaĵo pagxar.adresar.bildar. La komputiga pakaĵo arigas siajn klasojn en siajn subpakaĵojn datumar, fabar, prezentar kaj servar. Tiel ekzemple la entaj faboj por la uzkazaro Adresarumado troviĝas en la pakaĵo org.esperanto.adresar.fabar. Dum la detalaj enhavoj de tiaj entoj trovigxas en la pakaĵo org.esperanto.adresar.datumar. En jena ilustraĵo videblas la strukturo por la komuna pakaĵaro komunar. Ĉiuj aliaj uzkazaroj sekvas la saman strukturon. Rezulte la pakaĵoj por la uzula fasado retroviĝas en jena ilustraĵo dum tiuj por la komputadoj en jena ilustraĵo. En tiu lasta ankaŭ videblas la interdependoj de la pakaĵoj. En ĝi ne aperas jam la detaloj pri la pakaĵoj volontul, bank kaj butik.
ĝenerala enhavo

Logika enhavo
komunar pakaĵaro
sekurec pakaĵaro
adresar pakaĵaro
membrar pakaĵaro
renkontigx pakaĵaro
encxambrig pakaĵaro
volontul pakaĵaro
bank pakaĵaro
butik pakaĵaro
Identiĝi uzkazo
Elekti adresaron uzkazo

komunar pakaĵaro
logika enhavo
sekurec pakaĵaro
logika enhavo
adresar pakaĵaro
logika enhavo
membrar pakaĵaro
logika enhavo
renkontigx pakaĵaro
logika enhavo
encxambrig pakaĵaro
Tiu ĉi pakaĵaro estas prokrastita.
logika enhavo
volontul pakaĵaro
Tiu ĉi pakaĵaro estas prokrastita.
logika enhavo
bank pakaĵaro
Tiu ĉi pakaĵaro estas prokrastita.
logika enhavo
butik pakaĵaro
Tiu ĉi pakaĵaro estas prokrastita.
logika enhavo
Identiĝi uzkazo
Cele akiri rajtojn vizitanto entajpas siajn nomojn kaj pasvorton. La servleto, kiu reprezentas la vizitanton, transdonas tiujn informojn al ordinara fabo, kiu zorgas pri komunikado kun la aplikaĵo. Ĉe la aplikaĵa servilo senstata seanca fabo traktas en unu transakcio la serĉadon de la persono laŭ donitaj nomoj kaj la serĉadon de uzulo laŭ trovita persono. Tiu sama fabo kontrolas samecon de la pasvortoj antaŭ ol respondi. Tia sekvenco videblas en jena ilustraĵo. La necesaj objektoj troviĝas en jena klasaro.
logika enhavo
Elekti adresaron uzkazo
Cele proponi al la uzulo elekton inter ties adresaroj la servleto transdonas la uzulan identecon al ordinara fabo, kiu zorgas pri komunikado kun la aplikaĵo. Ĉe la aplikaĵa servilo, sentata seanca fabo traktas en unu transakcio la serĉadon de la prizorgantoj laŭ donita uzulo kaj la serĉadon de la adresaroj laŭ trovitaj prizorgantoj. Tiu sama fabo pakas la detalojn de ĉiuj trovitaj adresaroj en kolekton, kiun ĝi resendas kiel respondon. Tia sekvenco videblas en jena ilustraĵo. La necesaj objektoj troviĝas en jena klasaro.
logika enhavo

Proceza prezento
La uzula foliumilo komunikas kun la ttteja demono tra (eventuale sekurigita) HTTP. La tttejo alvokas laŭbezone taŭgan servleton. Tiu siavice komunikas kun la aplikaĵa servilo tra RMI-IIOP. La aplikaĵa servilo pludirektas la alvokon al la stathava seanca fabo, kiu traktas ĉiujn petojn de la uzulo. Por realigi la petatajn servojn la stathava seanca fabo uzas servojn de senstataj seancaj faboj. Senstata seanca fabo pridemandas entajn fabojn pri necesa longdaŭra informaro. Ĉiu enta fabo mem zorgas pri sia konservado en datumbazo tra JDBC-XA. Tiuj interrilataj videblas en jena ilustraĵo.
ĝenerala enhavo

Sterna prezento
Eblas konsideri minimume tri manierojn uzi la sistemon. Ĉiu programanto povas mem provi la tuton sur sia propra maŝino (vd ilustraĵon). Ĉiu ajn el la teamo povas provi el sia maŝino (nun ludanta la rolon Kliento) iun instalon provizatan el fora servilo (vd ilustraĵon). Dum la akceptado de IJK2001 sep klientaj maŝinoj uzados samtempe iun centran lokan servilon (vd ilustraĵon).
Por plia traktokapablo eblus disigi la servilajn pakaĵojn sur tri maŝinojn aŭ pli. Tia sterna konfiguro ne estas jam pristudata sed tamen eblos surbaze de la elektitaj teĥnikaĵoj.
ĝenerala enhavo

Realiga prezento
Ĉiu uzkazo el la funkcia specifaro iĝas aparta servleto.
ĝenerala enhavo

Datumara prezento
Ĉiuj objektoj el la datumaraj pakaĵoj (vd ilustraĵojn de Sekurecumado, Adresarumado, Membrarumado, Renkontiĝumado kaj Enĉambrigumado) estas konservitaj en datumbazo tra la entaj faboj. Ĉiu objekto estas linio en tabelo, kiu havas la nomon de la klaso. Ĉiu unuopa atributo estas kolumno. Atributo, kiu reprezentas kolekton da valoroj, estas konservita en aparta tabelo, kies ĉefŝlosilon konsistigas la ĉefŝlosiloj de la enhavanta kaj enhavita objektoj.
Por eviti longdaŭran ŝargadon de ampleksa grafeo da inter si referencantaj objektoj, uzatas la skemo "Lazy Load References" (vd ilustraĵon). Tial al la "puraj" detalaj objektoj aldoniĝas la atributoj registrantaj la ŝlosilojn de la referencataj objektoj.
La transakciaj limoj estas difinitaj en la senstataj seancaj faboj. Se la datumbaza transakcio fiaskas, la vokinto de la servo ricevas escepton por raporti tion. La vokinto respondecas pri la refreŝigo de la objektoj laŭ aktualaj valoroj konservitaj en la datumbazo.
Por limigi la nombron da transakcioj kaj pligrandigi la traktokapablon de la sistemo, la skemo "Long Lived Pseudo-Transaction" devigas al eventuala refreŝigo pro eksdatiĝo de la manipulataj datumoj. Tia traktado similas tiun de la transakciaj esceptoj.
ĝenerala enhavo

Amsplekso kaj efikeco
La sistemo devos elteni almenaŭ dek samtempajn uzantojn. Tio estos la nombro da helpantoj ĉe la akceptado de IJK2001. Por tio gravas ne teni referencojn al entaj faboj en la stathavaj seancaj faboj aŭ en la ordinaraj faboj ĉe la ttteja servilo. Plenrolas tie la skemo "Wrap Entities with Session" (vd ilustraĵon).
La sistemo devos respondi al lokaj uzantoj ene de du sekundoj, al retaj uzantoj ene dek sekundoj (krom al modemuzantoj).
ĝenerala enhavo

Kvalito
Por certiĝi, ke la rezulto de tiu projekto estos sternebla sur plurajn aplikaĵajn servilojn, ambaŭ la celata servilo (vd ĉe Arkitekturaj celoj kaj limigoj) kaj la provservilo de Sun (http://java.sun.com/j2ee/j2sdkee/) estos uzataj dum disvolvigo de la projekto. Programantoj rajtas memkompreneble elprovi la sistemon per aliaj aplikaĵaj serviloj. Raporto pri tiuj provoj aperos en la porklienta dokumentaro.
ĝenerala enhavo

SourceForge Logo Valid XHTML 1.0! Valid CSS!