Newsgroup: it.lavoro.professioni.webmaster
Titolo: XML ed Architettura di un sito

Dovendo/volendo usare XML come base di appoggio per un sito di contenuti
(Articoli, news ecc. ecc.) secondo voi quale può essere l'organizzazione
migliore ??
Ho un pò di confusione in testa, ecco varie ipotesi che mi sono venute in
mente:
- Metto tutto in un DB però i testi li formatto in XML così da poterli poi
trasformare come meglio credo con XSL ( in effetti mi sembra un approccio al
quanto inutile... però non si sa mai)
- Faccio un unico file XML in cui insersco tutto il contenuto del sito: con
dei tag <articolo> e <news> o altro divido i contenuti; tramite XPath posso
accedere ai contenuti e posso con XSL dargli un layout. Il problema che mi
viene in mente è che se il materiale aumenta mi troverei di fronte ad un
file di dimensioni enormi e molto frammentato il che mi fa temere
rallentamenti ed una scomodità di utilizzo.
- Come sopra però dividendo in più file uno per Articoli uno per News e
altri per ogni altro tipo di contenuti.
Questi sono gli approcci che mi sono venuti in mente, io personalmente
preferisco il secondo... un unico file, un file di testo, volendo leggibile
anche senza trasformazioniin cui metto tutto. Sarebbe comodo in quanto si
puo' in ogni momento fare un upgrade del formato dei contenuti.
Posso decidere da un momento all'altro di aggiungere un tag <subautore> agli
articoli senza dover modificare nulla o quasi.
Pero' tempo il problema della lentezza. Avete riscontri a proposito ??
O meglio che tipo di architettura usate o pensereste di usare in un caso
simile ?
Buon lavoro a tutti,
    Claudio
-- 
Claudio Rosati
Web designer & Developer
E. 
in...@claudiorosati.info
W. 
www....@claudiorosati.info

 l'organizzazione migliore ??
Tutto quel che segue IMHO.
L'utilizzo di un singolo file potrebbe risultare efficiente con pochi
contenuti. Appena iniziano ad aumentare il server cominciera a sedersi
a causa del lavoro di elaborazione XML (a meno di utilizzare tecniche
di caching o serializzazioni varie). Tieni presente che la memoria
occupata da un oggetto DOM per la manipolazione di documenti XML si
attesta mediamente (a seconda delle implementazioni) in 10 volte la
dimensione del documento stesso (10 Kb di doc XML => 100 Kb di memoria
per il DOM).
Personalmente ho utilizzato con successo una soluzione DB => XML => XSL
=> CSS. Il vantaggio risiende nella scaliabilita della soluzione, nel
supporto per il multi threading e per quello che riguarda eventuali
interfacce d'amministrazione (inserire/modificare dati su DB e'
piu'facile che su XML).
-- 
I am what I am, I do what I can
Non trovi qualche cosa? 
http://url.repository.biz/go/1J

 => CSS.
Anche io avevo pensato ad una cosa simile per approfittare del buono che
c'e' in ogni tecnologia, pero' cosi' mi viene meno chiara l'utilità di usare
anche XML.
Se mi creo una tabella che contiene gli articoli, con un campo per ogni
caratteristica a questo punto posso formattarli direttamente come voglio
tramite un linguaggio server-side.
Voglio dire mi faccio una fuzione che mi tira fuori i dati dal DB ed invece
di inserirli in un codice XML da trsformare poi con XSL li inserisco
direttamente in un codice HTML e salto tutti gli altri passaggi.
Ci deve essere qualche passaggio che mi sono perso. Continuo a guardare
affascinato a questo linguaggio dalle mille opportunità, ma ogni volta che
cerco di usarlo mi trovo a non sapere da dove cominciare.
Secondo me è un argomento molto interessante da approfondire ....
probabilmente esiste un'arhitettura interessante che possa veramente
avvantaggiarsi dell'uso di XML ma non riesco a trovarla.
Da quello che mi hai detto tutti i vantaggi dell'architettura a DB che hai
trovati sono proprio nell'uso del DB e non di XML o sbaglio ??
Mi piacerebbe capirci di più.


 che hai trovati sono proprio nell'uso del DB e non di XML o sbaglio ??
L'idea di fondo di un sistema che si basi su XML/XSL e' quella di
separare i dati dalla presentation layer.
Un sistema DB=>XML=>XSL=>CSS e' un sistema ntier che permette una certa
liberta di movimento.
XSL e il linguaggio di trasformazione che permette di generare
contenuti di vario tipo (tra cui XHTML) partendo da XML.
Rispetto alla manipolazione con linguaggi server side, l'accoppiata
XML/XSL permette una separazione piu marcata tra logica e
renderizzazione. Utilizzando XSL per tracciare l'HTML e possibile
modificare la struttura dell'intero sito solo modificando gli XSl. Con
un sistema di scripting server side si DEVE andare a metter mano al
codice anche se si utilizza un template engine.
Se strutturi bene un progetto con XML/XSL puoi modificare la struttura
dei contenuti del sito semplicemente cambiando gli XSL principali.
E, cosa ancora piu importante, e' possibile ottimizzare il codice
generato per ogni client senza dover scrivere codoci server side. E'
sufficiente inserire nell'XSL un parametro che permette di scegliere la
renderizzazione migliore per il media richiesto.
Ad esempio e possibile renderizzare i contenuti in WML piuttosto che in
XHTML solamente scrivendo il template XSL relativo.


 caso simile ?
l'idea di utilizzare cml e xslt e' giusta... e i tempi maturi... pero' io
farei un utilizzo misto...
mi spiego:
per contenuti fissi o quasi (menu, opzioni etc...) un file XML
per i contenuti invece DB/XML/XSLT/CSS
ho aggiunto i css perche' potrebbero sempre tornare utili XSLT da solo non
basta per alcuni tipi di layout...
bai
-- 
Lino Mari [mod - it.economia.e-commerce]
http://www.ebow.it
 - e-business on web!
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - d2D004
Le aziende devono scendere dalla loro torre d'avorio e parlare
con la gente con la quale vogliono entrare in contatto.

 per i contenuti invece DB/XML/XSLT/CSS
Ok, ci sono, in effetti come detto anche da "Setec" ci sono dei PRO non
indifferenti a livello di architettura e di astrazione del codice. Però
pensandoci non mi è chiaro come implementare il tutto.
I passaggi sarebbero questi: faccio una query al DB, raccolgo i dati li
trasformo in XML tramite DOM o altro e poi salvo in memoria l'XML e lo
faccio processare da un XSL ad hoc per la funzionalità che io voglio da quei
dati (se ho tirato fuori solo i titoli da mettere in home page faccio una
cosa, se ho estratto una lista di articoli interi li impagino diversamente).
In questo modo devo far fare 3 passaggi ai dati per ottenere l'HTML ed ho
una completa astrazione, in quanto posso usare lo stesso codice solo
modificando la query e l'xsl per ottenere qualsiasi cosa io voglia.
Ci ho preso ?? Stavo pensando inoltre, per eviare di dover rigenerare sempre
i codici XML di salvare i risultati delle query standard (tipo l'elenco dei
capitoli, i titoli ecc. )in file XML da caricare direttamente dopo un
semplice controllo di validità.
In pratica avevo pensato di fare un qualcosa simile a quello che si fa con
HTTP, sinche non cambiano i contenuti uso i file XML, quando cambiano allora
rigenero tutto. In questo modo si dovrebbe alleggerire molto il DB e i
passaggi da DB a XML a XSL a HTML diminuiscono. Vlendo potrei direttamente
salvare il codice HTML o quello WML o quello PDF cosi' mi evito nella
maggioranza dei casi qualsiasi rallentamento di processo.
Mi sono perso qualcosa o è un buon abbozzo di architettura secondo voi ??
E' da poco che mastico XML e ho molte idee ma non so come confrontarle.


 voi ??
i sistemi sono tanti... dipende tutto da cosa vuoi creare e lo scopo finale
:)


 elaborazioni al server...
Sulla cache lato client ci siamo, su quella lato server non ho capito cosa
itendi.
Se vengono generati sempre gli stessi xml per ogni pagina chiamata il server
memorizza in cache e evita di fare la creazione ??
Oppure cos'altro ?


 Oppure cos'altro ?
non e' cosi' automatico:) quelle che si cachano sono le query... pero'
dipende dalla tecnologia utilizzata... p.e. in .NET ci sono delle classi che
ti permettono di gestire la cache lato server...  e dentro puoi metterci
quello che ti pare :)


 quello che ti pare :)
Sarebbe possibile cachare un operazione del tipo creare un xml da una query
ad un db e la creazione di un HTML tramite XSL ??
Intendo riesce ad accorgersi se il risultato sarebbe lo stesso del
precedente e per cui non ripete l'operazione ??


 precedente e per cui non ripete l'operazione ??
e' possibile... ma ci vorrebbe un evento legato alla modifica di una delle
tabelle correlate... e al momento neanche .net ce l'ha... bisogna aspettare
la versione 2.0. pero' puoi cachare per browser o in base al tempo di
permanenza nella cache... in questo modo almeno eviti i picchi di utenti
contemporanei...
-- 
Lino Mari [mod - it.economia.e-commerce]
http://www.ebow.it
 - e-business on web!
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - d2D004
Oggi, l'organigramma è fatto di link, non di gerarchie.
Il rispetto per la conoscenza vince su quello per l'autorità astratta.

 la versione 2.0.
In realtà in .NET ci sono dei metodi per creare dipendenze da query, anche
se non sono nativi come nel futuro Whidbey, però è possibile.
Ad esempio (la descrivo alla spicciola) realizzando una tabella di appoggio
per le viste(query) da cachare (lol che bel termine italianizzato), e
tramite un thread programmato ogni tot minuti tramite una query si interroga
la tabella di appoggio e si invalida eventualmente la cache che è segnata
come aggiornata (tramite un trigger ad esempio).
Ripeto, l'ho fatta semplice perchè spiegarla ci vuole un po', comunque è
possibile. (altra possibilità è quella di creare un trigger che alla
modifica di una tabella vada ad aggiornare un file sul quale è stata
impostata una dipendenza).
Pensavo di scrivere un articolo a riguardo ma credo comunque che in giro si
trovi già qualcosa, non so se in Italiano (ma mannaggia, ormai dovremmo
conoscerlo tutti l'Inglese tecnico, almeno chi fa il nostro lavoro :P)
-- 
Fabio Angela (aka Red Angel)
http://www.redangel.it
 - il portale sulla programmazione
cerchi consigli per un hosting? 
http://hosting.redangel.it




 nostro lavoro :P)
infatti ho detto che nativamente ancora non supporta questo tipo di
dipendenza... e' chiaro che ci sono molti sistemi per implemetare una
dipendenza... lo si puo' fare anche a livello di consolle... ovvero quando
modifica un servizio o una tabella puoì aggiornare un file xml e legare la
dipendenza a questo file... :)
