TEJO
Disa Adresaro
Sistema arkitekturo
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.
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.
La kernaj uzkazoj pristudataj en tiu ĉi dokumento estas
Identiĝi kaj
Elekti adresaron.
Ili emfazas multajn el la arkitekturaj elementoj.
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.
Tiu ĉi pakaĵaro estas prokrastita.
Tiu ĉi pakaĵaro estas prokrastita.
Tiu ĉi pakaĵaro estas prokrastita.
Tiu ĉi pakaĵaro estas prokrastita.
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.
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.
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.
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.
Ĉ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.
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).
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.