2009-06-23 14 views
9

Sto lavorando a un sito ColdFusion in cui i dati vengono archiviati in pacchetti WDDX all'interno di un database ed è un vero dolore. (Non ho idea del motivo per cui i valori non sono solo memorizzati in un'altra tabella.)ColdFusion: qualcuno usa WDDX?

Non ho mai usato WDDX e l'unica documentazione che riesco a trovare sembra abbastanza vecchia. Quindi sono curioso di sapere se qualcuno usa ancora WDDX, e se sì, per cosa?

risposta

7

Io uso WDDX per la memorizzazione di valori di configurazione in una piccola applicazione che non richiede Banca dati. Potrei usare un file ini e GetProfileString(), ma WDDX è molto più conveniente.

È XML, quindi in teoria è possibile utilizzarlo per fare AJAX (nel senso originale). Soprattutto perché non esisteva il supporto nativo per JSON fino a CF8.

Si potrebbe anche usarlo come input per le trasformazioni XSL, quindi non è necessario creare il proprio codice XML per rappresentare i tipi di dati CF come le strutture o le query.

Ultimo ma non meno importante, è possibile utilizzarlo come un modo estensibile di memorizzare vari dati strutturati in un database (messaggi di registro che coprono casi diversi, ad esempio). Non sono sicuro del motivo per cui questo è un problema nel tuo caso, ma forse è più un problema architettonico che un problema con WDDX (?).

Si riduce a questo: è comodo avere rapido e semplice, ma portatile e sicuro (nessun Evaluate() o personalizzato idraulici richiesti) modo di serializzazione e de-serializzazione (vale a dire "la conservazione" o "persistente") qualsiasi CF tipo di dati.

+0

Grazie per quello. Nel mio caso, il WDDX sta memorizzando le autorizzazioni utente in un CMS. Il problema per me è che non posso semplicemente interrogare il db per l'autorizzazione di un utente. Ma come dici tu, è un problema architettonico, non un problema con WDDX stesso. – nedlud

+0

Hm, se vi capita di essere su SQL Server 2005+, esiste un tipo di dati XML che è possibile utilizzare al posto di NVARCHAR (o simile). Altri DBMS "focalizzati sulle funzionalità" possono fornire una cosa simile. – Tomalak

4

Facciamo, per i dati di configurazione del blocco di pagina nel nostro CMS. La decisione risale a CF5 e ora potrei usare un formato XML più semplice (i dati memorizzati sono solo un hash serializzato di valori scalari) ma è un modo pratico per evitare il sovraccarico di query multi-row extra per i dati che sono necessari ogni volta si accede al record genitore.

Credo che la documentazione non è molto cambiato come c'è solo tanto si può scrivere di una semplice operazione di serializzazione dei dati :)

<cfwddx action="cfml2wddx" input=#raw_data# output="encoded_data"/> 
<cfwddx action="wddx2cfml" input=#encoded_data# output="decoded_data"/> 
1

L'ho usato per una serie di motivi. Uno di questi era consentire una funzionalità simile al servizio web tra due server ColdFusion diversi. Dal momento che è solo un sapore di XML e, quindi, di testo semplice, non ha richiesto nulla di più complicato di una semplice chiamata HTTP utilizzando CFHTTP. E poiché è WDDX, ha tradotto molto facilmente le strutture CF.

Nei giorni CF5 questo era davvero importante. Anche ora, quando CF offre alcuni strumenti piuttosto potenti per l'analisi XML, le strutture dati native sono ancora più facili da utilizzare.

0

L'ultima volta che l'ho usato è stato serializzare l'ambito del modulo. Non ricordo molto del motivo per cui ho dovuto, ma che la forma aveva molte varianti e per ripopolare i campi che avrei potuto deserializzare il WDDX e tutto andava bene per il mondo.

Non lo uso da un po 'di tempo.

0

Io uso per memorizzare alcune informazioni sulla spedizione del prodotto, in cui i prodotti vanno in quali scatole, in pratica. Al momento della progettazione di questa applicazione, non era necessario archiviare tali informazioni in righe separate nel DB, quindi la struttura creata contenente tali informazioni è stata serializzata con WDDX e inserita nel DB.

2

Da quando CF8 è uscito, ho usato JSON invece di WDDX.

Entrambi sono ottimi per la serializzazione di alcuni campi di dati che non devono essere sottoposti a query, mantenendo il DB invariato. Prenderò JSON su WDDX ogni giorno. :)

+0

Sono con Henry su questo! –

0

Ho dovuto utilizzarlo per archiviare strutture nei cookie perché ho lavorato per un'azienda che ha costruito siti di e-commerce con l'ambito della variabile di sessione disabilitato. Questo non era per alcun tipo di motivo pratico per la sicurezza dell'utente. La loro applicazione amministrativa di back-end per qualche motivo sconosciuto potrebbe crollare su se stessa se eseguita su un server con le variabili di sessione abilitate. Quindi, invece di, forse, la correzione di qualunque cosa causasse il problema, o forse l'esecuzione del sistema di amministrazione su un server separato, disabilitavano le sessioni, perché era il modo "più veloce, più economico e più semplice" per risolvere il problema.

Sono contento di non lavorare più lì.

1

Lo uso per memorizzare un gruppo su risultati di query e strutture. È utile perché può acquisire più tabelle in un'unica operazione. JSON è un approccio più moderno a ciò che WDDX risolve. Se avessi una scelta selezionerei JSON per via della sua maggiore interoperabilità.